Ajout d'un badge modération
This commit is contained in:
parent
748b665a59
commit
1b2510c7df
@ -930,6 +930,32 @@ class Event(models.Model):
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def get_nb_not_moderated(first_day, nb_mod_days=21, nb_classes=4):
|
||||||
|
window_end = first_day + timedelta(days=nb_mod_days)
|
||||||
|
nb_not_moderated = Event.objects.filter(~Q(status=Event.STATUS.TRASH)). \
|
||||||
|
filter(Q(start_day__gte=first_day)&Q(start_day__lte=window_end)). \
|
||||||
|
filter(
|
||||||
|
Q(other_versions__isnull=True) |
|
||||||
|
Q(other_versions__representative=F('pk')) |
|
||||||
|
Q(other_versions__representative__isnull=True)).values("start_day").\
|
||||||
|
annotate(not_moderated=Count("start_day", filter=Q(moderated_date__isnull=True))). \
|
||||||
|
annotate(nb_events=Count("start_day")). \
|
||||||
|
order_by("start_day").values("not_moderated", "nb_events", "start_day")
|
||||||
|
|
||||||
|
max_not_moderated = max([x["not_moderated"] for x in nb_not_moderated])
|
||||||
|
if max_not_moderated == 0:
|
||||||
|
max_not_moderated = 1
|
||||||
|
nb_not_moderated_dict = dict([(x["start_day"], (x["not_moderated"], x["nb_events"])) for x in nb_not_moderated])
|
||||||
|
# add missing dates
|
||||||
|
date_list = [first_day + timedelta(days=x) for x in range(0, nb_mod_days)]
|
||||||
|
nb_not_moderated = [{"start_day": d,
|
||||||
|
"is_today": d == first_day,
|
||||||
|
"nb_events": nb_not_moderated_dict[d][1] if d in nb_not_moderated_dict else 0,
|
||||||
|
"not_moderated": nb_not_moderated_dict[d][0] if d in nb_not_moderated_dict else 0} for d in date_list]
|
||||||
|
nb_not_moderated = [ x | { "note": 0 if x["not_moderated"] == 0 else int((nb_classes - 1) * x["not_moderated"] / max_not_moderated) + 1 } for x in nb_not_moderated]
|
||||||
|
return [nb_not_moderated[x:x + 7] for x in range(0, len(nb_not_moderated), 7)]
|
||||||
|
|
||||||
|
|
||||||
def nb_draft_events():
|
def nb_draft_events():
|
||||||
return Event.objects.filter(status=Event.STATUS.DRAFT).count()
|
return Event.objects.filter(status=Event.STATUS.DRAFT).count()
|
||||||
|
|
||||||
|
@ -92,6 +92,7 @@
|
|||||||
{% if perms.agenda_culturel.view_message %}
|
{% if perms.agenda_culturel.view_message %}
|
||||||
{% show_badge_messages "bottom" %}
|
{% show_badge_messages "bottom" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% show_badge_moderate %}
|
||||||
<a class="link" href="{% url 'administration' %}">Administrer {% picto_from_name "settings" %}</a>
|
<a class="link" href="{% url 'administration' %}">Administrer {% picto_from_name "settings" %}</a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -2,7 +2,9 @@ from django import template
|
|||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
from django.template.defaultfilters import pluralize, linebreaks, urlize
|
from django.template.defaultfilters import pluralize, linebreaks, urlize
|
||||||
|
from django.db.models import Q, F
|
||||||
import re
|
import re
|
||||||
|
from datetime import date, timedelta, datetime
|
||||||
|
|
||||||
from agenda_culturel.models import Event
|
from agenda_culturel.models import Event
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
@ -64,6 +66,26 @@ def picto_visibility(event, visible=True):
|
|||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
@register.simple_tag
|
||||||
|
def show_badge_moderate():
|
||||||
|
first_day = datetime.now()
|
||||||
|
last_day = first_day + timedelta(days=7)
|
||||||
|
nb = Event.objects.filter(~Q(status=Event.STATUS.TRASH)). \
|
||||||
|
filter(Q(start_day__gte=first_day)&Q(start_day__lte=last_day)). \
|
||||||
|
filter(moderated_date__isnull=True). \
|
||||||
|
filter(
|
||||||
|
Q(other_versions__isnull=True) |
|
||||||
|
Q(other_versions__representative=F('pk')) |
|
||||||
|
Q(other_versions__representative__isnull=True)).values("start_day").\
|
||||||
|
count()
|
||||||
|
|
||||||
|
return mark_safe('<a href="' + reverse_lazy('moderate') + '" ' +
|
||||||
|
' data-placement="bottom" '
|
||||||
|
' data-tooltip="' + str(nb) + ' événements à modérer (7 jours)"' +
|
||||||
|
' class="badge" aria-label="modérer">' +
|
||||||
|
picto_from_name("target") + ' ' + str(nb) + '</a>')
|
||||||
|
|
||||||
|
|
||||||
@register.simple_tag
|
@register.simple_tag
|
||||||
def show_badges_events(placement="top"):
|
def show_badges_events(placement="top"):
|
||||||
nb_drafts = Event.nb_draft_events()
|
nb_drafts = Event.nb_draft_events()
|
||||||
|
@ -969,32 +969,9 @@ def administration(request):
|
|||||||
.count())
|
.count())
|
||||||
nb_all = imported_events.count()
|
nb_all = imported_events.count()
|
||||||
|
|
||||||
window_end = today + timedelta(days=nb_mod_days)
|
|
||||||
# get all non moderated events
|
# get all non moderated events
|
||||||
nb_not_moderated = Event.objects.filter(~Q(status=Event.STATUS.TRASH)). \
|
nb_not_moderated = Event.get_nb_not_moderated(today, nb_mod_days, nb_classes)
|
||||||
filter(Q(start_day__gte=today)&Q(start_day__lte=window_end)). \
|
|
||||||
filter(
|
|
||||||
Q(other_versions__isnull=True) |
|
|
||||||
Q(other_versions__representative=F('pk')) |
|
|
||||||
Q(other_versions__representative__isnull=True)).values("start_day").\
|
|
||||||
annotate(not_moderated=Count("start_day", filter=Q(moderated_date__isnull=True))). \
|
|
||||||
annotate(nb_events=Count("start_day")). \
|
|
||||||
order_by("start_day").values("not_moderated", "nb_events", "start_day")
|
|
||||||
|
|
||||||
max_not_moderated = max([x["not_moderated"] for x in nb_not_moderated])
|
|
||||||
if max_not_moderated == 0:
|
|
||||||
max_not_moderated = 1
|
|
||||||
nb_not_moderated_dict = dict([(x["start_day"], (x["not_moderated"], x["nb_events"])) for x in nb_not_moderated])
|
|
||||||
# add missing dates
|
|
||||||
date_list = [today + timedelta(days=x) for x in range(0, nb_mod_days)]
|
|
||||||
nb_not_moderated = [{"start_day": d,
|
|
||||||
"is_today": d == today,
|
|
||||||
"nb_events": nb_not_moderated_dict[d][1] if d in nb_not_moderated_dict else 0,
|
|
||||||
"not_moderated": nb_not_moderated_dict[d][0] if d in nb_not_moderated_dict else 0} for d in date_list]
|
|
||||||
nb_not_moderated = [ x | { "note": 0 if x["not_moderated"] == 0 else int((nb_classes - 1) * x["not_moderated"] / max_not_moderated) + 1 } for x in nb_not_moderated]
|
|
||||||
nb_not_moderated = [nb_not_moderated[x:x + 7] for x in range(0, len(nb_not_moderated), 7)]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return render(
|
return render(
|
||||||
request,
|
request,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user