Compare commits
6 Commits
polymorphi
...
b32d0fd032
| Author | SHA1 | Date | |
|---|---|---|---|
| b32d0fd032 | |||
| bf9f43eed8 | |||
| 18953e06b7 | |||
| b79f0c318a | |||
| c91f603a50 | |||
| f7030e8da1 |
@@ -47,6 +47,7 @@ INSTALLED_APPS = [
|
|||||||
'colorfield',
|
'colorfield',
|
||||||
'import_export',
|
'import_export',
|
||||||
'django_admin_action_forms',
|
'django_admin_action_forms',
|
||||||
|
'polymorphic'
|
||||||
]
|
]
|
||||||
|
|
||||||
# Import Export plugin settings
|
# Import Export plugin settings
|
||||||
@@ -56,7 +57,7 @@ IMPORT_EXPORT_SKIP_ADMIN_LOG = True
|
|||||||
IMPORT_FORMATS = [CSV]
|
IMPORT_FORMATS = [CSV]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
'flightslot.middleware.RedirectNonSuperuserFromAdminMiddleware',
|
'flightslot.middleware.RedirectNonSuperuserFromAdminMiddleware', # custom middleware to show "user" page to non superuser
|
||||||
'django.middleware.security.SecurityMiddleware',
|
'django.middleware.security.SecurityMiddleware',
|
||||||
'whitenoise.middleware.WhiteNoiseMiddleware',
|
'whitenoise.middleware.WhiteNoiseMiddleware',
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ class HourBuildingLegBaseInLine(nested_admin.NestedStackedPolymorphicInline):
|
|||||||
form = HourBuildingLegFlightForm
|
form = HourBuildingLegFlightForm
|
||||||
fk_name = "hourbuildinglegbase_ptr"
|
fk_name = "hourbuildinglegbase_ptr"
|
||||||
fields = ("departure", "time", "destination", "pax", )
|
fields = ("departure", "time", "destination", "pax", )
|
||||||
hide_title = True
|
|
||||||
|
|
||||||
class HourBuildingLegStopInLine(nested_admin.NestedStackedPolymorphicInline.Child):
|
class HourBuildingLegStopInLine(nested_admin.NestedStackedPolymorphicInline.Child):
|
||||||
model = HourBuildingLegStop
|
model = HourBuildingLegStop
|
||||||
@@ -61,18 +60,6 @@ class HourBuildingLegBaseInLine(nested_admin.NestedStackedPolymorphicInline):
|
|||||||
|
|
||||||
child_inlines = (HourBuildingLegFlightInLine, HourBuildingLegStopInLine, )
|
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):
|
class HourBuildingInLine(nested_admin.NestedTabularInline):
|
||||||
model = HourBuilding
|
model = HourBuilding
|
||||||
inlines = (HourBuildingLegBaseInLine,)
|
inlines = (HourBuildingLegBaseInLine,)
|
||||||
@@ -85,3 +72,16 @@ class HourBuildingInLine(nested_admin.NestedTabularInline):
|
|||||||
models.TextField: {"widget": Textarea(attrs={"rows":4, "cols":35})},
|
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):
|
def has_delete_permission(self, request: HttpRequest, obj: WeekPreference | None = None):
|
||||||
return self.has_change_permission(request=request, obj=obj)
|
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):
|
def __call__(self, request: HttpRequest):
|
||||||
# Se l'utente è loggato, non è superuser e prova ad andare in /admin/...
|
# Se l'utente è loggato, non è superuser e prova ad andare in /admin/...
|
||||||
if hasattr(request,"user"):
|
if hasattr(request, "user") and hasattr(request.user, 'student'):
|
||||||
if (
|
if "/admin/" in request.path:
|
||||||
request.path.startswith("/admin/") and
|
|
||||||
hasattr(request.user, 'student')
|
|
||||||
):
|
|
||||||
return redirect("/user/") # redirect automatico
|
return redirect("/user/") # redirect automatico
|
||||||
|
|
||||||
return self.get_response(request)
|
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