3636_logger = logging .getLogger (__name__ )
3737
3838
39- def _to_latest_get_schema (
39+ def _aggregate (
4040 service_db : ServiceWithHistoryDBGet ,
4141 access_rights_db : list [ServiceAccessRightsAtDB ],
4242 service_manifest : ServiceMetaDataPublished ,
43- ) -> LatestServiceGet :
44-
45- assert len (service_db .history ) == 0 # nosec
46-
47- return LatestServiceGet (
48- key = service_db .key ,
49- version = service_db .version ,
50- name = service_db .name ,
51- thumbnail = HttpUrl (service_db .thumbnail ) if service_db .thumbnail else None ,
52- icon = HttpUrl (service_db .icon ) if service_db .icon else None ,
53- description = service_db .description ,
54- description_ui = service_db .description_ui ,
55- version_display = service_db .version_display ,
56- service_type = service_manifest .service_type ,
57- contact = service_manifest .contact ,
58- authors = service_manifest .authors ,
59- owner = (service_db .owner_email if service_db .owner_email else None ),
60- inputs = service_manifest .inputs or {},
61- outputs = service_manifest .outputs or {},
62- boot_options = service_manifest .boot_options ,
63- min_visible_inputs = service_manifest .min_visible_inputs ,
64- access_rights = {
43+ ) -> dict :
44+ return {
45+ "key" : service_db .key ,
46+ "version" : service_db .version ,
47+ "name" : service_db .name ,
48+ "thumbnail" : HttpUrl (service_db .thumbnail ) if service_db .thumbnail else None ,
49+ "icon" : HttpUrl (service_db .icon ) if service_db .icon else None ,
50+ "description" : service_db .description ,
51+ "description_ui" : service_db .description_ui ,
52+ "version_display" : service_db .version_display ,
53+ "service_type" : service_manifest .service_type ,
54+ "contact" : service_manifest .contact ,
55+ "authors" : service_manifest .authors ,
56+ "owner" : (service_db .owner_email if service_db .owner_email else None ),
57+ "inputs" : service_manifest .inputs or {},
58+ "outputs" : service_manifest .outputs or {},
59+ "boot_options" : service_manifest .boot_options ,
60+ "min_visible_inputs" : service_manifest .min_visible_inputs ,
61+ "access_rights" : {
6562 a .gid : ServiceGroupAccessRightsV2 .model_construct (
6663 execute = a .execute_access ,
6764 write = a .write_access ,
6865 )
6966 for a in access_rights_db
7067 },
71- classifiers = service_db .classifiers ,
72- quality = service_db .quality ,
68+ " classifiers" : service_db .classifiers ,
69+ " quality" : service_db .quality ,
7370 # NOTE: History section is removed
71+ }
72+
73+
74+ def _to_latest_get_schema (
75+ service_db : ServiceWithHistoryDBGet ,
76+ access_rights_db : list [ServiceAccessRightsAtDB ],
77+ service_manifest : ServiceMetaDataPublished ,
78+ ) -> LatestServiceGet :
79+
80+ assert len (service_db .history ) == 0 # nosec
81+
82+ return LatestServiceGet .model_validate (
83+ _aggregate (service_db , access_rights_db , service_manifest )
7484 )
7585
7686
@@ -82,42 +92,20 @@ def _to_get_schema(
8292) -> ServiceGetV2 :
8393 compatibility_map = compatibility_map or {}
8494
85- return ServiceGetV2 (
86- key = service_db .key ,
87- version = service_db .version ,
88- name = service_db .name ,
89- thumbnail = HttpUrl (service_db .thumbnail ) if service_db .thumbnail else None ,
90- icon = HttpUrl (service_db .icon ) if service_db .icon else None ,
91- description = service_db .description ,
92- description_ui = service_db .description_ui ,
93- version_display = service_db .version_display ,
94- service_type = service_manifest .service_type ,
95- contact = service_manifest .contact ,
96- authors = service_manifest .authors ,
97- owner = (service_db .owner_email if service_db .owner_email else None ),
98- inputs = service_manifest .inputs or {},
99- outputs = service_manifest .outputs or {},
100- boot_options = service_manifest .boot_options ,
101- min_visible_inputs = service_manifest .min_visible_inputs ,
102- access_rights = {
103- a .gid : ServiceGroupAccessRightsV2 .model_construct (
104- execute = a .execute_access ,
105- write = a .write_access ,
106- )
107- for a in access_rights_db
108- },
109- classifiers = service_db .classifiers ,
110- quality = service_db .quality ,
111- history = [
112- ServiceRelease .model_construct (
113- version = h .version ,
114- version_display = h .version_display ,
115- released = h .created ,
116- retired = h .deprecated ,
117- compatibility = compatibility_map .get (h .version ),
118- )
119- for h in service_db .history
120- ],
95+ return ServiceGetV2 .model_validate (
96+ {
97+ ** _aggregate (service_db , access_rights_db , service_manifest ),
98+ "history" : [
99+ ServiceRelease .model_construct (
100+ version = h .version ,
101+ version_display = h .version_display ,
102+ released = h .created ,
103+ retired = h .deprecated ,
104+ compatibility = compatibility_map .get (h .version ),
105+ )
106+ for h in service_db .history
107+ ],
108+ }
121109 )
122110
123111
0 commit comments