diff --git a/src/agenda_culturel/forms.py b/src/agenda_culturel/forms.py index 16569d1..443a11d 100644 --- a/src/agenda_culturel/forms.py +++ b/src/agenda_culturel/forms.py @@ -367,6 +367,9 @@ class EventModerateForm(ModelForm): "exact_location", "tags" ] + widgets = { + "status": RadioSelect + } def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/src/agenda_culturel/static/style.scss b/src/agenda_culturel/static/style.scss index 38fe13a..160ab9d 100644 --- a/src/agenda_culturel/static/style.scss +++ b/src/agenda_culturel/static/style.scss @@ -1465,6 +1465,11 @@ form.messages div, form.moderation-events { overflow-y: auto; } +#moderate-form #id_status { + display: grid; + grid-template-columns: repeat(3, 1fr); +} + label.required::after { content: ' *'; color: red; diff --git a/src/agenda_culturel/templates/agenda_culturel/event_form_moderate.html b/src/agenda_culturel/templates/agenda_culturel/event_form_moderate.html index 13aae3c..3352163 100644 --- a/src/agenda_culturel/templates/agenda_culturel/event_form_moderate.html +++ b/src/agenda_culturel/templates/agenda_culturel/event_form_moderate.html @@ -33,27 +33,35 @@

-
{% csrf_token %} +{% csrf_token %}
- {% include "agenda_culturel/single-event/event-single-inc.html" with event=event noedit=1 %} +
+ {% include "agenda_culturel/single-event/event-single-inc.html" with event=event onlyedit=1 %} + + {% with event.get_concurrent_events as concurrent_events %} + {% if concurrent_events %} +
+
+

En même temps

+

{% if concurrent_events|length > 1 %}Plusieurs événements se déroulent en même temps.{% else %}Un autre événement se déroule en même temps.{% endif %}

+
+
    + {% for e in concurrent_events %} +
  • + {{ e.category|circle_cat }} {% if e.start_time %}{{ e.start_time }}{% else %}toute la journée{% endif %} {{ e.title }} +
  • + {% endfor %} +
+
+ {% endif %} + {% endwith %} + +
-
- {% with event.get_local_version as local %} - {% if local %} - {% if event != local %} - - {% else %} - - {% endif %} - {% else %} - - {% endif %} - {% endwith %} -

Modification des méta-informations

