Coverage for middle_layer/propose/application_layer/rest_api/routes.py: 100.00%
81 statements
« prev ^ index » next coverage.py v7.10.5, created at 2026-03-09 06:13 +0000
« prev ^ index » next coverage.py v7.10.5, created at 2026-03-09 06:13 +0000
1# Copyright 2024 Associated Universities, Inc.
2#
3# This file is part of Telescope Time Allocation Tools (TTAT).
4#
5# TTAT is free software: you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation, either version 3 of the License, or
8# any later version.
9#
10# TTAT is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with TTAT. If not, see <https://www.gnu.org/licenses/>.
17#
18from pyramid.config import Configurator
21def includeme(config: Configurator):
22 """
23 Function that gets included in server.py:main(); calls all route adding functions
25 :param config: Pyramid server config object
26 """
27 author_routes(config)
28 proposal_routes(config)
29 allocation_request_routes(config)
30 capability_request_routes(config)
31 scijust_routes(config)
32 techjust_routes(config)
33 observation_specification_routes(config)
34 science_target_routes(config)
35 reference_target_routes(config)
36 science_target_list_routes(config)
37 global_routes(config)
40def author_routes(config: Configurator):
41 """
42 server routes for Authors
44 :param config: Pyramid server config object
45 """
46 authors_url = "authors"
47 single_author_url = authors_url + "/{id}"
48 config.add_route(name="authors_list", pattern=authors_url, request_method="GET")
49 config.add_route(name="author_by_id", pattern=single_author_url, request_method="GET")
50 config.add_route(name="author_add", pattern=authors_url, request_method="POST")
51 config.add_route(name="author_update", pattern=single_author_url, request_method="PUT")
52 config.add_route(name="author_delete", pattern=single_author_url, request_method="DELETE")
55def proposal_routes(config: Configurator):
56 """
57 server routes for Proposals
59 :param config: Pyramid server config object
60 """
61 proposals_url = "proposals"
62 single_proposal_url = proposals_url + "/{proposal_id}"
63 proposal_state_url = proposals_url + "/{proposal_id}/{state}"
64 config.add_route(name="proposals_list", pattern=proposals_url, request_method="GET")
65 config.add_route(name="proposals_search", pattern=f"{proposals_url}/search", request_method="GET")
66 config.add_route(name="proposal_by_id", pattern=single_proposal_url, request_method="GET")
67 config.add_route(name="proposal_upsert", pattern=proposals_url, request_method="PUT")
68 config.add_route(name="proposal_change_state", pattern=proposal_state_url, request_method="PUT")
69 config.add_route(
70 name="proposal_set_display_order", pattern=single_proposal_url + "/set_display_order", request_method="POST"
71 )
72 config.add_route(
73 name="proposal_set_discussed", pattern=single_proposal_url + "/set_discussed", request_method="POST"
74 )
77def allocation_request_routes(config: Configurator):
78 """
79 server routes for AllocationRequests
81 :param config: Pyramid server config object
82 """
83 allocation_request_url = "allocation_requests"
84 single_ar_url = allocation_request_url + "/{ar_id}"
85 config.add_route(name="allocation_request_upsert", pattern=allocation_request_url, request_method="PUT")
86 config.add_route(name="allocation_requests_list", pattern=allocation_request_url, request_method="GET")
87 config.add_route(name="allocation_request_by_id", pattern=single_ar_url, request_method="GET")
88 config.add_route(name="allocation_request_delete", pattern=single_ar_url, request_method="DELETE")
91def capability_request_routes(config: Configurator):
92 """
93 server routes for Capability Requests
95 :param config: Pyramid server config object
96 """
97 capability_request_url = "capability_requests"
98 single_capability_request_url = capability_request_url + "/{id}"
99 config.add_route(
100 name="capability_request_list",
101 pattern="allocation_requests/{allocation_request_id}/capability_requests",
102 request_method="GET",
103 )
104 config.add_route(name="capability_request_by_id", pattern=single_capability_request_url, request_method="GET")
105 config.add_route(name="capability_request_upsert", pattern=capability_request_url, request_method="PUT")
106 config.add_route(name="capability_request_delete", pattern=single_capability_request_url, request_method="DELETE")
109def scijust_routes(config: Configurator):
110 """
111 server routes for Scientific Justifications
113 :param config: Pyramid server config object
114 """
115 scijust_url = "proposal_copies/{proposal_copy_id}/scientific_justification"
116 config.add_route(name="scijust_by_proposal_copy_id", pattern=scijust_url, request_method="GET")
117 config.add_route(name="scijust_add", pattern=scijust_url, request_method="POST")
118 config.add_route(name="scijust_delete", pattern=scijust_url, request_method="DELETE")
121def techjust_routes(config: Configurator):
122 """
123 server routes for Technical Justification answers
125 :param config: Pyramid server config object
126 """
127 techjust_url = "proposal_copies/{proposal_copy_id}/technical_justification_answers"
128 config.add_route(name="techjust_add", pattern=techjust_url, request_method="PUT")
131def observation_specification_routes(config: Configurator):
132 """
133 server routes for ObservationSpecification endpoints
135 :param config: Pyramid server config object
136 """
137 obspec_url = "/observation_specifications"
138 single_obspec_url = obspec_url + "/{id}"
139 obspec_list_url = "allocation_requests/{allocation_request_id}/observation_specifications"
140 config.add_route(
141 name="observation_specifications_by_ar",
142 pattern=obspec_list_url,
143 request_method="GET",
144 )
145 config.add_route(
146 name="observation_specifications_by_av",
147 pattern="allocation_versions/{allocation_version_id}/observation_specifications",
148 request_method="GET",
149 )
150 config.add_route(
151 name="observation_specifications_by_proposal_disposition_group_id",
152 pattern="proposal_disposition_group/{proposal_disposition_group_id}/observation_specifications",
153 request_method="GET",
154 )
155 config.add_route(
156 name="generate_observation_specifications",
157 pattern=obspec_list_url,
158 request_method="POST",
159 )
160 config.add_route("observation_specifications_by_id", pattern=single_obspec_url, request_method="GET")
161 config.add_route(name="update_observation_specification", pattern=obspec_url, request_method="PUT")
162 config.add_route(name="delete_observation_specification", pattern=single_obspec_url, request_method="DELETE")
165def science_target_routes(config: Configurator):
166 config.add_route(
167 name="science_target_upsert",
168 pattern="/science_target",
169 request_method="PUT",
170 )
171 config.add_route(
172 name="science_target_delete",
173 pattern="/science_target/{science_target_id}",
174 request_method="DELETE",
175 )
176 config.add_route(
177 name="generate_science_targets",
178 pattern="allocation_requests/{allocation_request_id}/science_targets",
179 request_method="POST",
180 )
183def reference_target_routes(config: Configurator):
184 config.add_route(
185 name="reference_target_upsert",
186 pattern="/reference_target",
187 request_method="PUT",
188 )
189 config.add_route(
190 name="reference_target_delete",
191 pattern="/reference_target/{reference_target_id}",
192 request_method="DELETE",
193 )
194 config.add_route(
195 name="reference_target_list",
196 pattern="reference_target_list/{ar_id}",
197 request_method="GET",
198 )
199 config.add_route(
200 name="generate_reference_targets",
201 pattern="allocation_requests/{allocation_request_id}/reference_targets",
202 request_method="POST",
203 )
206def science_target_list_routes(config: Configurator):
207 """
208 server routes for ScienceTargetList endpoints
210 :param config: Pyramid server config object
211 """
212 config.add_route(
213 name="science_target_list",
214 pattern="science_target_list/{ar_id}",
215 request_method="GET",
216 )
219def global_routes(config: Configurator):
220 """
221 server routes for global parameter lists
223 :param config: Pyramid server config object
224 """
225 config.add_route(name="globals_list", pattern="globals", request_method="GET")
226 config.add_route(name="scan_intent_list", pattern="globals/scan_intents", request_method="GET")
227 config.add_route(name="subscan_intent_list", pattern="globals/subscan_intents", request_method="GET")
228 config.add_route(name="spectral_band_list", pattern="globals/spectral_bands", request_method="GET")