Skip to content

Commit 85506e1

Browse files
modification of rest part
1 parent 81ec8eb commit 85506e1

File tree

13 files changed

+440
-274
lines changed

13 files changed

+440
-274
lines changed

packages/models-library/src/models_library/api_schemas_webserver/licensed_items.py

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -61,21 +61,28 @@ class _ItisVipRestData(OutputSchema):
6161

6262

6363
class _ItisVipResourceRestData(OutputSchema):
64-
category_id: IDStr
65-
category_display: str
66-
category_icon: HttpUrl | None = None # NOTE: Placeholder until provide @odeimaiz
64+
# category_id: IDStr
65+
# category_display: str
66+
# category_icon: HttpUrl | None = None # NOTE: Placeholder until provide @odeimaiz
6767
source: _ItisVipRestData
68-
terms_of_use_url: HttpUrl | None = None # NOTE: Placeholder until provided @mguidon
68+
# terms_of_use_url: HttpUrl | None = None # NOTE: Placeholder until provided @mguidon
6969

7070

7171
class LicensedItemRestGet(OutputSchema):
7272
licensed_item_id: LicensedItemID
73+
key: str
74+
version: str
75+
7376
display_name: str
74-
# NOTE: to put here a discriminator we have to embed it one more layer
7577
licensed_resource_type: LicensedResourceType
76-
licensed_resource_data: _ItisVipResourceRestData
78+
licensed_resources: list[_ItisVipResourceRestData]
7779
pricing_plan_id: PricingPlanId
7880

81+
category_id: IDStr
82+
category_display: str
83+
category_icon: HttpUrl | None = None # NOTE: Placeholder until provide @odeimaiz
84+
terms_of_use_url: HttpUrl | None = None # NOTE: Placeholder until provided @mguidon
85+
7986
created_at: datetime
8087
modified_at: datetime
8188

@@ -86,17 +93,21 @@ def _update_json_schema_extra(schema: JsonDict) -> None:
8693
"examples": [
8794
{
8895
"licensedItemId": "0362b88b-91f8-4b41-867c-35544ad1f7a1",
96+
"key": "Duke",
97+
"version": "1.0.0",
8998
"displayName": "my best model",
9099
"licensedResourceType": f"{LicensedResourceType.VIP_MODEL}",
91-
"licensedResourceData": cast(
92-
JsonDict,
93-
{
94-
"categoryId": "HumanWholeBody",
95-
"categoryDisplay": "Humans",
96-
"source": {**VIP_DETAILS_EXAMPLE, "doi": doi},
97-
},
98-
),
100+
"licensedResources": [
101+
cast(
102+
JsonDict,
103+
{
104+
"source": {**VIP_DETAILS_EXAMPLE, "doi": doi},
105+
},
106+
)
107+
],
99108
"pricingPlanId": "15",
109+
"categoryId": "HumanWholeBody",
110+
"categoryDisplay": "Humans",
100111
"createdAt": "2024-12-12 09:59:26.422140",
101112
"modifiedAt": "2024-12-12 09:59:26.422140",
102113
}
@@ -114,6 +125,8 @@ def from_domain_model(cls, item: LicensedItem) -> Self:
114125
**item.model_dump(
115126
include={
116127
"licensed_item_id",
128+
"key",
129+
"version",
117130
"display_name",
118131
"licensed_resource_type",
119132
"pricing_plan_id",
@@ -122,9 +135,14 @@ def from_domain_model(cls, item: LicensedItem) -> Self:
122135
},
123136
exclude_unset=True,
124137
),
125-
"licensed_resource_data": {
126-
**item.licensed_resource_data,
127-
},
138+
"licensed_resources": [
139+
_ItisVipResourceRestData(**x)
140+
for x in item.array_of_licensed_resource_data
141+
],
142+
"category_id": item.array_of_licensed_resource_data[0]["category_id"],
143+
"category_display": item.array_of_licensed_resource_data[0][
144+
"category_display"
145+
],
128146
}
129147
)
130148

packages/models-library/src/models_library/api_schemas_webserver/licensed_items_checkouts.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ class LicensedItemCheckoutRpcGetPage(NamedTuple):
5656
class LicensedItemCheckoutRestGet(OutputSchema):
5757
licensed_item_checkout_id: LicensedItemCheckoutID
5858
licensed_item_id: LicensedItemID
59+
key: str
60+
version: str
5961
wallet_id: WalletID
6062
user_id: UserID
6163
user_email: LowerCaseEmailStr

packages/models-library/src/models_library/api_schemas_webserver/licensed_items_purchases.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ class LicensedItemPurchaseGet(OutputSchema):
1818
licensed_item_purchase_id: LicensedItemPurchaseID
1919
product_name: ProductName
2020
licensed_item_id: LicensedItemID
21+
key: str
22+
version: str
2123
wallet_id: WalletID
2224
pricing_unit_cost_id: PricingUnitCostId
2325
pricing_unit_cost: Decimal

packages/models-library/src/models_library/licenses.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,11 @@ class LicensedResourcePatchDB(BaseModel):
112112

