Clarification des fonctionnements de la modération

This commit is contained in:
Jean-Marie Favreau 2025-05-02 12:03:50 +02:00
parent 77c94644d5
commit dbf059fd23
2 changed files with 38 additions and 35 deletions

View File

@ -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(

View File

@ -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)
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):