Clarification des fonctionnements de la modération
This commit is contained in:
		@@ -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/<int:pk>/moderate",
 | 
			
		||||
        EventModerateView.as_view(),
 | 
			
		||||
@@ -376,17 +380,17 @@ urlpatterns = [
 | 
			
		||||
    ),
 | 
			
		||||
    path(
 | 
			
		||||
        "event/<int:pk>/moderate-force",
 | 
			
		||||
        EventModerateView.as_view(),
 | 
			
		||||
        EventModerateForceView.as_view(),
 | 
			
		||||
        name="moderate_event_force",
 | 
			
		||||
    ),
 | 
			
		||||
    path(
 | 
			
		||||
        "event/<int:pk>/moderate/after/<int:pred>",
 | 
			
		||||
        EventModerateView.as_view(),
 | 
			
		||||
        EventModerateNextView.as_view(),
 | 
			
		||||
        name="moderate_event_step",
 | 
			
		||||
    ),
 | 
			
		||||
    path(
 | 
			
		||||
        "event/<int:pk>/moderate/back/<int:pred>",
 | 
			
		||||
        EventModerateView.as_view(),
 | 
			
		||||
        EventModerateBackView.as_view(),
 | 
			
		||||
        name="moderate_event_backstep",
 | 
			
		||||
    ),
 | 
			
		||||
    path(
 | 
			
		||||
 
 | 
			
		||||
@@ -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):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user