{% if event.moderated_date %} @@ -69,23 +77,13 @@
{% if pred %} - 🠄 Revenir au précédent + < Revenir au précédent {% else %} Annuler {% endif %} - {% with event.get_local_version as local %} - {% if local %} - {% if local == event %} - - {% else %} - - {% endif %} - {% else %} - - {% endif %} - {% endwith %} - + + Passer au suivant sans enregistrer >
diff --git a/src/agenda_culturel/templates/agenda_culturel/single-event/event-single-inc.html b/src/agenda_culturel/templates/agenda_culturel/single-event/event-single-inc.html index 0b5c657..8eb5f74 100644 --- a/src/agenda_culturel/templates/agenda_culturel/single-event/event-single-inc.html +++ b/src/agenda_culturel/templates/agenda_culturel/single-event/event-single-inc.html @@ -134,9 +134,24 @@ {% include "agenda_culturel/event-date-info-inc.html" %}
- Exporter ical {% picto_from_name "calendar" %} - {% if perms.agenda_culturel.change_event and not noedit %} - {% include "agenda_culturel/edit-buttons-inc.html" with event=event with_clone=1 %} + {% if onlyedit %} + {% if event.pure_import %} + {% with event.get_local_version as local %} + {% if local %} + voir la version locale {% picto_from_name "eye" %} + {% else %} + créer une copie locale {% picto_from_name "plus-circle" %} + {% endif %} + {% endwith %} + {% else %} + modifier {% picto_from_name "edit-3" %} + {% endif %} + + {% else %} + Exporter ical {% picto_from_name "calendar" %} + {% if perms.agenda_culturel.change_event and not noedit %} + {% include "agenda_culturel/edit-buttons-inc.html" with event=event with_clone=1 %} + {% endif %} {% endif %}
diff --git a/src/agenda_culturel/urls.py b/src/agenda_culturel/urls.py index d6f266c..fd84eff 100644 --- a/src/agenda_culturel/urls.py +++ b/src/agenda_culturel/urls.py @@ -35,8 +35,8 @@ urlpatterns = [ ), path("event//edit", EventUpdateView.as_view(), name="edit_event"), path("event//moderate", EventModerateView.as_view(), name="moderate_event"), - path("event//moderate-next", EventModerateView.as_view(), name="moderate_event_next"), - path("event//moderate-next/error", error_next_event, name="error_next_event"), + path("event//moderate/after/", EventModerateView.as_view(), name="moderate_event_step"), + path("event//moderate-next", moderate_event_next, name="moderate_event_next"), path("moderate", EventModerateView.as_view(), name="moderate"), path("event//simple-clone/edit", EventUpdateView.as_view(), name="simple_clone_edit"), path("event//clone/edit", EventUpdateView.as_view(), name="clone_edit"), diff --git a/src/agenda_culturel/views.py b/src/agenda_culturel/views.py index a888639..5022f28 100644 --- a/src/agenda_culturel/views.py +++ b/src/agenda_culturel/views.py @@ -356,15 +356,18 @@ class EventModerateView( permission_required = "agenda_culturel.change_event" template_name = "agenda_culturel/event_form_moderate.html" form_class = EventModerateForm - success_message = _("The event has been successfully moderated.") + + def get_success_message(self, cleaned_data): + return mark_safe(_('The event {} has been moderated with success.').format(self.object.get_absolute_url(), self.object.title)) + def is_moderate_next(self): - return "moderate-next" in self.request.path.split('/') + return "after" in self.request.path.split('/') def is_starting_moderation(self): return not "pk" in self.kwargs - def get_next_event(self, start_day, start_time): + def get_next_event(start_day, start_time): # select non moderated events qs = Event.objects.filter(moderated_date__isnull=True) @@ -391,19 +394,15 @@ class EventModerateView( def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) if self.is_moderate_next(): - context['pred'] = self.kwargs["pk"] + context['pred'] = self.kwargs["pred"] return context def get_object(self, queryset=None): if self.is_starting_moderation(): now = datetime.now() - return self.get_next_event(now.date(), now.time()) + return EventModerateView.get_next_event(now.date(), now.time()) else: - result = super().get_object(queryset) - if self.is_moderate_next(): - return self.get_next_event(result.start_day, result.start_time) - else: - return result + return super().get_object(queryset) def post(self, request, *args, **kwargs): try: @@ -421,10 +420,6 @@ class EventModerateView( def get_success_url(self): if 'save_and_next' in self.request.POST: return reverse_lazy("moderate_event_next", args=[self.object.pk]) - elif 'save_and_create_local' in self.request.POST: - return reverse_lazy("clone_edit", args=[self.object.pk]) - elif 'save_and_edit' in self.request.POST: - return reverse_lazy("edit_event", args=[self.object.pk]) elif 'save_and_edit_local' in self.request.POST: return reverse_lazy("edit_event", args=[self.object.get_local_version().pk]) else: @@ -443,6 +438,23 @@ def error_next_event(request, pk): {"pk": pk, "object": obj}, ) +@login_required(login_url="/accounts/login/") +@permission_required("agenda_culturel.change_event") +def moderate_event_next(request, pk): + # current event + obj = Event.objects.filter(pk=pk).first() + start_day = obj.start_day + start_time = obj.start_time + + next_obj = EventModerateView.get_next_event(start_day, start_time) + if next_obj is None: + return render( + request, + "agenda_culturel/event_next_error_message.html", + {"pk": pk, "object": obj}, + ) + else: + return HttpResponseRedirect(reverse_lazy("moderate_event_step", args=[next_obj.pk, obj.pk])) class EventDeleteView(