Coverage for backend/django/CoreRoot/urls.py: 93%
42 statements
« prev ^ index » next coverage.py v7.10.7, created at 2026-06-23 21:51 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2026-06-23 21:51 +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.UploadSessionViews import (
22 abort_multipart_upload,
23 complete_multipart_upload,
24 get_multipart_part_urls,
25 get_multipart_upload_status,
26 import_pinch_utilities_from_upload,
27 import_scenario_from_upload,
28 initiate_multipart_upload,
29 inspect_uploaded_csv,
30 process_pinch_utility_import_error_event,
31 process_scenario_import_event,
32 process_pinch_utility_import_event,
33 process_scenario_import_error_event,
34)
35from core.auxiliary.views.SolveView import cancel_idaes_solve_handler, solve_idaes, process_idaes_solve_completion_event, \
36 process_failed_idaes_solve_event, process_dispatch_multi_solve, process_build_state_response_event, \
37 process_build_state_request_dead_letter_event, process_solve_completion_email_event
38from core.auxiliary.views.UploadMSSData import upload_data
39from core.auxiliary.views.DownloadMSSData import download_data, download_mss_results, download_excel_connection
40from core.auxiliary.views.DeleteMSSData import delete_data
41from core.auxiliary.views.ExtractSegmentDataFromFS import extract_stream_data
42from core.auxiliary.views.LiveSolarData import get_solar_data
43from core.auxiliary.views.CopyFlowsheetView import copy_flowsheet
45from core.auxiliary.views.GenerateIDAESPython import generate_idaes_python
46from core.plots.plot_router import router as plot_router
47from core.validation import validate_urlpatterns, validate_models, validate_routers
48from diagnostics import views as diagnostics_views
49# TEMPORARY -> Will instead be called by a general "Pinch Analysis" view instead
51import core.routers
52from django.contrib import admin
53from django.urls import path, include
54from django.contrib.staticfiles.urls import staticfiles_urlpatterns
55from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView, SpectacularSwaggerView
57import authentication.routers
58import flowsheetInternals.unitops.routers
59import flowsheetInternals.graphicData.routers
60import flowsheetInternals.propertyPackages.routers
61import PinchAnalysis.routers
62import Economics.routers
63from CoreRoot.settings import DEBUG, PROFILING_ENABLED
64from notifications.views.broadcast_view import broadcast_message_to_user
65unvalidated_urlpatterns = [
66 path('api/authentication/', include(authentication.routers.urlpatterns)),
67]
69# VIEWSETS ROUTERS ONLY!!! already validated at router level
70viewset_urlpatterns = [
71 path("api/graphics", include(flowsheetInternals.graphicData.routers.router.urls)),
72 path("api/unitops/", include(flowsheetInternals.unitops.routers.router.urls)),
73 path('api/core/', include(core.routers.router.urls)),
74 path('api/property_packages/', include(flowsheetInternals.propertyPackages.routers.router.urls)),
75 path("api/pinch/", include(PinchAnalysis.routers.router.urls)),
76 path("api/economics/", include(Economics.routers.router.urls)),
77 path('api/core/plots/',include(plot_router.urls),name='plots'),
78]
80# API_VIEWS_ONLY!!!
81api_views_url_patterns = [
82 # Custom API urls for compound/flowsheet manipulation
83 path('api/idaes/solve/', solve_idaes, name='solve_idaes'),
84 path('api/idaes/generate-python-code/', generate_idaes_python, name='generate_python_code'),
85 path('api/idaes/cancel-solve/', cancel_idaes_solve_handler, name='cancel_idaes_solve'),
86 path('api/mss/upload', upload_data, name='upload_mss_data'),
87 path('api/scenarios/import_from_upload', import_scenario_from_upload, name='import_scenario_from_upload'),
88 path('api/pinch/import_utilities_from_upload', import_pinch_utilities_from_upload, name='import_pinch_utilities_from_upload'),
89 path('api/mss/delete', delete_data, name='delete_mss_data'),
90 path('api/mss/download', download_data, name='download_mss_data'),
91 path('api/mss/download_results', download_mss_results, name='download_mss_results'),
92 path('api/mss/download_excel_connection', download_excel_connection, name='download_excel_connection'),
93 path('api/uploads/multipart/initiate', initiate_multipart_upload, name='initiate_multipart_upload'),
94 path('api/uploads/multipart/parts', get_multipart_part_urls, name='get_multipart_part_urls'),
95 path('api/uploads/multipart/status', get_multipart_upload_status, name='get_multipart_upload_status'),
96 path('api/uploads/multipart/complete', complete_multipart_upload, name='complete_multipart_upload'),
97 path('api/uploads/multipart/abort', abort_multipart_upload, name='abort_multipart_upload'),
98 path('api/uploads/csv/inspect', inspect_uploaded_csv, name='inspect_uploaded_csv'),
99 path('api/flowsheet/copy', copy_flowsheet, name='copy_flowsheet'),
101 # TEMPORARY
102 path("api/pinch/calculate", pinch_analysis_view, name="pinch_analysis"),
103 path("api/pinch/extract/", extract_stream_data, name="extract_stream_data"),
104 #Compound API
105 path("api/compoundsuggestions/", get_suggestions, name="compound_suggestions"),
107 # Live Solar
108 path("api/solar/", get_solar_data, name="get_solar_data"),
110 # Diagnostics
111 path("api/diagnostics/rules/properties/<int:simulation_object_id>", diagnostics_views.evaluate_object_property_rules, name="diagnostics_evaluate_object_property_rules"),
112 path("api/diagnostics/rules/flowsheet/<int:flowsheet_id>", diagnostics_views.evaluate_flowsheet_property_rules, name="diagnostics_evaluate_flowsheet_property_rules"),
114]
116internal_urlpatterns = [
117# Health Check/s
118 path("api/status/", get_api_status, name="get_status"),
119 path("api/connectivity/", check_db_connectivity, name="get_db_connectivity"),
120 path("api/idaes/process-solve-completion/", process_idaes_solve_completion_event, name='process_idaes_solve_response'),
121 path("api/idaes/process-solve-failure/", process_failed_idaes_solve_event, name='process_idaes_solve_failure'),
122 path("api/idaes/process-build-state-response/", process_build_state_response_event, name='process_build_state_response'),
123 path("api/idaes/process-build-state-request-dead-letter/", process_build_state_request_dead_letter_event, name='process_build_state_request_dead_letter'),
124 path("api/idaes/process-ml-training-completion/", process_ml_training_event, name='process_ml_training_event'),
125 path("api/idaes/dispatch-multi-solve/", process_dispatch_multi_solve, name='process_dispatch_multi_solve'),
126 path("api/idaes/process-solve-completion-email/", process_solve_completion_email_event, name='process_solve_completion_email_event'),
127 path("api/scenarios/process-import/", process_scenario_import_event, name='process_scenario_import_event'),
128 path("api/scenarios/process-import-error/", process_scenario_import_error_event, name='process_scenario_import_error_event'),
129 path("api/pinch/process-utility-import/", process_pinch_utility_import_event, name='process_pinch_utility_import_event'),
130 path("api/pinch/process-utility-import-error/", process_pinch_utility_import_error_event, name='process_pinch_utility_import_error_event'),
131 path("api/notifications/broadcast/", broadcast_message_to_user, name="broadcast_message_to_user"),
132]
134# Validate all api_views, viewsets and models for access control.
135validate_urlpatterns(api_views_url_patterns)
136validate_models()
137validate_routers()
139urlpatterns = (
140 unvalidated_urlpatterns +
141 viewset_urlpatterns +
142 api_views_url_patterns +
143 internal_urlpatterns
144)
146if DEBUG: 146 ↛ exitline 146 didn't exit the module because the condition on line 146 was always true
147 # use these endpoints to view the api schema in a web browser
148 # Openapi schema definitions - generated by drf-spectacular
149 urlpatterns += [
150 path("api/schema/", SpectacularAPIView.as_view(), name="schema"),
151 path(
152 "api/schema/swagger-ui/",
153 SpectacularSwaggerView.as_view(url_name="schema"),
154 name="swagger-ui",
155 ),
156 path(
157 "api/schema/redoc/",
158 SpectacularRedocView.as_view(url_name="schema"),
159 name="redoc",
160 )
161 ]
162 urlpatterns += staticfiles_urlpatterns()
164 if PROFILING_ENABLED: 164 ↛ 165line 164 didn't jump to line 165 because the condition on line 164 was never true
165 urlpatterns += [path('silk/', include('silk.urls', namespace='silk'))]