113113
class LicensedItem(BaseModel):
114114
licensed_item_id: LicensedItemID
115+
key: str
116+
version: str
115117
display_name: str
116-
licensed_resource_name: str
117118
licensed_resource_type: LicensedResourceType
118-
licensed_resource_data: dict[str, Any]
119+
array_of_licensed_resource_data: list[dict[str, Any]]
119120
pricing_plan_id: PricingPlanId
120121
created_at: datetime
121122
modified_at: datetime
@@ -127,17 +128,20 @@ def _update_json_schema_extra(schema: JsonDict) -> None:
127128
"examples": [
128129
{
129130
"licensed_item_id": "0362b88b-91f8-4b41-867c-35544ad1f7a1",
131+
"key": "Duke",
132+
"version": "1.0.0",
130133
"display_name": "my best model",
131-
"licensed_resource_name": "best-model",
132134
"licensed_resource_type": f"{LicensedResourceType.VIP_MODEL}",
133-
"licensed_resource_data": cast(
134-
JsonDict,
135-
{
136-
"category_id": "HumanWholeBody",
137-
"category_display": "Humans",
138-
"source": VIP_DETAILS_EXAMPLE,
139-
},
140-
),
135+
"array_of_licensed_resource_data": [
136+
cast(
137+
JsonDict,
138+
{
139+
"category_id": "HumanWholeBody",
140+
"category_display": "Humans",
141+
"source": VIP_DETAILS_EXAMPLE,
142+
},
143+
)
144+
],
141145
"pricing_plan_id": "15",
142146
"created_at": "2024-12-12 09:59:26.422140",
143147
"modified_at": "2024-12-12 09:59:26.422140",

services/web/server/src/simcore_service_webserver/licenses/_licensed_items_checkouts_service.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ async def list_licensed_items_checkouts_for_wallet(
6060
LicensedItemCheckoutGet.model_construct(
6161
licensed_item_checkout_id=checkout_item.licensed_item_checkout_id,
6262
licensed_item_id=checkout_item.licensed_item_id,
63+
key=checkout_item.key,
64+
version=checkout_item.version,
6365
wallet_id=checkout_item.wallet_id,
6466
user_id=checkout_item.user_id,
6567
user_email=checkout_item.user_email,
@@ -100,6 +102,8 @@ async def get_licensed_item_checkout(
100102
return LicensedItemCheckoutGet.model_construct(
101103
licensed_item_checkout_id=checkout_item.licensed_item_checkout_id,
102104
licensed_item_id=checkout_item.licensed_item_id,
105+
key=checkout_item.key,
106+
version=checkout_item.version,
103107
wallet_id=checkout_item.wallet_id,
104108
user_id=checkout_item.user_id,
105109
user_email=checkout_item.user_email,
@@ -153,6 +157,8 @@ async def checkout_licensed_item_for_wallet(
153157
return LicensedItemCheckoutGet.model_construct(
154158
licensed_item_checkout_id=licensed_item_get.licensed_item_checkout_id,
155159
licensed_item_id=licensed_item_get.licensed_item_id,
160+
key=licensed_item_get.key,
161+
version=licensed_item_get.version,
156162
wallet_id=licensed_item_get.wallet_id,
157163
user_id=licensed_item_get.user_id,
158164
user_email=licensed_item_get.user_email,
@@ -199,6 +205,8 @@ async def release_licensed_item_for_wallet(
199205
return LicensedItemCheckoutGet.model_construct(
200206
licensed_item_checkout_id=licensed_item_get.licensed_item_checkout_id,
201207
licensed_item_id=licensed_item_get.licensed_item_id,
208+
key=licensed_item_get.key,
209+
version=licensed_item_get.version,
202210
wallet_id=licensed_item_get.wallet_id,
203211
user_id=licensed_item_get.user_id,
204212
user_email=licensed_item_get.user_email,

services/web/server/src/simcore_service_webserver/licenses/_licensed_items_purchases_service.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ async def list_licensed_items_purchases(
5858
licensed_item_purchase_id=item.licensed_item_purchase_id,
5959
product_name=item.product_name,
6060
licensed_item_id=item.licensed_item_id,
61+
key=item.key,
62+
version=item.version,
6163
wallet_id=item.wallet_id,
6264
pricing_unit_cost_id=item.pricing_unit_cost_id,
6365
pricing_unit_cost=item.pricing_unit_cost,
@@ -102,6 +104,8 @@ async def get_licensed_item_purchase(
102104
licensed_item_purchase_id=licensed_item_get.licensed_item_purchase_id,
103105
product_name=licensed_item_get.product_name,
104106
licensed_item_id=licensed_item_get.licensed_item_id,
107+
key=licensed_item_get.key,
108+
version=licensed_item_get.version,
105109
wallet_id=licensed_item_get.wallet_id,
106110
pricing_unit_cost_id=licensed_item_get.pricing_unit_cost_id,
107111
pricing_unit_cost=licensed_item_get.pricing_unit_cost,

0 commit comments

Comments
 (0)