HH/apps/core/config_views.py
2026-01-06 18:18:35 +03:00

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