from django.shortcuts import render from django.contrib.auth.decorators import login_required, user_passes_test from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin from django.views.generic import TemplateView from django.http import HttpResponseForbidden, JsonResponse from django.conf import settings import os def health_check(request): """Simple health check that doesn't require templates or static files""" return JsonResponse({ 'status': 'ok', 'debug': settings.DEBUG, 'allowed_hosts': settings.ALLOWED_HOSTS, 'settings_module': os.environ.get('DJANGO_SETTINGS_MODULE', 'not set'), 'static_files_exist': os.path.exists('/app/theme/static/css/dist/styles.css'), 'staticfiles_dir': os.path.exists('/app/staticfiles') }) def home(request): return render(request, 'home.html') class HomeView(TemplateView): template_name = 'home.html' class AdminRequiredMixin(UserPassesTestMixin): def test_func(self): return self.request.user.has_role('admin') class StaffRequiredMixin(UserPassesTestMixin): def test_func(self): return self.request.user.has_role('staff') or self.request.user.has_role('admin') def admin_required(function): def wrap(request, *args, **kwargs): if request.user.has_role('admin'): return function(request, *args, **kwargs) else: return HttpResponseForbidden('Admin access required') return wrap def staff_required(function): def wrap(request, *args, **kwargs): if request.user.has_role('staff') or request.user.has_role('admin'): return function(request, *args, **kwargs) else: return HttpResponseForbidden('Staff access required') return wrap @login_required @admin_required def admin_dashboard(request): return render(request, 'admin_dashboard.html') @login_required @staff_required def staff_dashboard(request): return render(request, 'staff_dashboard.html')