From 78f53cae7dfbe1b76417f4f50c5fa1ca03f574c3 Mon Sep 17 00:00:00 2001 From: Emanuele Date: Wed, 19 Nov 2025 18:20:16 +0100 Subject: [PATCH] Disable sidebar for students --- cntmanage/cntmanage/settings.py | 7 ++++--- cntmanage/cntmanage/urls.py | 25 ++++++------------------- cntmanage/flightslot/admin.py | 19 +++++++++++++++++++ cntmanage/flightslot/middleware.py | 18 ++++++++++++++++++ 4 files changed, 47 insertions(+), 22 deletions(-) create mode 100644 cntmanage/flightslot/middleware.py diff --git a/cntmanage/cntmanage/settings.py b/cntmanage/cntmanage/settings.py index 0d3392d..bbfd0ad 100644 --- a/cntmanage/cntmanage/settings.py +++ b/cntmanage/cntmanage/settings.py @@ -52,6 +52,7 @@ IMPORT_EXPORT_SKIP_ADMIN_LOG = True IMPORT_FORMATS = [CSV] MIDDLEWARE = [ + 'flightslot.middleware.RedirectNonSuperuserFromAdminMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', @@ -91,9 +92,9 @@ STATICFILES_DIRS = [ DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', - 'NAME': 'techstorage', - 'USER': 'tech', - 'PASSWORD': 'tech', + 'NAME': 'flightslot_db', + 'USER': 'flightslot', + 'PASSWORD': 'flightslot', 'HOST': 'localhost', 'PORT': '5432' } diff --git a/cntmanage/cntmanage/urls.py b/cntmanage/cntmanage/urls.py index c7d9f58..0680518 100644 --- a/cntmanage/cntmanage/urls.py +++ b/cntmanage/cntmanage/urls.py @@ -1,28 +1,15 @@ -""" -URL configuration for techdb project. - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/5.1/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" from django.contrib import admin from django.urls import path -from django.views.generic import RedirectView +from django.shortcuts import redirect +from flightslot.admin import flightslot_user urlpatterns = [ - path('', RedirectView.as_view(url='/admin/', permanent=False)), + #path('', RedirectView.as_view(url='/admin/', permanent=False)), path('admin/', admin.site.urls), + path('user/', flightslot_user.urls), + path("", lambda r: redirect("/user/")), # la root porta gli utenti nella pagina giusta ] admin.site.site_header = "CantorAir Flight Scheduler" admin.site.site_title = "CantorAir Flight Scheduler" -admin.site.index_title = "Welcome to CantorAir Flight Scheduler Portal" \ No newline at end of file +admin.site.index_title = "Welcome to CantorAir Flight Scheduler Portal" diff --git a/cntmanage/flightslot/admin.py b/cntmanage/flightslot/admin.py index 5f6b87a..4db5536 100644 --- a/cntmanage/flightslot/admin.py +++ b/cntmanage/flightslot/admin.py @@ -1,4 +1,5 @@ from django.contrib import admin +from django.http import HttpRequest from .models.courses import Course from .models.students import Student @@ -10,6 +11,24 @@ from .admins.student_adm import StudentAdmin from .admins.mission_adm import MissionProfileAdmin from .admins.weekpred_adm import WeekPreferenceAdmin +from django.contrib.admin import AdminSite + +class FlightSlotUserSite(AdminSite): + site_header = "Flight Slot Student Page" + + def get_app_list(self, request: HttpRequest, *args, **kwargs): + app_list = super().get_app_list(request) + + if not request.user.is_superuser: + self.enable_nav_sidebar = False + + return app_list + +flightslot_user = FlightSlotUserSite(name="user_site") + +# registra SOLO i modelli autorizzati +flightslot_user.register(WeekPreference, WeekPreferenceAdmin) + admin.site.register(Course, CourseAdmin) admin.site.register(MissionProfile, MissionProfileAdmin) admin.site.register(Student, StudentAdmin) diff --git a/cntmanage/flightslot/middleware.py b/cntmanage/flightslot/middleware.py new file mode 100644 index 0000000..ba198ab --- /dev/null +++ b/cntmanage/flightslot/middleware.py @@ -0,0 +1,18 @@ +from django.shortcuts import redirect +from django.urls import reverse +from django.http import HttpRequest + +class RedirectNonSuperuserFromAdminMiddleware: + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request: HttpRequest): + # Se l'utente è loggato, non è superuser e prova ad andare in /admin/... + if hasattr(request,"user"): + if ( + request.path.startswith("/admin/") and + hasattr(request.user, 'student') + ): + return redirect("/user/") # redirect automatico + + return self.get_response(request)