modern-django-starter/apps/core/views.py
amitrana01 5845f9ee13 Add health check endpoint for debugging
- 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
2025-09-11 18:19:41 +05:30

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')