Files
e-trznice/backend/trznice/admin.py
2025-10-02 00:54:34 +02:00

49 lines
1.5 KiB
Python

from django.contrib.admin import AdminSite
from django.contrib import admin
from django_celery_beat.models import PeriodicTask, IntervalSchedule, CrontabSchedule, SolarSchedule, ClockedSchedule
class RoleBasedAdminSite(AdminSite):
site_header = "Tržiště Admin"
site_title = "Tržiště Admin"
index_title = "Přehled"
def get_app_list(self, request):
app_list = super().get_app_list(request)
if not hasattr(request.user, "role"):
return []
role = request.user.role
# define allowed models per role
role_model_access = {
"squareManager": ["Square", "Event", "MarketSlot", "Product", "EventProduct"],
"cityClerk": ["CustomUser", "Event", "MarketSlot", "Reservation", "Product", "EventProduct", "ServiceTicket"],
# admin will see everything
}
# only restrict if user has limited access
if role in role_model_access:
allowed = role_model_access[role]
for app in app_list:
app["models"] = [
model for model in app["models"]
if model["object_name"] in allowed
]
return app_list
# Initialize the custom admin site
custom_admin_site = RoleBasedAdminSite(name='custom_admin')
# # Register your models to the custom admin site
custom_admin_site.register(PeriodicTask)
custom_admin_site.register(IntervalSchedule)
custom_admin_site.register(CrontabSchedule)
custom_admin_site.register(SolarSchedule)
custom_admin_site.register(ClockedSchedule)