mirror of
https://github.com/thecyberlearn/modern-django-starter.git
synced 2026-08-18 12:52:55 +00:00
- Add /health/ endpoint that returns JSON without templates - Shows Django settings, file existence, and configuration - Use this to test if Django is running: https://dt.netcoptech.com/health/ - Helps diagnose if issue is templates, static files, or server config
66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
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') |