Séparation des vues organisations
This commit is contained in:
parent
69ced85e1e
commit
4183b7c764
@ -30,6 +30,13 @@ from .views import (
|
|||||||
EventModerateView,
|
EventModerateView,
|
||||||
moderate_event_next,
|
moderate_event_next,
|
||||||
moderate_from_date,
|
moderate_from_date,
|
||||||
|
# Organisations
|
||||||
|
OrganisationCreateView,
|
||||||
|
OrganisationDeleteView,
|
||||||
|
OrganisationDetailView,
|
||||||
|
OrganisationDetailViewPast,
|
||||||
|
OrganisationListView,
|
||||||
|
OrganisationUpdateView,
|
||||||
# Tags
|
# Tags
|
||||||
view_tag,
|
view_tag,
|
||||||
view_tag_past,
|
view_tag_past,
|
||||||
@ -49,12 +56,6 @@ from .views import (
|
|||||||
recent,
|
recent,
|
||||||
administration,
|
administration,
|
||||||
activite,
|
activite,
|
||||||
OrganisationDeleteView,
|
|
||||||
OrganisationCreateView,
|
|
||||||
OrganisationDetailView,
|
|
||||||
OrganisationDetailViewPast,
|
|
||||||
OrganisationListView,
|
|
||||||
OrganisationUpdateView,
|
|
||||||
PlaceDeleteView,
|
PlaceDeleteView,
|
||||||
PlaceDetailView,
|
PlaceDetailView,
|
||||||
PlaceDetailViewPast,
|
PlaceDetailViewPast,
|
||||||
@ -182,6 +183,52 @@ urlpatterns = [
|
|||||||
moderate_from_date,
|
moderate_from_date,
|
||||||
name="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é
|
# TODO pas encore trié
|
||||||
path("", home, name="home"),
|
path("", home, name="home"),
|
||||||
path("cat:<cat>/", home, name="home_category"),
|
path("cat:<cat>/", home, name="home_category"),
|
||||||
@ -380,56 +427,11 @@ urlpatterns = [
|
|||||||
update_duplicate_event,
|
update_duplicate_event,
|
||||||
name="update_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(
|
path(
|
||||||
"organisme/<int:organisation_pk>/ical",
|
"organisme/<int:organisation_pk>/ical",
|
||||||
export_ical,
|
export_ical,
|
||||||
name="export_ical_organisation",
|
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(
|
path(
|
||||||
"place/<int:pk>/past",
|
"place/<int:pk>/past",
|
||||||
PlaceDetailViewPast.as_view(),
|
PlaceDetailViewPast.as_view(),
|
||||||
|
@ -2,4 +2,5 @@ from .oldviews import *
|
|||||||
from .errors import *
|
from .errors import *
|
||||||
from .general_pages_views import *
|
from .general_pages_views import *
|
||||||
from .moderation_views import *
|
from .moderation_views import *
|
||||||
|
from .organisations_views import *
|
||||||
from .tag_views import *
|
from .tag_views import *
|
||||||
|
@ -2370,92 +2370,6 @@ class PlaceFromEventCreateView(PlaceCreateView):
|
|||||||
return self.event.get_absolute_url()
|
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):
|
def statistics(request, pk=None):
|
||||||
if pk is not None:
|
if pk is not None:
|
||||||
rimport = RecurrentImport.objects.filter(pk=pk)
|
rimport = RecurrentImport.objects.filter(pk=pk)
|
||||||
|
92
src/agenda_culturel/views/organisations_views.py
Normal file
92
src/agenda_culturel/views/organisations_views.py
Normal 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")
|
Loading…
x
Reference in New Issue
Block a user