""" Configuration Console UI views - System configuration management """ from django.contrib.auth.decorators import login_required from django.core.paginator import Paginator from django.shortcuts import render from apps.organizations.models import Hospital from apps.px_action_center.models import PXActionSLAConfig, RoutingRule from apps.complaints.models import OnCallAdminSchedule from apps.callcenter.models import CallRecord from apps.core.decorators import px_admin_required from apps.accounts.models import User @px_admin_required def config_dashboard(request): """Configuration dashboard - overview of system settings - PX Admin only""" # Get counts sla_configs_count = PXActionSLAConfig.objects.filter(is_active=True).count() routing_rules_count = RoutingRule.objects.filter(is_active=True).count() hospitals_count = Hospital.objects.filter(status="active").count() oncall_schedules_count = OnCallAdminSchedule.objects.filter(is_active=True).count() call_records_count = CallRecord.objects.count() provisional_users_count = User.objects.filter(is_provisional=True).count() context = { "sla_configs_count": sla_configs_count, "routing_rules_count": routing_rules_count, "hospitals_count": hospitals_count, "oncall_schedules_count": oncall_schedules_count, "call_records_count": call_records_count, "provisional_users_count": provisional_users_count, } return render(request, "config/dashboard.html", context) @px_admin_required def sla_config_list(request): """SLA configurations list view - PX Admin only""" queryset = PXActionSLAConfig.objects.select_related("hospital", "department") # Apply filters hospital_filter = request.GET.get("hospital") if hospital_filter: queryset = queryset.filter(hospital_id=hospital_filter) is_active = request.GET.get("is_active") if is_active == "true": queryset = queryset.filter(is_active=True) elif is_active == "false": queryset = queryset.filter(is_active=False) # Ordering queryset = queryset.order_by("hospital", "name") # Pagination page_size = int(request.GET.get("page_size", 25)) paginator = Paginator(queryset, page_size) page_number = request.GET.get("page", 1) page_obj = paginator.get_page(page_number) # Get hospitals for filter hospitals = Hospital.objects.filter(status="active") context = { "page_obj": page_obj, "sla_configs": page_obj.object_list, "hospitals": hospitals, "filters": request.GET, } return render(request, "config/sla_config.html", context) @px_admin_required def routing_rules_list(request): """Routing rules list view - PX Admin only""" queryset = RoutingRule.objects.select_related("hospital", "department", "assign_to_user", "assign_to_department") # Apply filters hospital_filter = request.GET.get("hospital") if hospital_filter: queryset = queryset.filter(hospital_id=hospital_filter) is_active = request.GET.get("is_active") if is_active == "true": queryset = queryset.filter(is_active=True) elif is_active == "false": queryset = queryset.filter(is_active=False) # Ordering queryset = queryset.order_by("-priority", "name") # Pagination page_size = int(request.GET.get("page_size", 25)) paginator = Paginator(queryset, page_size) page_number = request.GET.get("page", 1) page_obj = paginator.get_page(page_number) # Get hospitals for filter hospitals = Hospital.objects.filter(status="active") context = { "page_obj": page_obj, "routing_rules": page_obj.object_list, "hospitals": hospitals, "filters": request.GET, } return render(request, "config/routing_rules.html", context) from django.views.decorators.csrf import csrf_exempt from rich import print @csrf_exempt def test(request): import json from django.http import JsonResponse print(json.loads(request.body)) return JsonResponse({"status": "ok"})