From 4183b7c764d03a5693ec5ea93468ec016ef61667 Mon Sep 17 00:00:00 2001 From: SebF Date: Fri, 28 Mar 2025 15:00:33 +0100 Subject: [PATCH] =?UTF-8?q?S=C3=A9paration=20des=20vues=20organisations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/agenda_culturel/urls.py | 104 +++++++++--------- src/agenda_culturel/views/__init__.py | 1 + src/agenda_culturel/views/oldviews.py | 86 --------------- .../views/organisations_views.py | 92 ++++++++++++++++ 4 files changed, 146 insertions(+), 137 deletions(-) create mode 100644 src/agenda_culturel/views/organisations_views.py diff --git a/src/agenda_culturel/urls.py b/src/agenda_culturel/urls.py index 5c17241..1c236ce 100644 --- a/src/agenda_culturel/urls.py +++ b/src/agenda_culturel/urls.py @@ -30,6 +30,13 @@ from .views import ( EventModerateView, moderate_event_next, moderate_from_date, + # Organisations + OrganisationCreateView, + OrganisationDeleteView, + OrganisationDetailView, + OrganisationDetailViewPast, + OrganisationListView, + OrganisationUpdateView, # Tags view_tag, view_tag_past, @@ -49,12 +56,6 @@ from .views import ( recent, administration, activite, - OrganisationDeleteView, - OrganisationCreateView, - OrganisationDetailView, - OrganisationDetailViewPast, - OrganisationListView, - OrganisationUpdateView, PlaceDeleteView, PlaceDetailView, PlaceDetailViewPast, @@ -182,6 +183,52 @@ urlpatterns = [ moderate_from_date, name="moderate_from_date", ), + # Organisations + path( + "organisme/add", + OrganisationCreateView.as_view(), + name="add_organisation", + ), + path( + "organisme//delete", + OrganisationDeleteView.as_view(), + name="delete_organisation", + ), + path( + "organisme/-", + OrganisationDetailView.as_view(), + name="view_organisation", + ), + path( + "organisme/-", + OrganisationDetailView.as_view(), + name="view_organisation_fullname", + ), + path( + "organisme/", + OrganisationDetailView.as_view(), + name="view_organisation_shortname", + ), + path( + "organisme//past", + OrganisationDetailViewPast.as_view(), + name="view_organisation_past", + ), + path( + "organisme/-/past", + OrganisationDetailViewPast.as_view(), + name="view_organisation_past_fullname", + ), + path( + "organismes/", + OrganisationListView.as_view(), + name="view_organisations", + ), + path( + "organisme//edit", + OrganisationUpdateView.as_view(), + name="edit_organisation", + ), # TODO pas encore triƩ path("", home, name="home"), path("cat:/", home, name="home_category"), @@ -380,56 +427,11 @@ urlpatterns = [ update_duplicate_event, name="update_event", ), - path( - "organisme//past", - OrganisationDetailViewPast.as_view(), - name="view_organisation_past", - ), - path( - "organisme/", - OrganisationDetailView.as_view(), - name="view_organisation_shortname", - ), path( "organisme//ical", export_ical, name="export_ical_organisation", ), - path( - "organisme/-", - OrganisationDetailView.as_view(), - name="view_organisation", - ), - path( - "organisme/-/past", - OrganisationDetailViewPast.as_view(), - name="view_organisation_past_fullname", - ), - path( - "organisme/-", - OrganisationDetailView.as_view(), - name="view_organisation_fullname", - ), - path( - "organisme//edit", - OrganisationUpdateView.as_view(), - name="edit_organisation", - ), - path( - "organisme//delete", - OrganisationDeleteView.as_view(), - name="delete_organisation", - ), - path( - "organismes/", - OrganisationListView.as_view(), - name="view_organisations", - ), - path( - "organisme/add", - OrganisationCreateView.as_view(), - name="add_organisation", - ), path( "place//past", PlaceDetailViewPast.as_view(), diff --git a/src/agenda_culturel/views/__init__.py b/src/agenda_culturel/views/__init__.py index f35e9ab..b82016c 100644 --- a/src/agenda_culturel/views/__init__.py +++ b/src/agenda_culturel/views/__init__.py @@ -2,4 +2,5 @@ from .oldviews import * from .errors import * from .general_pages_views import * from .moderation_views import * +from .organisations_views import * from .tag_views import * diff --git a/src/agenda_culturel/views/oldviews.py b/src/agenda_culturel/views/oldviews.py index f0fdb6c..6c9fb6e 100644 --- a/src/agenda_culturel/views/oldviews.py +++ b/src/agenda_culturel/views/oldviews.py @@ -2370,92 +2370,6 @@ class PlaceFromEventCreateView(PlaceCreateView): return self.event.get_absolute_url() -######################### -## Organisations -######################### - - -class OrganisationListView(ListView): - model = Organisation - paginate_by = 10 - ordering = ["name__unaccent"] - - -class OrganisationDetailView(ListView): - model = Organisation - template_name = "agenda_culturel/organisation_detail.html" - paginate_by = 10 - - def get_queryset(self): - self.organisation = ( - Organisation.objects.filter(pk=self.kwargs["pk"]) - .prefetch_related("organised_events") - .first() - ) - return ( - get_event_qs(self.request) - .filter(organisers__in=[self.kwargs["pk"]]) - .filter( - Q(other_versions__isnull=True) - | Q(other_versions__representative=F("pk")) - | Q(other_versions__representative__isnull=True) - ) - .filter(start_day__gte=datetime.now()) - .order_by("start_day") - ) - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - context["object"] = self.organisation - return context - - -class OrganisationDetailViewPast(OrganisationDetailView): - def get_queryset(self): - self.organisation = ( - Organisation.objects.filter(pk=self.kwargs["pk"]) - .prefetch_related("organised_events") - .first() - ) - self.past = True - return ( - get_event_qs(self.request) - .filter(organisers__in=[self.kwargs["pk"]]) - .filter( - Q(other_versions__isnull=True) - | Q(other_versions__representative=F("pk")) - | Q(other_versions__representative__isnull=True) - ) - .filter(start_day__lte=datetime.now()) - .order_by("-start_day") - ) - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - context["past"] = self.past - return context - - -class OrganisationUpdateView(PermissionRequiredMixin, SuccessMessageMixin, UpdateView): - model = Organisation - permission_required = "agenda_culturel.change_organisation" - success_message = _("The organisation has been successfully updated.") - fields = "__all__" - - -class OrganisationCreateView(PermissionRequiredMixin, SuccessMessageMixin, CreateView): - model = Organisation - permission_required = "agenda_culturel.add_organisation" - success_message = _("The organisation has been successfully created.") - fields = "__all__" - - -class OrganisationDeleteView(PermissionRequiredMixin, DeleteView): - model = Organisation - permission_required = "agenda_culturel.delete_organisation" - success_url = reverse_lazy("view_organisations") - - def statistics(request, pk=None): if pk is not None: rimport = RecurrentImport.objects.filter(pk=pk) diff --git a/src/agenda_culturel/views/organisations_views.py b/src/agenda_culturel/views/organisations_views.py new file mode 100644 index 0000000..198afd9 --- /dev/null +++ b/src/agenda_culturel/views/organisations_views.py @@ -0,0 +1,92 @@ +from datetime import datetime + +from django.contrib.auth.mixins import PermissionRequiredMixin +from django.contrib.messages.views import SuccessMessageMixin +from django.urls import reverse_lazy +from django.db.models import F, Q +from django.views.generic import ListView, UpdateView, CreateView, DeleteView +from django.utils.translation import gettext_lazy as _ + +from . import get_event_qs +from ..models import Organisation + + +class OrganisationListView(ListView): + model = Organisation + paginate_by = 10 + ordering = ["name__unaccent"] + + +class OrganisationDetailView(ListView): + model = Organisation + template_name = "agenda_culturel/organisation_detail.html" + paginate_by = 10 + + def get_queryset(self): + self.organisation = ( + Organisation.objects.filter(pk=self.kwargs["pk"]) + .prefetch_related("organised_events") + .first() + ) + return ( + get_event_qs(self.request) + .filter(organisers__in=[self.kwargs["pk"]]) + .filter( + Q(other_versions__isnull=True) + | Q(other_versions__representative=F("pk")) + | Q(other_versions__representative__isnull=True) + ) + .filter(start_day__gte=datetime.now()) + .order_by("start_day") + ) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["object"] = self.organisation + return context + + +class OrganisationDetailViewPast(OrganisationDetailView): + def get_queryset(self): + self.organisation = ( + Organisation.objects.filter(pk=self.kwargs["pk"]) + .prefetch_related("organised_events") + .first() + ) + self.past = True + return ( + get_event_qs(self.request) + .filter(organisers__in=[self.kwargs["pk"]]) + .filter( + Q(other_versions__isnull=True) + | Q(other_versions__representative=F("pk")) + | Q(other_versions__representative__isnull=True) + ) + .filter(start_day__lte=datetime.now()) + .order_by("-start_day") + ) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["past"] = self.past + return context + + +class OrganisationUpdateView(PermissionRequiredMixin, SuccessMessageMixin, UpdateView): + model = Organisation + permission_required = "agenda_culturel.change_organisation" + success_message = _("The organisation has been successfully updated.") + fields = "__all__" + + +class OrganisationCreateView(PermissionRequiredMixin, SuccessMessageMixin, CreateView): + model = Organisation + permission_required = "agenda_culturel.add_organisation" + success_message = _("The organisation has been successfully created.") + fields = "__all__" + + +class OrganisationDeleteView(PermissionRequiredMixin, DeleteView): + model = Organisation + permission_required = "agenda_culturel.delete_organisation" + success_url = reverse_lazy("view_organisations")