131 lines
4.0 KiB
Python
131 lines
4.0 KiB
Python
"""
|
|
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"})
|