mpt-extension-sdk 5.9.2__tar.gz → 5.10.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-5.9.2 → mpt_extension_sdk-5.10.0}/PKG-INFO +1 -1
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/djapp/conf/default.py +3 -9
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/events/producers.py +14 -23
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/pyproject.toml +1 -1
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/.gitignore +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/LICENSE +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/README.md +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/airtable/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/airtable/wrap_http_error.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/constants.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/core/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/core/events/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/core/events/dataclasses.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/core/events/registry.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/core/extension.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/core/security.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/core/utils.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/flows/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/flows/context.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/flows/pipeline.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/key_vault/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/key_vault/base.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/mpt_http/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/mpt_http/base.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/mpt_http/mpt.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/mpt_http/utils.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/mpt_http/wrap_http_error.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/commands/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/commands/django.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/commands/run.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/djapp/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/djapp/apps.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/djapp/conf/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/djapp/conf/urls.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/djapp/management/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/djapp/management/commands/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/djapp/management/commands/consume_events.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/djapp/middleware.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/errors.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/events/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/events/dispatcher.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/events/utils.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/initializer.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/logging.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/master.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/swoext.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/tracer.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/utils.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/workers.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/swo_rql/__init__.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/swo_rql/constants.py +0 -0
- {mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/swo_rql/query_builder.py +0 -0
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/djapp/conf/default.py
RENAMED
|
@@ -127,18 +127,14 @@ STATIC_URL = "static/"
|
|
|
127
127
|
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
|
128
128
|
|
|
129
129
|
# OpenTelemetry configuration
|
|
130
|
-
APPLICATIONINSIGHTS_CONNECTION_STRING = os.getenv(
|
|
131
|
-
"APPLICATIONINSIGHTS_CONNECTION_STRING", ""
|
|
132
|
-
)
|
|
130
|
+
APPLICATIONINSIGHTS_CONNECTION_STRING = os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING", "")
|
|
133
131
|
USE_APPLICATIONINSIGHTS = bool(APPLICATIONINSIGHTS_CONNECTION_STRING)
|
|
134
132
|
|
|
135
133
|
|
|
136
134
|
if USE_APPLICATIONINSIGHTS: # pragma: no cover
|
|
137
135
|
logger_provider = LoggerProvider()
|
|
138
136
|
set_logger_provider(logger_provider)
|
|
139
|
-
exporter = AzureMonitorLogExporter(
|
|
140
|
-
connection_string=APPLICATIONINSIGHTS_CONNECTION_STRING
|
|
141
|
-
)
|
|
137
|
+
exporter = AzureMonitorLogExporter(connection_string=APPLICATIONINSIGHTS_CONNECTION_STRING)
|
|
142
138
|
logger_provider.add_log_record_processor(BatchLogRecordProcessor(exporter))
|
|
143
139
|
|
|
144
140
|
LOGGING = {
|
|
@@ -210,9 +206,7 @@ MPT_PRODUCTS_IDS = os.getenv("MPT_PRODUCTS_IDS", "PRD-1111-1111")
|
|
|
210
206
|
MPT_PORTAL_BASE_URL = os.getenv("MPT_PORTAL_BASE_URL", "https://portal.s1.show")
|
|
211
207
|
MPT_KEY_VAULT_NAME = os.getenv("MPT_KEY_VAULT_NAME", "mpt-key-vault")
|
|
212
208
|
|
|
213
|
-
MPT_ORDERS_API_POLLING_INTERVAL_SECS = int(
|
|
214
|
-
os.getenv("MPT_ORDERS_API_POLLING_INTERVAL_SECS", "120")
|
|
215
|
-
)
|
|
209
|
+
MPT_ORDERS_API_POLLING_INTERVAL_SECS = int(os.getenv("MPT_ORDERS_API_POLLING_INTERVAL_SECS", "120"))
|
|
216
210
|
|
|
217
211
|
EXTENSION_CONFIG = {
|
|
218
212
|
"DUE_DATE_DAYS": "30",
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/events/producers.py
RENAMED
|
@@ -7,6 +7,7 @@ from http import HTTPStatus
|
|
|
7
7
|
|
|
8
8
|
import requests
|
|
9
9
|
from django.conf import settings
|
|
10
|
+
from django.utils.module_loading import import_string
|
|
10
11
|
|
|
11
12
|
from mpt_extension_sdk.core.events.dataclasses import Event
|
|
12
13
|
from mpt_extension_sdk.core.utils import setup_client
|
|
@@ -17,6 +18,7 @@ logger = logging.getLogger(__name__)
|
|
|
17
18
|
|
|
18
19
|
class EventProducer(ABC):
|
|
19
20
|
"""Abstract base class for event producers."""
|
|
21
|
+
|
|
20
22
|
def __init__(self, dispatcher):
|
|
21
23
|
self.dispatcher = dispatcher
|
|
22
24
|
self.running_event = threading.Event()
|
|
@@ -50,16 +52,14 @@ class EventProducer(ABC):
|
|
|
50
52
|
def produce_events(self):
|
|
51
53
|
"""Produce events."""
|
|
52
54
|
|
|
53
|
-
@abstractmethod
|
|
54
|
-
def produce_events_with_context(self):
|
|
55
|
-
"""Produce events with context."""
|
|
56
|
-
|
|
57
55
|
|
|
58
56
|
class OrderEventProducer(EventProducer):
|
|
59
57
|
"""Order event producer."""
|
|
58
|
+
|
|
60
59
|
def __init__(self, dispatcher):
|
|
61
60
|
super().__init__(dispatcher)
|
|
62
61
|
self.client = setup_client()
|
|
62
|
+
self.setup_contexts = import_string(settings.MPT_SETUP_CONTEXTS_FUNC)
|
|
63
63
|
|
|
64
64
|
def produce_events(self):
|
|
65
65
|
"""Produce order events."""
|
|
@@ -67,27 +67,20 @@ class OrderEventProducer(EventProducer):
|
|
|
67
67
|
with self.sleep(settings.MPT_ORDERS_API_POLLING_INTERVAL_SECS):
|
|
68
68
|
orders = self.get_processing_orders()
|
|
69
69
|
logger.info("%d orders found for processing...", len(orders))
|
|
70
|
-
|
|
71
|
-
self.dispatcher.dispatch_event(Event(order["id"], "orders", order))
|
|
70
|
+
self.dispatch_events(orders)
|
|
72
71
|
|
|
73
|
-
def
|
|
74
|
-
"""
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
orders, contexts = self.filter_and_enrich(self.client, orders)
|
|
79
|
-
logger.info("%d orders found for processing...", len(orders))
|
|
80
|
-
for order, context in zip(orders, contexts, strict=False):
|
|
81
|
-
self.dispatcher.dispatch_event(
|
|
82
|
-
Event(order["id"], "orders", order, context)
|
|
83
|
-
)
|
|
72
|
+
def dispatch_events(self, orders):
|
|
73
|
+
"""Dispatch events for the given orders."""
|
|
74
|
+
contexts = self.setup_contexts(self.client, orders)
|
|
75
|
+
for context in contexts:
|
|
76
|
+
self.dispatcher.dispatch_event(Event(context.order_id, "orders", context))
|
|
84
77
|
|
|
85
78
|
def get_processing_orders(self):
|
|
86
79
|
"""Get processing orders."""
|
|
87
80
|
orders = []
|
|
88
|
-
rql_query = RQLQuery().agreement.product.id.in_(
|
|
89
|
-
|
|
90
|
-
)
|
|
81
|
+
rql_query = RQLQuery().agreement.product.id.in_(settings.MPT_PRODUCTS_IDS) & RQLQuery(
|
|
82
|
+
status="processing"
|
|
83
|
+
)
|
|
91
84
|
url = (
|
|
92
85
|
f"/commerce/orders?{rql_query}&select=audit,parameters,lines,subscriptions,"
|
|
93
86
|
f"subscriptions.lines,agreement,buyer,seller&order=audit.created.at"
|
|
@@ -105,9 +98,7 @@ class OrderEventProducer(EventProducer):
|
|
|
105
98
|
page = response.json()
|
|
106
99
|
orders.extend(page["data"])
|
|
107
100
|
else:
|
|
108
|
-
logger.warning(
|
|
109
|
-
"Order API error: %s %s", response.status_code, response.content
|
|
110
|
-
)
|
|
101
|
+
logger.warning("Order API error: %s %s", response.status_code, response.content)
|
|
111
102
|
return []
|
|
112
103
|
offset += limit
|
|
113
104
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/airtable/wrap_http_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/core/events/__init__.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/core/events/dataclasses.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.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
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/key_vault/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/mpt_http/wrap_http_error.py
RENAMED
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/commands/__init__.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/commands/django.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/commands/run.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/djapp/__init__.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/djapp/apps.py
RENAMED
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.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-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/djapp/middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/events/__init__.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/events/dispatcher.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/runtime/events/utils.py
RENAMED
|
File without changes
|
{mpt_extension_sdk-5.9.2 → mpt_extension_sdk-5.10.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-5.9.2 → mpt_extension_sdk-5.10.0}/mpt_extension_sdk/swo_rql/query_builder.py
RENAMED
|
File without changes
|