Marwan Alwali fd2f7259c0 update
2025-08-14 18:05:05 +03:00

94 lines
6.0 KiB
Python

"""
Analytics app URLs with comprehensive CRUD operations.
"""
from django.urls import path, include
from . import views
app_name = 'analytics'
urlpatterns = [
# ============================================================================
# DASHBOARD AND OVERVIEW
# ============================================================================
path('', views.AnalyticsDashboardView.as_view(), name='dashboard'),
# ============================================================================
# DASHBOARD URLS (FULL CRUD - Master Data)
# ============================================================================
path('dashboards/', views.DashboardListView.as_view(), name='dashboard_list'),
path('dashboards/create/', views.DashboardCreateView.as_view(), name='dashboard_create'),
path('dashboards/<uuid:pk>/', views.DashboardDetailView.as_view(), name='dashboard_detail'),
path('dashboards/<uuid:pk>/update/', views.DashboardUpdateView.as_view(), name='dashboard_update'),
path('dashboards/<uuid:pk>/delete/', views.DashboardDeleteView.as_view(), name='dashboard_delete'),
# ============================================================================
# DASHBOARD WIDGET URLS (FULL CRUD - Operational Data)
# ============================================================================
path('widgets/', views.DashboardWidgetListView.as_view(), name='dashboard_widget_list'),
path('widgets/create/', views.DashboardWidgetCreateView.as_view(), name='dashboard_widget_create'),
path('widgets/<uuid:pk>/', views.DashboardWidgetDetailView.as_view(), name='dashboard_widget_detail'),
path('widgets/<uuid:pk>/update/', views.DashboardWidgetUpdateView.as_view(), name='dashboard_widget_update'),
path('widgets/<uuid:pk>/delete/', views.DashboardWidgetDeleteView.as_view(), name='dashboard_widget_delete'),
# ============================================================================
# DATA SOURCE URLS (FULL CRUD - Master Data)
# ============================================================================
path('data-sources/', views.DataSourceListView.as_view(), name='data_source_list'),
path('data-sources/create/', views.DataSourceCreateView.as_view(), name='data_source_create'),
path('data-sources/<uuid:pk>/', views.DataSourceDetailView.as_view(), name='data_source_detail'),
path('data-sources/<uuid:pk>/update/', views.DataSourceUpdateView.as_view(), name='data_source_update'),
path('data-sources/<uuid:pk>/delete/', views.DataSourceDeleteView.as_view(), name='data_source_delete'),
# ============================================================================
# REPORT URLS (FULL CRUD - Operational Data)
# ============================================================================
path('reports/', views.ReportListView.as_view(), name='report_list'),
path('reports/create/', views.ReportCreateView.as_view(), name='report_create'),
path('reports/<uuid:pk>/', views.ReportDetailView.as_view(), name='report_detail'),
path('reports/<uuid:pk>/update/', views.ReportUpdateView.as_view(), name='report_update'),
path('reports/<uuid:pk>/delete/', views.ReportDeleteView.as_view(), name='report_delete'),
path('ajax/report-list/', views.report_list, name='report_list_data'),
# ============================================================================
# REPORT EXECUTION URLS (READ-ONLY - System Generated)
# ============================================================================
path('executions/', views.ReportExecutionListView.as_view(), name='report_execution_list'),
path('executions/<uuid:pk>/', views.ReportExecutionDetailView.as_view(), name='report_execution_detail'),
# ============================================================================
# METRIC DEFINITION URLS (FULL CRUD - Master Data)
# ============================================================================
path('metrics/', views.MetricDefinitionListView.as_view(), name='metric_definition_list'),
path('metrics/create/', views.MetricDefinitionCreateView.as_view(), name='metric_definition_create'),
path('metrics/<int:pk>/', views.MetricDefinitionDetailView.as_view(), name='metric_definition_detail'),
path('metrics/<int:pk>/update/', views.MetricDefinitionUpdateView.as_view(), name='metric_definition_update'),
path('metrics/<int:pk>/delete/', views.MetricDefinitionDeleteView.as_view(), name='metric_definition_delete'),
path('ajax/metric-stats/', views.metric_stats, name='metric_stats'),
path('ajax/metric-list/', views.metric_list, name='metric_list'),
# ============================================================================
# METRIC VALUE URLS (READ-ONLY - System Generated)
# ============================================================================
path('metric-values/', views.MetricValueListView.as_view(), name='metric_value_list'),
# ============================================================================
# HTMX ENDPOINTS FOR REAL-TIME UPDATES
# ============================================================================
path('htmx/stats/', views.analytics_stats, name='analytics_stats'),
path('htmx/dashboard-search/', views.dashboard_search, name='dashboard_search'),
# ============================================================================
# ACTION URLS FOR WORKFLOW OPERATIONS
# ============================================================================
path('data-sources/<int:data_source_id>/test/', views.test_data_source, name='test_data_source'),
path('reports/<uuid:report_id>/execute/', views.execute_report, name='execute_report'),
path('metrics/<int:metric_id>/calculate/', views.calculate_metric, name='calculate_metric'),
# ============================================================================
# API ENDPOINTS
# ============================================================================
path('api/', include('analytics.api.urls')),
]