init
This commit is contained in:
48
backend/trznice/admin.py
Normal file
48
backend/trznice/admin.py
Normal file
@@ -0,0 +1,48 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user