From 806415d03092470da6a3804a47baab54f8909416 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?= <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de> Date: Sun, 9 May 2021 11:44:41 +0200 Subject: [PATCH] Move model admin view urls to separate file --- AKModel/admin.py | 41 +++++++++-------------------------------- AKModel/urls.py | 48 +++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 50 insertions(+), 39 deletions(-) diff --git a/AKModel/admin.py b/AKModel/admin.py index 886e353b..2d832ad3 100644 --- a/AKModel/admin.py +++ b/AKModel/admin.py @@ -1,10 +1,10 @@ +from django import forms from django.apps import apps from django.contrib import admin from django.contrib.admin import SimpleListFilter from django.db.models import Count, F -from django import forms from django.shortcuts import render, redirect -from django.urls import path, reverse_lazy +from django.urls import reverse_lazy from django.utils import timezone from django.utils.html import format_html from django.utils.safestring import mark_safe @@ -16,9 +16,7 @@ from AKModel.availability.forms import AvailabilitiesFormMixin from AKModel.availability.models import Availability from AKModel.models import Event, AKOwner, AKCategory, AKTrack, AKTag, AKRequirement, AK, AKSlot, Room, AKOrgaMessage, \ ConstraintViolation -from AKModel.views import EventStatusView, AKCSVExportView, AKWikiExportView, AKMessageDeleteView, AKRequirementOverview, \ - NewEventWizardStartView, NewEventWizardSettingsView, NewEventWizardPrepareImportView, NewEventWizardFinishView, \ - NewEventWizardImportView, NewEventWizardActivateView +from AKModel.urls import get_admin_urls_event_wizard, get_admin_urls_event @admin.register(Event) @@ -30,36 +28,15 @@ class EventAdmin(admin.ModelAdmin): ordering = ['-start'] def add_view(self, request, form_url='', extra_context=None): - # Always use wizard to create new events - # (the built-in form wouldn't work anyways since the timezone cannot be specified before starting to fill the form) + # Always use wizard to create new events (the built-in form wouldn't work anyways since the timezone cannot + # be specified before starting to fill the form) return redirect("admin:new_event_wizard_start") def get_urls(self): - urls = super().get_urls() - custom_urls = [ - path('add/wizard/start/', self.admin_site.admin_view(NewEventWizardStartView.as_view()), - name="new_event_wizard_start"), - path('add/wizard/settings/', self.admin_site.admin_view(NewEventWizardSettingsView.as_view()), - name="new_event_wizard_settings"), - path('add/wizard/created/<slug:event_slug>/', self.admin_site.admin_view(NewEventWizardPrepareImportView.as_view()), - name="new_event_wizard_prepare_import"), - path('add/wizard/import/<slug:event_slug>/from/<slug:import_slug>/', - self.admin_site.admin_view(NewEventWizardImportView.as_view()), - name="new_event_wizard_import"), - path('add/wizard/activate/<slug:slug>/', - self.admin_site.admin_view(NewEventWizardActivateView.as_view()), - name="new_event_wizard_activate"), - path('add/wizard/finish/<slug:slug>/', - self.admin_site.admin_view(NewEventWizardFinishView.as_view()), - name="new_event_wizard_finish"), - path('<slug:slug>/status/', self.admin_site.admin_view(EventStatusView.as_view()), name="event_status"), - path('<slug:event_slug>/requirements/', self.admin_site.admin_view(AKRequirementOverview.as_view()), name="event_requirement_overview"), - path('<slug:event_slug>/ak-csv-export/', self.admin_site.admin_view(AKCSVExportView.as_view()), name="ak_csv_export"), - path('<slug:event_slug>/ak-wiki-export/', self.admin_site.admin_view(AKWikiExportView.as_view()), name="ak_wiki_export"), - path('<slug:slug>/delete-orga-messages/', self.admin_site.admin_view(AKMessageDeleteView.as_view()), - name="ak_delete_orga_messages"), - ] - return custom_urls + urls + urls = get_admin_urls_event_wizard(self.admin_site) + urls.extend(get_admin_urls_event(self.admin_site)) + urls.extend(super().get_urls()) + return urls def status_url(self, obj): return format_html("<a href='{url}'>{text}</a>", diff --git a/AKModel/urls.py b/AKModel/urls.py index 9b1f7591..03239837 100644 --- a/AKModel/urls.py +++ b/AKModel/urls.py @@ -3,6 +3,9 @@ from django.urls import include, path from rest_framework.routers import DefaultRouter from AKModel import views +from AKModel.views import NewEventWizardStartView, NewEventWizardSettingsView, NewEventWizardPrepareImportView, \ + NewEventWizardImportView, NewEventWizardActivateView, NewEventWizardFinishView, EventStatusView, \ + AKRequirementOverview, AKCSVExportView, AKWikiExportView, AKMessageDeleteView api_router = DefaultRouter() api_router.register('akowner', views.AKOwnerViewSet, basename='AKOwner') @@ -12,7 +15,6 @@ api_router.register('ak', views.AKViewSet, basename='AK') api_router.register('room', views.RoomViewSet, basename='Room') api_router.register('akslot', views.AKSlotViewSet, basename='AKSlot') - extra_paths = [] if apps.is_installed("AKScheduling"): from AKScheduling.api import ResourcesViewSet, RoomAvailabilitiesView, EventsView, EventsViewSet @@ -22,19 +24,17 @@ if apps.is_installed("AKScheduling"): extra_paths = [ path('api/scheduling-events/', EventsView.as_view(), name='scheduling-events'), - path('api/scheduling-room-availabilities/', RoomAvailabilitiesView.as_view(), name='scheduling-room-availabilities'), + path('api/scheduling-room-availabilities/', RoomAvailabilitiesView.as_view(), + name='scheduling-room-availabilities'), ] - event_specific_paths = [ - path('api/', include(api_router.urls), name='api'), - ] + path('api/', include(api_router.urls), name='api'), +] event_specific_paths.extend(extra_paths) - app_name = 'model' - urlpatterns = [ path( '<slug:event_slug>/', @@ -42,3 +42,37 @@ urlpatterns = [ ), path('user/', views.UserView.as_view(), name="user"), ] + + +def get_admin_urls_event_wizard(admin_site): + return [ + path('add/wizard/start/', admin_site.admin_view(NewEventWizardStartView.as_view()), + name="new_event_wizard_start"), + path('add/wizard/settings/', admin_site.admin_view(NewEventWizardSettingsView.as_view()), + name="new_event_wizard_settings"), + path('add/wizard/created/<slug:event_slug>/', admin_site.admin_view(NewEventWizardPrepareImportView.as_view()), + name="new_event_wizard_prepare_import"), + path('add/wizard/import/<slug:event_slug>/from/<slug:import_slug>/', + admin_site.admin_view(NewEventWizardImportView.as_view()), + name="new_event_wizard_import"), + path('add/wizard/activate/<slug:slug>/', + admin_site.admin_view(NewEventWizardActivateView.as_view()), + name="new_event_wizard_activate"), + path('add/wizard/finish/<slug:slug>/', + admin_site.admin_view(NewEventWizardFinishView.as_view()), + name="new_event_wizard_finish"), + ] + + +def get_admin_urls_event(admin_site): + return [ + path('<slug:slug>/status/', admin_site.admin_view(EventStatusView.as_view()), name="event_status"), + path('<slug:event_slug>/requirements/', admin_site.admin_view(AKRequirementOverview.as_view()), + name="event_requirement_overview"), + path('<slug:event_slug>/ak-csv-export/', admin_site.admin_view(AKCSVExportView.as_view()), + name="ak_csv_export"), + path('<slug:event_slug>/ak-wiki-export/', admin_site.admin_view(AKWikiExportView.as_view()), + name="ak_wiki_export"), + path('<slug:slug>/delete-orga-messages/', admin_site.admin_view(AKMessageDeleteView.as_view()), + name="ak_delete_orga_messages"), + ] -- GitLab