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

40 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2026-02-12 01:47 +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.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 

29 

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, validate_models, validate_routers 

33from diagnostics import views as diagnostics_views 

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

35 

36import core.routers 

37from django.contrib import admin 

38from django.urls import path, include 

39from django.contrib.staticfiles.urls import staticfiles_urlpatterns 

40from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView, SpectacularSwaggerView 

41 

42import authentication.routers 

43import flowsheetInternals.unitops.routers 

44import flowsheetInternals.graphicData.routers 

45import flowsheetInternals.propertyPackages.routers 

46import PinchAnalysis.routers 

47from CoreRoot.settings import DEBUG, PROFILING_ENABLED 

48from notifications.views.broadcast_view import broadcast_message_to_user 

49unvalidated_urlpatterns = [ 

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

51] 

52 

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

54viewset_urlpatterns = [ 

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

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

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

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

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

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

61] 

62 

63# API_VIEWS_ONLY!!! 

64api_views_url_patterns = [ 

65 # Custom API urls for compound/flowsheet manipulation 

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

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

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

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

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

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

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

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

74 

75 # TEMPORARY 

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

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

78 #Compound API  

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

80 

81 # Live Solar 

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

83 

84 # Diagnostics 

85 path("api/diagnostics/runs/", diagnostics_views.list_runs, name="diagnostics_list_runs"), 

86 path("api/diagnostics/runs/<int:run_id>/", diagnostics_views.retrieve_run, name="diagnostics_retrieve_run"), 

87 path("api/diagnostics/runs/<int:run_id>/summary", diagnostics_views.get_run_summary, name="diagnostics_get_run_summary"), 

88 path("api/diagnostics/runs/<int:run_id>/events", diagnostics_views.get_run_events, name="diagnostics_get_run_events"), 

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

90 path("api/diagnostics/rules/validate/", diagnostics_views.validate_value_against_rule, name="diagnostics_validate_rule_for_value"), 

91 path("api/diagnostics/rules/", diagnostics_views.get_rules_jdm, name="diagnostics_get_rules_jdm"), 

92 path("api/diagnostics/pre-solve", diagnostics_views.pre_solve_validation, name="diagnostics_pre_solve_validation"), 

93] 

94 

95internal_urlpatterns = [ 

96# Health Check/s 

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

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

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

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

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

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

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

104] 

105 

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

107validate_urlpatterns(api_views_url_patterns) 

108validate_models() 

109validate_routers() 

110 

111urlpatterns = ( 

112 unvalidated_urlpatterns + 

113 viewset_urlpatterns + 

114 api_views_url_patterns + 

115 internal_urlpatterns 

116) 

117 

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

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

120 # Openapi schema definitions - generated by drf-spectacular 

121 urlpatterns += [ 

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

123 path( 

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

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

126 name="swagger-ui", 

127 ), 

128 path( 

129 "api/schema/redoc/", 

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

131 name="redoc", 

132 ) 

133 ] 

134 urlpatterns += staticfiles_urlpatterns() 

135 

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

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