import random

from django import template
from django.db.models import F

from ..models import Publicite

register = template.Library()


@register.inclusion_tag("public/_ad_slot.html")
def ad_slot(position, limit=1, css=""):
    """Affiche des publicités actives d'un emplacement et compte les affichages."""
    ads = list(Publicite.objects.active().position(position).select_related("image"))
    random.shuffle(ads)
    ads = ads[: int(limit)]
    if ads:
        Publicite.objects.filter(pk__in=[a.pk for a in ads]).update(impressions=F("impressions") + 1)
    return {"ads": ads, "css": css, "position": position}
