Séparation des vues organisations

This commit is contained in:
SebF 2025-03-28 15:00:33 +01:00
parent 69ced85e1e
commit 4183b7c764
4 changed files with 146 additions and 137 deletions

View File

@ -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/<int:pk>/delete",
OrganisationDeleteView.as_view(),
name="delete_organisation",
),
path(
"organisme/<int:pk>-<extra>",
OrganisationDetailView.as_view(),
name="view_organisation",
),
path(
"organisme/<int:pk>-<extra>",
OrganisationDetailView.as_view(),
name="view_organisation_fullname",
),
path(
"organisme/<int:pk>",
OrganisationDetailView.as_view(),
name="view_organisation_shortname",
),
path(
"organisme/<int:pk>/past",
OrganisationDetailViewPast.as_view(),
name="view_organisation_past",
),
path(
"organisme/<int:pk>-<extra>/past",
OrganisationDetailViewPast.as_view(),
name="view_organisation_past_fullname",
),
path(
"organismes/",
OrganisationListView.as_view(),
name="view_organisations",
),
path(
"organisme/<int:pk>/edit",
OrganisationUpdateView.as_view(),
name="edit_organisation",
),
# TODO pas encore trié
path("", home, name="home"),
path("cat:<cat>/", home, name="home_category"),
@ -380,56 +427,11 @@ urlpatterns = [
update_duplicate_event,
name="update_event",
),
path(
"organisme/<int:pk>/past",
OrganisationDetailViewPast.as_view(),
name="view_organisation_past",
),
path(
"organisme/<int:pk>",
OrganisationDetailView.as_view(),
name="view_organisation_shortname",
),
path(
"organisme/<int:organisation_pk>/ical",
export_ical,
name="export_ical_organisation",
),
path(
"organisme/<int:pk>-<extra>",
OrganisationDetailView.as_view(),
name="view_organisation",
),
path(
"organisme/<int:pk>-<extra>/past",
OrganisationDetailViewPast.as_view(),
name="view_organisation_past_fullname",
),
path(
"organisme/<int:pk>-<extra>",
OrganisationDetailView.as_view(),
name="view_organisation_fullname",
),
path(
"organisme/<int:pk>/edit",
OrganisationUpdateView.as_view(),
name="edit_organisation",
),
path(
"organisme/<int:pk>/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/<int:pk>/past",
PlaceDetailViewPast.as_view(),

View File

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

View File

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

View File

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