Coverage for backend/django/CoreRoot/urls.py: 93%

42 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2026-07-22 05:22 +0000

1""" 

2URL configuration for CoreRoot project. 

3 

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 ( 

44 copy_flowsheet, 

45 copy_flowsheet_preview, 

46) 

47 

48from core.auxiliary.views.GenerateIDAESPython import generate_idaes_python 

49from core.plots.plot_router import router as plot_router 

50from core.validation import validate_urlpatterns, validate_models, validate_routers 

51from diagnostics import views as diagnostics_views 

52# TEMPORARY -> Will instead be called by a general "Pinch Analysis" view instead 

53 

54import core.routers 

55from django.contrib import admin 

56from django.urls import path, include 

57from django.contrib.staticfiles.urls import staticfiles_urlpatterns 

58from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView, SpectacularSwaggerView 

59 

60import authentication.routers 

61import flowsheetInternals.unitops.routers 

62import flowsheetInternals.graphicData.routers 

63import flowsheetInternals.propertyPackages.routers 

64import PinchAnalysis.routers 

65import Economics.routers 

66from CoreRoot.settings import DEBUG, PROFILING_ENABLED 

67from notifications.views.broadcast_view import broadcast_message_to_user 

68unvalidated_urlpatterns = [ 

69 path('api/authentication/', include(authentication.routers.urlpatterns)), 

70] 

71 

72# VIEWSETS ROUTERS ONLY!!! already validated at router level 

73viewset_urlpatterns = [ 

74 path("api/graphics", include(flowsheetInternals.graphicData.routers.router.urls)), 

75 path("api/unitops/", include(flowsheetInternals.unitops.routers.router.urls)), 

76 path('api/core/', include(core.routers.router.urls)), 

77 path('api/property_packages/', include(flowsheetInternals.propertyPackages.routers.router.urls)), 

78 path("api/pinch/", include(PinchAnalysis.routers.router.urls)), 

79 path("api/economics/", include(Economics.routers.router.urls)), 

80 path('api/core/plots/',include(plot_router.urls),name='plots'), 

81] 

82 

83# API_VIEWS_ONLY!!! 

84api_views_url_patterns = [ 

85 # Custom API urls for compound/flowsheet manipulation 

86 path('api/idaes/solve/', solve_idaes, name='solve_idaes'), 

87 path('api/idaes/generate-python-code/', generate_idaes_python, name='generate_python_code'), 

88 path('api/idaes/cancel-solve/', cancel_idaes_solve_handler, name='cancel_idaes_solve'), 

89 path('api/mss/upload', upload_data, name='upload_mss_data'), 

90 path('api/scenarios/import_from_upload', import_scenario_from_upload, name='import_scenario_from_upload'), 

91 path('api/pinch/import_utilities_from_upload', import_pinch_utilities_from_upload, name='import_pinch_utilities_from_upload'), 

92 path('api/mss/delete', delete_data, name='delete_mss_data'), 

93 path('api/mss/download', download_data, name='download_mss_data'), 

94 path('api/mss/download_results', download_mss_results, name='download_mss_results'), 

95 path('api/mss/download_excel_connection', download_excel_connection, name='download_excel_connection'), 

96 path('api/uploads/multipart/initiate', initiate_multipart_upload, name='initiate_multipart_upload'), 

97 path('api/uploads/multipart/parts', get_multipart_part_urls, name='get_multipart_part_urls'), 

98 path('api/uploads/multipart/status', get_multipart_upload_status, name='get_multipart_upload_status'), 

99 path('api/uploads/multipart/complete', complete_multipart_upload, name='complete_multipart_upload'), 

100 path('api/uploads/multipart/abort', abort_multipart_upload, name='abort_multipart_upload'), 

101 path('api/uploads/csv/inspect', inspect_uploaded_csv, name='inspect_uploaded_csv'), 

102 path('api/flowsheet/copy', copy_flowsheet, name='copy_flowsheet'), 

103 path( 

104 'api/flowsheet/copy-preview', 

105 copy_flowsheet_preview, 

106 name='copy_flowsheet_preview', 

107 ), 

108 

109 # TEMPORARY 

110 path("api/pinch/calculate", pinch_analysis_view, name="pinch_analysis"), 

111 path("api/pinch/extract/", extract_stream_data, name="extract_stream_data"), 

112 #Compound API  

113 path("api/compoundsuggestions/", get_suggestions, name="compound_suggestions"), 

114 

115 # Live Solar 

116 path("api/solar/", get_solar_data, name="get_solar_data"), 

117 

118 # Diagnostics 

119 path("api/diagnostics/rules/properties/<int:simulation_object_id>", diagnostics_views.evaluate_object_property_rules, name="diagnostics_evaluate_object_property_rules"), 

120 path("api/diagnostics/rules/flowsheet/<int:flowsheet_id>", diagnostics_views.evaluate_flowsheet_property_rules, name="diagnostics_evaluate_flowsheet_property_rules"), 

121 

122] 

123 

124internal_urlpatterns = [ 

125# Health Check/s 

126 path("api/status/", get_api_status, name="get_status"), 

127 path("api/connectivity/", check_db_connectivity, name="get_db_connectivity"), 

128 path("api/idaes/process-solve-completion/", process_idaes_solve_completion_event, name='process_idaes_solve_response'), 

129 path("api/idaes/process-solve-failure/", process_failed_idaes_solve_event, name='process_idaes_solve_failure'), 

130 path("api/idaes/process-build-state-response/", process_build_state_response_event, name='process_build_state_response'), 

131 path("api/idaes/process-build-state-request-dead-letter/", process_build_state_request_dead_letter_event, name='process_build_state_request_dead_letter'), 

132 path("api/idaes/process-ml-training-completion/", process_ml_training_event, name='process_ml_training_event'), 

133 path("api/idaes/dispatch-multi-solve/", process_dispatch_multi_solve, name='process_dispatch_multi_solve'), 

134 path("api/idaes/process-solve-completion-email/", process_solve_completion_email_event, name='process_solve_completion_email_event'), 

135 path("api/scenarios/process-import/", process_scenario_import_event, name='process_scenario_import_event'), 

136 path("api/scenarios/process-import-error/", process_scenario_import_error_event, name='process_scenario_import_error_event'), 

137 path("api/pinch/process-utility-import/", process_pinch_utility_import_event, name='process_pinch_utility_import_event'), 

138 path("api/pinch/process-utility-import-error/", process_pinch_utility_import_error_event, name='process_pinch_utility_import_error_event'), 

139 path("api/notifications/broadcast/", broadcast_message_to_user, name="broadcast_message_to_user"), 

140] 

141 

142# Validate all api_views, viewsets and models for access control. 

143validate_urlpatterns(api_views_url_patterns) 

144validate_models() 

145validate_routers() 

146 

147urlpatterns = ( 

148 unvalidated_urlpatterns + 

149 viewset_urlpatterns + 

150 api_views_url_patterns + 

151 internal_urlpatterns 

152) 

153 

154if DEBUG: 154 ↛ exitline 154 didn't exit the module because the condition on line 154 was always true

155 # use these endpoints to view the api schema in a web browser 

156 # Openapi schema definitions - generated by drf-spectacular 

157 urlpatterns += [ 

158 path("api/schema/", SpectacularAPIView.as_view(), name="schema"), 

159 path( 

160 "api/schema/swagger-ui/", 

161 SpectacularSwaggerView.as_view(url_name="schema"), 

162 name="swagger-ui", 

163 ), 

164 path( 

165 "api/schema/redoc/", 

166 SpectacularRedocView.as_view(url_name="schema"), 

167 name="redoc", 

168 ) 

169 ] 

170 urlpatterns += staticfiles_urlpatterns() 

171 

172 if PROFILING_ENABLED: 172 ↛ 173line 172 didn't jump to line 173 because the condition on line 172 was never true

173 urlpatterns += [path('silk/', include('silk.urls', namespace='silk'))]