11import functools
22
33from aiohttp import web
4+ from models_library .api_schemas_resource_usage_tracker .pricing_plans import (
5+ PricingPlanGet ,
6+ )
47from models_library .api_schemas_webserver .resource_usage import (
58 ConnectServiceToPricingPlanBodyParams ,
69 CreatePricingPlanBodyParams ,
@@ -118,27 +121,15 @@ async def list_pricing_plans_for_admin_user(request: web.Request):
118121 )
119122
120123
121- @routes .get (
122- f"/{ VTAG } /admin/pricing-plans/{{pricing_plan_id}}" ,
123- name = "get_pricing_plan_for_admin_user" ,
124- )
125- @login_required
126- @permission_required ("resource-usage.write" )
127- @_handle_pricing_plan_admin_exceptions
128- async def get_pricing_plan_for_admin_user (request : web .Request ):
129- req_ctx = RequestContext .model_validate (request )
130- path_params = parse_request_path_parameters_as (PricingPlanGetPathParams , request )
131-
132- pricing_plan_get = await pricing_plans_admin_service .get_pricing_plan (
133- app = request .app ,
134- product_name = req_ctx .product_name ,
135- pricing_plan_id = path_params .pricing_plan_id ,
136- )
124+ def pricing_plan_get_to_admin (pricing_plan_get : PricingPlanGet ) -> PricingPlanAdminGet :
125+ """
126+ Convert a PricingPlanGet object into a PricingPlanAdminGet object.
127+ """
137128 if pricing_plan_get .pricing_units is None :
138129 msg = "Pricing plan units should not be None"
139130 raise ValueError (msg )
140131
141- webserver_admin_pricing_plan_get = PricingPlanAdminGet (
132+ return PricingPlanAdminGet (
142133 pricing_plan_id = pricing_plan_get .pricing_plan_id ,
143134 display_name = pricing_plan_get .display_name ,
144135 description = pricing_plan_get .description ,
@@ -147,18 +138,37 @@ async def get_pricing_plan_for_admin_user(request: web.Request):
147138 pricing_plan_key = pricing_plan_get .pricing_plan_key ,
148139 pricing_units = [
149140 PricingUnitAdminGet (
150- pricing_unit_id = pricing_unit .pricing_unit_id ,
151- unit_name = pricing_unit .unit_name ,
152- unit_extra_info = pricing_unit .unit_extra_info ,
153- specific_info = pricing_unit .specific_info ,
154- current_cost_per_unit = pricing_unit .current_cost_per_unit ,
155- default = pricing_unit .default ,
141+ pricing_unit_id = pu .pricing_unit_id ,
142+ unit_name = pu .unit_name ,
143+ unit_extra_info = pu .unit_extra_info ,
144+ specific_info = pu .specific_info ,
145+ current_cost_per_unit = pu .current_cost_per_unit ,
146+ default = pu .default ,
156147 )
157- for pricing_unit in pricing_plan_get .pricing_units
148+ for pu in pricing_plan_get .pricing_units
158149 ],
159150 is_active = pricing_plan_get .is_active ,
160151 )
161152
153+
154+ @routes .get (
155+ f"/{ VTAG } /admin/pricing-plans/{{pricing_plan_id}}" ,
156+ name = "get_pricing_plan_for_admin_user" ,
157+ )
158+ @login_required
159+ @permission_required ("resource-usage.write" )
160+ @_handle_pricing_plan_admin_exceptions
161+ async def get_pricing_plan_for_admin_user (request : web .Request ):
162+ req_ctx = RequestContext .model_validate (request )
163+ path_params = parse_request_path_parameters_as (PricingPlanGetPathParams , request )
164+
165+ pricing_plan_get = await pricing_plans_admin_service .get_pricing_plan (
166+ app = request .app ,
167+ product_name = req_ctx .product_name ,
168+ pricing_plan_id = path_params .pricing_plan_id ,
169+ )
170+ webserver_admin_pricing_plan_get = pricing_plan_get_to_admin (pricing_plan_get )
171+
162172 return envelope_json_response (webserver_admin_pricing_plan_get , web .HTTPOk )
163173
164174
@@ -184,29 +194,7 @@ async def create_pricing_plan(request: web.Request):
184194 app = request .app ,
185195 data = _data ,
186196 )
187- if pricing_plan_get .pricing_units is None :
188- raise ValueError
189-
190- webserver_admin_pricing_plan_get = PricingPlanAdminGet (
191- pricing_plan_id = pricing_plan_get .pricing_plan_id ,
192- display_name = pricing_plan_get .display_name ,
193- description = pricing_plan_get .description ,
194- classification = pricing_plan_get .classification ,
195- created_at = pricing_plan_get .created_at ,
196- pricing_plan_key = pricing_plan_get .pricing_plan_key ,
197- pricing_units = [
198- PricingUnitAdminGet (
199- pricing_unit_id = pricing_unit .pricing_unit_id ,
200- unit_name = pricing_unit .unit_name ,
201- unit_extra_info = pricing_unit .unit_extra_info ,
202- specific_info = pricing_unit .specific_info ,
203- current_cost_per_unit = pricing_unit .current_cost_per_unit ,
204- default = pricing_unit .default ,
205- )
206- for pricing_unit in pricing_plan_get .pricing_units
207- ],
208- is_active = pricing_plan_get .is_active ,
209- )
197+ webserver_admin_pricing_plan_get = pricing_plan_get_to_admin (pricing_plan_get )
210198
211199 return envelope_json_response (webserver_admin_pricing_plan_get , web .HTTPOk )
212200
@@ -234,29 +222,7 @@ async def update_pricing_plan(request: web.Request):
234222 product_name = req_ctx .product_name ,
235223 data = _data ,
236224 )
237- if pricing_plan_get .pricing_units is None :
238- raise ValueError
239-
240- webserver_admin_pricing_plan_get = PricingPlanAdminGet (
241- pricing_plan_id = pricing_plan_get .pricing_plan_id ,
242- display_name = pricing_plan_get .display_name ,
243- description = pricing_plan_get .description ,
244- classification = pricing_plan_get .classification ,
245- created_at = pricing_plan_get .created_at ,
246- pricing_plan_key = pricing_plan_get .pricing_plan_key ,
247- pricing_units = [
248- PricingUnitAdminGet (
249- pricing_unit_id = pricing_unit .pricing_unit_id ,
250- unit_name = pricing_unit .unit_name ,
251- unit_extra_info = pricing_unit .unit_extra_info ,
252- specific_info = pricing_unit .specific_info ,
253- current_cost_per_unit = pricing_unit .current_cost_per_unit ,
254- default = pricing_unit .default ,
255- )
256- for pricing_unit in pricing_plan_get .pricing_units
257- ],
258- is_active = pricing_plan_get .is_active ,
259- )
225+ webserver_admin_pricing_plan_get = pricing_plan_get_to_admin (pricing_plan_get )
260226
261227 return envelope_json_response (webserver_admin_pricing_plan_get , web .HTTPOk )
262228
0 commit comments