mpt-extension-sdk 4.4.0__tar.gz → 4.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/PKG-INFO +4 -2
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/mpt_http/mpt.py +63 -9
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/pyproject.toml +1 -1
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/LICENSE +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/README.md +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/airtable/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/airtable/wrap_http_error.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/constants.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/core/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/core/events/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/core/events/dataclasses.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/core/events/registry.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/core/extension.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/core/security.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/core/utils.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/flows/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/flows/context.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/flows/pipeline.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/key_vault/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/key_vault/base.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/mpt_http/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/mpt_http/base.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/mpt_http/utils.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/mpt_http/wrap_http_error.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/commands/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/commands/django.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/commands/run.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/djapp/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/djapp/apps.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/djapp/conf/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/djapp/conf/default.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/djapp/conf/urls.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/djapp/management/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/djapp/management/commands/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/djapp/management/commands/consume_events.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/djapp/middleware.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/events/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/events/dispatcher.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/events/producers.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/events/utils.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/initializer.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/logging.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/master.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/swoext.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/tracer.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/utils.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/workers.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/swo_rql/__init__.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/swo_rql/constants.py +0 -0
- {mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/swo_rql/query_builder.py +0 -0
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: mpt-extension-sdk
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.5.0
|
|
4
4
|
Summary: Extensions SDK for SoftwareONE Marketplace Platform
|
|
5
5
|
License: Apache-2.0
|
|
6
|
+
License-File: LICENSE
|
|
6
7
|
Author: SoftwareOne AG
|
|
7
8
|
Requires-Python: >=3.12,<4
|
|
8
9
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
9
10
|
Classifier: Programming Language :: Python :: 3
|
|
10
11
|
Classifier: Programming Language :: Python :: 3.12
|
|
11
12
|
Classifier: Programming Language :: Python :: 3.13
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
12
14
|
Requires-Dist: azure-identity (>=1.21.0,<2.0.0)
|
|
13
15
|
Requires-Dist: azure-keyvault-secrets (>=4.9.0,<5.0.0)
|
|
14
16
|
Requires-Dist: azure-monitor-opentelemetry-exporter (==1.0.0b25)
|
|
@@ -102,7 +102,15 @@ def set_processing_template(mpt_client, order_id, template):
|
|
|
102
102
|
|
|
103
103
|
|
|
104
104
|
@wrap_mpt_http_error
|
|
105
|
-
def create_asset(mpt_client,
|
|
105
|
+
def create_asset(mpt_client, asset):
|
|
106
|
+
"""Create a new asset."""
|
|
107
|
+
response = mpt_client.post("/commerce/assets", json=asset)
|
|
108
|
+
response.raise_for_status()
|
|
109
|
+
return response.json()
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
@wrap_mpt_http_error
|
|
113
|
+
def create_order_asset(mpt_client, order_id, asset):
|
|
106
114
|
"""Create a new asset for an order."""
|
|
107
115
|
response = mpt_client.post(f"/commerce/orders/{order_id}/assets", json=asset)
|
|
108
116
|
response.raise_for_status()
|
|
@@ -110,13 +118,57 @@ def create_asset(mpt_client, order_id, asset):
|
|
|
110
118
|
|
|
111
119
|
|
|
112
120
|
@wrap_mpt_http_error
|
|
113
|
-
def update_asset(mpt_client,
|
|
121
|
+
def update_asset(mpt_client, asset_id, **kwargs):
|
|
122
|
+
"""Update an asset."""
|
|
123
|
+
response = mpt_client.put(f"/commerce/assets/{asset_id}", json=kwargs)
|
|
124
|
+
response.raise_for_status()
|
|
125
|
+
return response.json()
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
@wrap_mpt_http_error
|
|
129
|
+
def update_order_asset(mpt_client, order_id, asset_id, **kwargs):
|
|
114
130
|
"""Update an order asset."""
|
|
115
131
|
response = mpt_client.put(f"/commerce/orders/{order_id}/assets/{asset_id}", json=kwargs)
|
|
116
132
|
response.raise_for_status()
|
|
117
133
|
return response.json()
|
|
118
134
|
|
|
119
135
|
|
|
136
|
+
@wrap_mpt_http_error
|
|
137
|
+
def get_agreement_asset_by_external_id(mpt_client, agreement_id, asset_external_id):
|
|
138
|
+
"""Retrieve an agreement asset by external ID."""
|
|
139
|
+
response = mpt_client.get(
|
|
140
|
+
f"/commerce/assets?eq(externalIds.vendor,{asset_external_id})"
|
|
141
|
+
f"&eq(agreement.id,{agreement_id})"
|
|
142
|
+
f"&eq(status,Active)"
|
|
143
|
+
f"&select=agreement.id&limit=1"
|
|
144
|
+
)
|
|
145
|
+
response.raise_for_status()
|
|
146
|
+
assets = response.json()
|
|
147
|
+
return assets["data"][0] if assets["data"] else None
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
@wrap_mpt_http_error
|
|
151
|
+
def get_asset_by_id(mpt_client, asset_id):
|
|
152
|
+
"""Get an asset by ID."""
|
|
153
|
+
response = mpt_client.get(f"/commerce/assets/{asset_id}")
|
|
154
|
+
response.raise_for_status()
|
|
155
|
+
return response.json()
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
@wrap_mpt_http_error
|
|
159
|
+
def get_order_asset_by_external_id(mpt_client, order_id, asset_external_id):
|
|
160
|
+
"""Retrieve an order asset by its external ID."""
|
|
161
|
+
response = mpt_client.get(
|
|
162
|
+
f"/commerce/orders/{order_id}/assets?eq(externalIds.vendor,{asset_external_id})&limit=1",
|
|
163
|
+
)
|
|
164
|
+
response.raise_for_status()
|
|
165
|
+
assets = response.json()
|
|
166
|
+
if assets["$meta"]["pagination"]["total"] == 1:
|
|
167
|
+
return assets["data"][0]
|
|
168
|
+
|
|
169
|
+
return None
|
|
170
|
+
|
|
171
|
+
|
|
120
172
|
@wrap_mpt_http_error
|
|
121
173
|
def create_subscription(mpt_client, order_id, subscription):
|
|
122
174
|
response = mpt_client.post(
|
|
@@ -277,21 +329,23 @@ def get_product_items_by_period(
|
|
|
277
329
|
|
|
278
330
|
|
|
279
331
|
def get_agreements_by_ids(mpt_client, ids):
|
|
332
|
+
"""Retrieve agreements by their IDs."""
|
|
333
|
+
ids_str = ",".join(ids)
|
|
280
334
|
rql_query = (
|
|
281
|
-
f"and(in(id,({
|
|
282
|
-
"&select=lines,parameters,subscriptions,product,listing"
|
|
335
|
+
f"and(in(id,({ids_str})),eq(status,Active))"
|
|
336
|
+
"&select=assets,lines,parameters,subscriptions,product,listing"
|
|
283
337
|
)
|
|
284
338
|
return get_agreements_by_query(mpt_client, rql_query)
|
|
285
339
|
|
|
286
340
|
|
|
287
|
-
def get_all_agreements(
|
|
288
|
-
|
|
289
|
-
)
|
|
290
|
-
product_condition = f"in(product.id,({
|
|
341
|
+
def get_all_agreements(mpt_client):
|
|
342
|
+
"""Retrieve all active agreements for specific products."""
|
|
343
|
+
product_ids_str = ",".join(settings.MPT_PRODUCTS_IDS)
|
|
344
|
+
product_condition = f"in(product.id,({product_ids_str}))"
|
|
291
345
|
|
|
292
346
|
return get_agreements_by_query(
|
|
293
347
|
mpt_client,
|
|
294
|
-
f"and(eq(status,Active),{product_condition})&select=lines,parameters,subscriptions,product,listing",
|
|
348
|
+
f"and(eq(status,Active),{product_condition})&select=assets,lines,parameters,subscriptions,product,listing",
|
|
295
349
|
)
|
|
296
350
|
|
|
297
351
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/airtable/wrap_http_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/core/events/__init__.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/core/events/dataclasses.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/core/events/registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/mpt_http/wrap_http_error.py
RENAMED
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/commands/__init__.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/commands/django.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/commands/run.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/djapp/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/djapp/conf/__init__.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/djapp/conf/default.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/djapp/conf/urls.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/djapp/middleware.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/events/__init__.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/events/dispatcher.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/events/producers.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/events/utils.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/runtime/initializer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-4.4.0 → mpt_extension_sdk-4.5.0}/mpt_extension_sdk/swo_rql/query_builder.py
RENAMED
|
File without changes
|