Compare commits
6 Commits
polymorphi
...
b32d0fd032
| Author | SHA1 | Date | |
|---|---|---|---|
| b32d0fd032 | |||
| bf9f43eed8 | |||
| 18953e06b7 | |||
| b79f0c318a | |||
| c91f603a50 | |||
| f7030e8da1 |
@@ -47,6 +47,7 @@ INSTALLED_APPS = [
|
||||
'colorfield',
|
||||
'import_export',
|
||||
'django_admin_action_forms',
|
||||
'polymorphic'
|
||||
]
|
||||
|
||||
# Import Export plugin settings
|
||||
@@ -56,7 +57,7 @@ IMPORT_EXPORT_SKIP_ADMIN_LOG = True
|
||||
IMPORT_FORMATS = [CSV]
|
||||
|
||||
MIDDLEWARE = [
|
||||
'flightslot.middleware.RedirectNonSuperuserFromAdminMiddleware',
|
||||
'flightslot.middleware.RedirectNonSuperuserFromAdminMiddleware', # custom middleware to show "user" page to non superuser
|
||||
'django.middleware.security.SecurityMiddleware',
|
||||
'whitenoise.middleware.WhiteNoiseMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
|
||||
@@ -51,7 +51,6 @@ class HourBuildingLegBaseInLine(nested_admin.NestedStackedPolymorphicInline):
|
||||
form = HourBuildingLegFlightForm
|
||||
fk_name = "hourbuildinglegbase_ptr"
|
||||
fields = ("departure", "time", "destination", "pax", )
|
||||
hide_title = True
|
||||
|
||||
class HourBuildingLegStopInLine(nested_admin.NestedStackedPolymorphicInline.Child):
|
||||
model = HourBuildingLegStop
|
||||
@@ -61,18 +60,6 @@ class HourBuildingLegBaseInLine(nested_admin.NestedStackedPolymorphicInline):
|
||||
|
||||
child_inlines = (HourBuildingLegFlightInLine, HourBuildingLegStopInLine, )
|
||||
|
||||
# If user is a student deny edit permission for week past the current one
|
||||
def has_change_permission(self, request: HttpRequest, obj: HourBuilding | None = None):
|
||||
if hasattr(request.user, "student") and obj:
|
||||
current_week = date.today().isocalendar().week
|
||||
if not obj.DoesNotExist and current_week > obj.weekpref.week:
|
||||
return False
|
||||
return True
|
||||
|
||||
def has_delete_permission(self, request: HttpRequest, obj: HourBuilding | None = None):
|
||||
return self.has_change_permission(request=request, obj=obj)
|
||||
|
||||
|
||||
class HourBuildingInLine(nested_admin.NestedTabularInline):
|
||||
model = HourBuilding
|
||||
inlines = (HourBuildingLegBaseInLine,)
|
||||
@@ -85,3 +72,16 @@ class HourBuildingInLine(nested_admin.NestedTabularInline):
|
||||
models.TextField: {"widget": Textarea(attrs={"rows":4, "cols":35})},
|
||||
}
|
||||
|
||||
# If user is a student deny edit permission for week past the current one
|
||||
def has_change_permission(self, request: HttpRequest, obj: WeekPreference | None = None):
|
||||
if hasattr(request.user, 'student') and obj:
|
||||
current_week: int = date.today().isocalendar().week
|
||||
if current_week > obj.week:
|
||||
return False
|
||||
return True
|
||||
|
||||
def has_delete_permission(self, request: HttpRequest, obj: WeekPreference | None = None):
|
||||
return self.has_change_permission(request=request, obj=obj)
|
||||
|
||||
def has_add_permission(self, request: HttpRequest, obj: WeekPreference | None = None):
|
||||
return self.has_change_permission(request=request, obj=obj)
|
||||
|
||||
@@ -35,3 +35,6 @@ class TrainingInLIne(nested_admin.NestedTabularInline):
|
||||
|
||||
def has_delete_permission(self, request: HttpRequest, obj: WeekPreference | None = None):
|
||||
return self.has_change_permission(request=request, obj=obj)
|
||||
|
||||
def has_add_permission(self, request: HttpRequest, obj: WeekPreference | None = None):
|
||||
return self.has_change_permission(request=request, obj=obj)
|
||||
|
||||
@@ -8,11 +8,7 @@ class RedirectNonSuperuserFromAdminMiddleware:
|
||||
|
||||
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')
|
||||
):
|
||||
if hasattr(request, "user") and hasattr(request.user, 'student'):
|
||||
if "/admin/" in request.path:
|
||||
return redirect("/user/") # redirect automatico
|
||||
|
||||
return self.get_response(request)
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
# Generated by Django 5.2.8 on 2025-11-25 11:01
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('flightslot', '0019_remove_hourbuildinglegstop_location_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='hourbuildinglegbase',
|
||||
options={'base_manager_name': 'objects', 'verbose_name': 'Flight Leg or Stop', 'verbose_name_plural': 'Flight Legs or Stops'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='hourbuildinglegflight',
|
||||
options={'base_manager_name': 'objects', 'verbose_name': 'Flight leg', 'verbose_name_plural': 'Flight legs'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='hourbuildinglegstop',
|
||||
options={'base_manager_name': 'objects', 'verbose_name': 'Stop', 'verbose_name_plural': 'Stops'},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='hourbuildinglegflight',
|
||||
name='pax',
|
||||
field=models.CharField(blank=True, max_length=16, null=True, verbose_name='Pax (optional)'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='weekpreference',
|
||||
name='week',
|
||||
field=models.PositiveSmallIntegerField(auto_created=True, db_default=48, db_index=True, verbose_name='Week Number'),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user