diff --git a/src/agenda_culturel/urls.py b/src/agenda_culturel/urls.py index 5adcf22..1018c6c 100644 --- a/src/agenda_culturel/urls.py +++ b/src/agenda_culturel/urls.py @@ -88,8 +88,12 @@ from .views import ( view_messages, # Moderation EventModerateView, + EventModerateBackView, + EventModerateForceView, + EventModerateNextView, moderate_event_next, moderate_from_date, + moderate_from_now, # Organisations OrganisationCreateView, OrganisationDeleteView, @@ -368,7 +372,7 @@ urlpatterns = [ ), path("messages", view_messages, name="messages"), # Moderation - path("moderate", EventModerateView.as_view(), name="moderate"), + path("moderate", moderate_from_now, name="moderate"), path( "event//moderate", EventModerateView.as_view(), @@ -376,17 +380,17 @@ urlpatterns = [ ), path( "event//moderate-force", - EventModerateView.as_view(), + EventModerateForceView.as_view(), name="moderate_event_force", ), path( "event//moderate/after/", - EventModerateView.as_view(), + EventModerateNextView.as_view(), name="moderate_event_step", ), path( "event//moderate/back/", - EventModerateView.as_view(), + EventModerateBackView.as_view(), name="moderate_event_backstep", ), path( diff --git a/src/agenda_culturel/views/moderation_views.py b/src/agenda_culturel/views/moderation_views.py index c1184ca..53a96c7 100644 --- a/src/agenda_culturel/views/moderation_views.py +++ b/src/agenda_culturel/views/moderation_views.py @@ -46,21 +46,6 @@ class EventModerateView( + txt ) - def is_moderate_next(self): - return "after" in self.request.path.split("/") - - def is_moderate_back(self): - return "back" in self.request.path.split("/") - - def is_moderate_force(self): - return "moderate-force" in self.request.path.split("/") - - def is_starting_moderation(self): - return "pk" not in self.kwargs - - def is_moderation_from_date(self): - return "m" in self.kwargs and "y" in self.kwargs and "d" in self.kwargs - def get_next_event(start_day, start_time, opk): # select non moderated events qs = Event.objects.filter(moderated_date__isnull=True) @@ -92,25 +77,10 @@ class EventModerateView( return qs.first() - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - if self.is_moderate_next(): - context["pred"] = self.kwargs["pred"] - return context - def get_object(self, queryset=None): - if self.is_starting_moderation(): - now = datetime.now() - event = EventModerateView.get_next_event(now.date(), now.time(), None) - else: - event = super().get_object(queryset) + event = super().get_object(queryset) if event.status == Event.STATUS.DRAFT: event.status = Event.STATUS.PUBLISHED - if self.is_moderate_back(): - pred = Event.objects.filter(pk=self.kwargs["pred"]).first() - pred.free_modification_lock(self.request.user) - if self.is_moderate_force(): - event.free_modification_lock(self.request.user, False) return event def post(self, request, *args, **kwargs): @@ -137,6 +107,35 @@ class EventModerateView( return self.object.get_absolute_url() +class EventModerateNextView(EventModerateView): + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["pred"] = self.kwargs["pred"] + return context + + +class EventModerateBackView(EventModerateView): + def get_object(self, queryset=None): + pred = Event.objects.filter(pk=self.kwargs["pred"]).first() + pred.free_modification_lock(self.request.user) + return super().get_object(queryset) + + +class EventModerateForceView(EventModerateView): + def get_object(self, queryset=None): + event = super().get_object(queryset) + event.free_modification_lock(self.request.user, False) + return super().get_object(queryset) + + +@login_required(login_url="/accounts/login/") +@permission_required("agenda_culturel.change_event") +def moderate_from_now(request): + now = datetime.now() + obj = EventModerateView.get_next_event(now.date(), now.time(), None) + return HttpResponseRedirect(reverse_lazy("moderate_event", args=[obj.pk])) + + @login_required(login_url="/accounts/login/") @permission_required("agenda_culturel.change_event") def moderate_event_next(request, pk):