136 lines
4.2 KiB
Python
136 lines
4.2 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
|
|
|
|
|
|
@login_required
|
|
def config_dashboard(request):
|
|
"""Configuration dashboard - overview of system settings"""
|
|
# Only PX Admins can access
|
|
if not request.user.is_px_admin():
|
|
from django.contrib import messages
|
|
from django.shortcuts import redirect
|
|
messages.error(request, "Only PX Admins can access configuration.")
|
|
return redirect('dashboard:command-center')
|
|
|
|
# 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()
|
|
|
|
context = {
|
|
'sla_configs_count': sla_configs_count,
|
|
'routing_rules_count': routing_rules_count,
|
|
'hospitals_count': hospitals_count,
|
|
}
|
|
|
|
return render(request, 'config/dashboard.html', context)
|
|
|
|
|
|
@login_required
|
|
def sla_config_list(request):
|
|
"""SLA configurations list view"""
|
|
# Only PX Admins can access
|
|
if not request.user.is_px_admin():
|
|
from django.contrib import messages
|
|
from django.shortcuts import redirect
|
|
messages.error(request, "Only PX Admins can access configuration.")
|
|
return redirect('dashboard:command-center')
|
|
|
|
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)
|
|
|
|
|
|
@login_required
|
|
def routing_rules_list(request):
|
|
"""Routing rules list view"""
|
|
# Only PX Admins can access
|
|
if not request.user.is_px_admin():
|
|
from django.contrib import messages
|
|
from django.shortcuts import redirect
|
|
messages.error(request, "Only PX Admins can access configuration.")
|
|
return redirect('dashboard:command-center')
|
|
|
|
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'}) |