Coverage for backend/CoreRoot/urls.py: 93%
37 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-11-06 23:27 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2025-11-06 23:27 +0000
1"""
2URL configuration for CoreRoot project.
4The `urlpatterns` list routes URLs to views. For more information please see:
5 https://docs.djangoproject.com/en/4.2/topics/http/urls/
6Examples:
7Function views
8 1. Add an import: from my_app import views
9 2. Add a URL to urlpatterns: path('', views.home, name='home')
10Class-based views
11 1. Add an import: from other_app.views import Home
12 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
13Including another URLconf
14 1. Import the include() function: from django.urls import include, path
15 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
16"""
17from PinchAnalysis.views.PinchAnalysisView import pinch_analysis_view
18from core.auxiliary.views.CompoundSuggestionViews import get_suggestions
19from core.auxiliary.views.HealthChecks import get_api_status, check_db_connectivity
20from core.auxiliary.viewsets.MLViewSet import process_ml_training_event
21from core.auxiliary.views.SolveView import cancel_idaes_solve_handler, solve_idaes, process_idaes_solve_completion_event, \
22 process_failed_idaes_solve_event, cancel_idaes_solve, process_dispatch_multi_solve
23from core.auxiliary.views.UploadMSSData import upload_data
24from core.auxiliary.views.DownloadMSSData import download_data, download_mss_results
25from core.auxiliary.views.DeleteMSSData import delete_data
26from core.auxiliary.views.ExtractSegmentDataFromFS import extract_stream_data
27from core.auxiliary.views.LiveSolarData import get_solar_data
28from core.auxiliary.views.CopyFlowsheetView import copy_flowsheet
30from core.auxiliary.views.GenerateIDAESPython import generate_idaes_python
31from core.plots.plot_router import router as plot_router
32from core.validation import validate_urlpatterns
33# TEMPORARY -> Will instead be called by a general "Pinch Analysis" view instead
35import core.routers
36from django.contrib import admin
37from django.urls import path, include
38from django.contrib.staticfiles.urls import staticfiles_urlpatterns
39from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView, SpectacularSwaggerView
41import authentication.routers
42import flowsheetInternals.unitops.routers
43import flowsheetInternals.graphicData.routers
44import flowsheetInternals.propertyPackages.routers
45import PinchAnalysis.routers
46from CoreRoot.settings import DEBUG, PROFILING_ENABLED
47from notifications.views.broadcast_view import broadcast_message_to_user
48unvalidated_urlpatterns = [
49 path('api/authentication/', include(authentication.routers.urlpatterns)),
50]
52# VIEWSETS ROUTERS ONLY!!! already validated at router level
53viewset_urlpatterns = [
54 path("api/graphics", include(flowsheetInternals.graphicData.routers.router.urls)),
55 path("api/unitops/", include(flowsheetInternals.unitops.routers.router.urls)),
56 path('api/core/', include(core.routers.router.urls)),
57 path('api/property_packages/', include(flowsheetInternals.propertyPackages.routers.router.urls)),
58 path("api/pinch/", include(PinchAnalysis.routers.router.urls)),
59 path('api/core/plots/',include(plot_router.urls),name='plots'),
60]
62# API_VIEWS_ONLY!!!
63api_views_url_patterns = [
64 # Custom API urls for compound/flowsheet manipulation
65 path('api/idaes/solve/', solve_idaes, name='solve_idaes'),
66 path('api/idaes/generate-python-code/', generate_idaes_python, name='generate_python_code'),
67 path('api/idaes/cancel-solve/', cancel_idaes_solve_handler, name='cancel_idaes_solve'),
68 path('api/mss/upload', upload_data, name='upload_mss_data'),
69 path('api/mss/delete', delete_data, name='delete_mss_data'),
70 path('api/mss/download', download_data, name='download_mss_data'),
71 path('api/mss/download_results', download_mss_results, name='download_mss_results'),
72 path('api/flowsheet/copy', copy_flowsheet, name='copy_flowsheet'),
74 # TEMPORARY
75 path("api/pinch/calculate", pinch_analysis_view, name="pinch_analysis"),
76 path("api/pinch/extract/", extract_stream_data, name="extract_stream_data"),
77 #Compound API
78 path("api/compoundsuggestions/", get_suggestions, name="compound_suggestions"),
80 # Live Solar
81 path("api/solar/", get_solar_data, name="get_solar_data")
82]
84internal_urlpatterns = [
85# Health Check/s
86 path("api/status/", get_api_status, name="get_status"),
87 path("api/connectivity/", check_db_connectivity, name="get_db_connectivity"),
88 path("api/idaes/process-solve-completion/", process_idaes_solve_completion_event, name='process_idaes_solve_response'),
89 path("api/idaes/process-solve-failure/", process_failed_idaes_solve_event, name='process_idaes_solve_failure'),
90 path("api/idaes/process-ml-training-completion/", process_ml_training_event, name='process_ml_training_event'),
91 path("api/idaes/dispatch-multi-solve/", process_dispatch_multi_solve, name='process_dispatch_multi_solve'),
92 path("api/notifications/broadcast/", broadcast_message_to_user, name="broadcast_message_to_user"),
93]
95validate_urlpatterns(api_views_url_patterns)
97urlpatterns = (
98 unvalidated_urlpatterns +
99 viewset_urlpatterns +
100 api_views_url_patterns +
101 internal_urlpatterns
102)
104if DEBUG: 104 ↛ exitline 104 didn't exit the module because the condition on line 104 was always true
105 # use these endpoints to view the api schema in a web browser
106 # Openapi schema definitions - generated by drf-spectacular
107 urlpatterns += [
108 path("api/schema/", SpectacularAPIView.as_view(), name="schema"),
109 path(
110 "api/schema/swagger-ui/",
111 SpectacularSwaggerView.as_view(url_name="schema"),
112 name="swagger-ui",
113 ),
114 path(
115 "api/schema/redoc/",
116 SpectacularRedocView.as_view(url_name="schema"),
117 name="redoc",
118 )
119 ]
120 urlpatterns += staticfiles_urlpatterns()
122 if PROFILING_ENABLED: 122 ↛ 123line 122 didn't jump to line 123 because the condition on line 122 was never true
123 urlpatterns += [path('silk/', include('silk.urls', namespace='silk'))]