From 504e4e74c641fb0c427c4a9c933ad3bb7ed12853 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Tue, 3 Aug 2021 21:06:54 +0200 Subject: [PATCH] Drop special management views for automatic plans (now in Resint) --- aleksis/apps/chronos/menus.py | 11 ----- aleksis/apps/chronos/rules.py | 28 ------------- aleksis/apps/chronos/tables.py | 24 ----------- aleksis/apps/chronos/urls.py | 21 ---------- aleksis/apps/chronos/views.py | 76 ++++------------------------------ 5 files changed, 8 insertions(+), 152 deletions(-) diff --git a/aleksis/apps/chronos/menus.py b/aleksis/apps/chronos/menus.py index ec6337f7..89fb6d8d 100644 --- a/aleksis/apps/chronos/menus.py +++ b/aleksis/apps/chronos/menus.py @@ -56,17 +56,6 @@ MENUS = { ), ], }, - { - "name": _("Automatic plans"), - "url": "automatic_plans", - "icon": "update", - "validators": [ - ( - "aleksis.core.util.predicates.permission_validator", - "chronos.view_automaticplans", - ), - ], - }, ], } ] diff --git a/aleksis/apps/chronos/rules.py b/aleksis/apps/chronos/rules.py index f07f0149..5dcfd20a 100644 --- a/aleksis/apps/chronos/rules.py +++ b/aleksis/apps/chronos/rules.py @@ -51,31 +51,3 @@ add_perm("chronos.view_substitutions_rule", view_substitutions_predicate) # View room (timetable) view_room_predicate = has_person & has_room_timetable_perm add_perm("chronos.view_room_rule", view_room_predicate) - -# View automatic plan list -view_automatic_plans_predicate = has_person & has_global_perm("chronos.view_automaticplan") -add_perm("chronos.view_automaticplans_rule", view_automatic_plans_predicate) - -# View automatic plan -view_automatic_plan_predicate = has_person & ( - has_global_perm("chronos.view_automaticplan") | has_object_perm("chronos.view_automaticplan") -) -add_perm("chronos.view_automaticplan_rule", view_automatic_plan_predicate) - -# Add automatic plan -add_automatic_plan_predicate = view_automatic_plans_predicate & has_global_perm( - "chronos.add_automaticplan" -) -add_perm("chronos.add_automaticplan_rule", add_automatic_plan_predicate) - -# Edit automatic plan -edit_automatic_plan_predicate = view_automatic_plans_predicate & has_global_perm( - "chronos.change_automaticplan" -) -add_perm("chronos.edit_automaticplan_rule", edit_automatic_plan_predicate) - -# Delete automatic plan -delete_automatic_plan_predicate = view_automatic_plans_predicate & has_global_perm( - "chronos.delete_automaticplan" -) -add_perm("chronos.delete_automaticplan_rule", delete_automatic_plan_predicate) diff --git a/aleksis/apps/chronos/tables.py b/aleksis/apps/chronos/tables.py index 54acc9a1..6caff934 100644 --- a/aleksis/apps/chronos/tables.py +++ b/aleksis/apps/chronos/tables.py @@ -42,27 +42,3 @@ class LessonsTable(tables.Table): attrs={"a": {"class": "btn-flat waves-effect waves-orange"}}, verbose_name=_("Manage substitution"), ) - - -class AutomaticPlanTable(tables.Table): - """Table for automatic plans.""" - - class Meta: - attrs = {"class": "highlight"} - - name = tables.LinkColumn("edit_automatic_plan", args=[A("id")]) - filename = tables.LinkColumn("show_automatic_plan", args=[A("slug")]) - last_update = tables.DateTimeColumn() - last_update_triggered_manually = tables.BooleanColumn() - edit = tables.LinkColumn( - "edit_automatic_plan", - args=[A("id")], - text=_("Edit"), - attrs={"a": {"class": "btn-flat waves-effect waves-orange orange-text"}}, - ) - delete = tables.LinkColumn( - "delete_automatic_plan", - args=[A("id")], - text=_("Delete"), - attrs={"a": {"class": "btn-flat waves-effect waves-red red-text"}}, - ) diff --git a/aleksis/apps/chronos/urls.py b/aleksis/apps/chronos/urls.py index 765db990..fc6d9a86 100644 --- a/aleksis/apps/chronos/urls.py +++ b/aleksis/apps/chronos/urls.py @@ -54,25 +54,4 @@ urlpatterns = [ {"is_print": True}, name="substitutions_print_by_date", ), - path("automatic_plans/", views.AutomaticPlanListView.as_view(), name="automatic_plans"), - path( - "automatic_plans/create/", - views.AutomaticPlanCreateView.as_view(), - name="create_automatic_plan", - ), - path( - "automatic_plans/<int:pk>/edit/", - views.AutomaticPlanEditView.as_view(), - name="edit_automatic_plan", - ), - path( - "automatic_plans/<int:pk>/delete/", - views.AutomaticPlanDeleteView.as_view(), - name="delete_automatic_plan", - ), - path( - "automatic_plans/<str:slug>.pdf", - views.AutomaticPlanShowView.as_view(), - name="show_automatic_plan", - ), ] diff --git a/aleksis/apps/chronos/views.py b/aleksis/apps/chronos/views.py index 2829ddc4..5c2dab29 100644 --- a/aleksis/apps/chronos/views.py +++ b/aleksis/apps/chronos/views.py @@ -1,31 +1,26 @@ from datetime import datetime, timedelta -from typing import Any, Optional +from typing import Optional from django.db.models import Q -from django.http import FileResponse, HttpRequest, HttpResponse, HttpResponseNotFound +from django.http import HttpRequest, HttpResponse, HttpResponseNotFound from django.shortcuts import get_object_or_404, redirect, render -from django.urls import reverse, reverse_lazy +from django.urls import reverse from django.utils import timezone -from django.utils.decorators import method_decorator from django.utils.translation import ugettext as _ -from django.views import View from django.views.decorators.cache import never_cache -from django.views.generic.detail import SingleObjectMixin -from django_tables2 import RequestConfig, SingleTableView -from reversion.views import RevisionMixin -from rules.contrib.views import PermissionRequiredMixin, permission_required +from django_tables2 import RequestConfig +from rules.contrib.views import permission_required -from aleksis.core.mixins import AdvancedCreateView, AdvancedDeleteView, AdvancedEditView from aleksis.core.models import Announcement, Group from aleksis.core.util import messages from aleksis.core.util.core_helpers import get_site_preferences, has_person from aleksis.core.util.pdf import render_pdf -from .forms import AutomaticPlanForm, LessonSubstitutionForm +from .forms import LessonSubstitutionForm from .managers import TimetableType -from .models import Absence, AutomaticPlan, Holiday, LessonPeriod, LessonSubstitution, TimePeriod -from .tables import AutomaticPlanTable, LessonsTable +from .models import Absence, Holiday, LessonPeriod, LessonSubstitution, TimePeriod +from .tables import LessonsTable from .util.build import build_substitutions_list, build_timetable, build_weekdays from .util.chronos_helpers import ( get_classes, @@ -386,58 +381,3 @@ def substitutions( return render(request, "chronos/substitutions.html", context) else: return render_pdf(request, "chronos/substitutions_print.html", context) - - -class AutomaticPlanListView(PermissionRequiredMixin, SingleTableView): - """Table of all automatic plans.""" - - model = AutomaticPlan - table_class = AutomaticPlanTable - permission_required = "chronos.view_automaticplans_rule" - template_name = "chronos/automatic_plan/list.html" - - -@method_decorator(never_cache, name="dispatch") -class AutomaticPlanCreateView(PermissionRequiredMixin, AdvancedCreateView): - """Create view for automatic plans.""" - - model = AutomaticPlan - form_class = AutomaticPlanForm - permission_required = "chronos.add_automaticplan_rule" - template_name = "chronos/automatic_plan/create.html" - success_url = reverse_lazy("automatic_plans") - success_message = _("The automatic plan has been created.") - - -@method_decorator(never_cache, name="dispatch") -class AutomaticPlanEditView(PermissionRequiredMixin, AdvancedEditView): - """Edit view for automatic plans.""" - - model = AutomaticPlan - form_class = AutomaticPlanForm - permission_required = "chronos.edit_automaticplan_rule" - template_name = "chronos/automatic_plan/edit.html" - success_url = reverse_lazy("automatic_plans") - success_message = _("The automatic plan has been saved.") - - -@method_decorator(never_cache, name="dispatch") -class AutomaticPlanDeleteView(PermissionRequiredMixin, RevisionMixin, AdvancedDeleteView): - """Delete view for automatic plans.""" - - model = AutomaticPlan - permission_required = "chronos.delete_automaticplan_rule" - template_name = "core/pages/delete.html" - success_url = reverse_lazy("automatic_plans") - success_message = _("The automatic plan has been deleted.") - - -class AutomaticPlanShowView(PermissionRequiredMixin, SingleObjectMixin, View): - """Show the current version of the automatic plan.""" - - model = AutomaticPlan - permission_required = "resint.view_automaticplan_rule" - - def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> FileResponse: - automatic_plan = self.get_object() - return FileResponse(automatic_plan.get_current_file(), content_type="application/pdf") -- GitLab