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 @@
-
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" %}
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(