mirror of
https://github.com/pretix/pretix.git
synced 2026-05-17 17:14:04 +00:00
Fixups
This commit is contained in:
@@ -83,9 +83,10 @@ def sync_all():
|
|||||||
.prefetch_related("order__event")
|
.prefetch_related("order__event")
|
||||||
.filter(Q(not_before__isnull=True) | Q(not_before__lt=datetime.now()))[:1000]
|
.filter(Q(not_before__isnull=True) | Q(not_before__lt=datetime.now()))[:1000]
|
||||||
)
|
)
|
||||||
grouped = groupby(sorted(queue, key=lambda q: (q.sync_target, q.order.event)), lambda q: (q.sync_target, q.order.event))
|
grouped = groupby(sorted(queue, key=lambda q: (q.sync_provider, q.order.event)), lambda q: (q.sync_provider, q.order.event))
|
||||||
for (target, event), queued_orders in grouped:
|
for (target, event), queued_orders in grouped:
|
||||||
target_cls = sync_targets.get(identifier=target)
|
target_cls, meta = sync_targets.get(identifier=target, active_in=event)
|
||||||
|
# TODO: what should i do if the sync plugin got deactivated in the meantime?
|
||||||
sync_event_to_target(event, target_cls, queued_orders)
|
sync_event_to_target(event, target_cls, queued_orders)
|
||||||
|
|
||||||
|
|
||||||
@@ -110,9 +111,7 @@ class OutboundSyncProvider:
|
|||||||
return self
|
return self
|
||||||
|
|
||||||
def __exit__(self, exc_type, exc_val, exc_tb):
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||||
if not exc_type:
|
self.close()
|
||||||
self.do_after_event()
|
|
||||||
self.do_finally()
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@property
|
@property
|
||||||
@@ -127,19 +126,13 @@ class OutboundSyncProvider:
|
|||||||
triggered_by=triggered_by,
|
triggered_by=triggered_by,
|
||||||
not_before=not_before)
|
not_before=not_before)
|
||||||
|
|
||||||
def do_after_event(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def do_finally(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def next_retry_date(self, sq):
|
def next_retry_date(self, sq):
|
||||||
return datetime.now() + timedelta(days=1)
|
return datetime.now() + timedelta(days=1)
|
||||||
|
|
||||||
def sync_queued_orders(self, queued_orders):
|
def sync_queued_orders(self, queued_orders):
|
||||||
for sq in queued_orders:
|
for sq in queued_orders:
|
||||||
try:
|
try:
|
||||||
self.sync_order(sq.order)
|
mapped_objects = self.sync_order(sq.order)
|
||||||
except SyncConfigError as e:
|
except SyncConfigError as e:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
f"Could not sync order {sq.order.code} to {self.__name__} (config error)",
|
f"Could not sync order {sq.order.code} to {self.__name__} (config error)",
|
||||||
@@ -159,7 +152,7 @@ class OutboundSyncProvider:
|
|||||||
sq.failed_attempts += 1
|
sq.failed_attempts += 1
|
||||||
sq.not_before = self.next_retry_date(sq)
|
sq.not_before = self.next_retry_date(sq)
|
||||||
logger.exception(
|
logger.exception(
|
||||||
f"Could not sync order {sq.order.code} to {self.__name__} (transient error, attempt #{sq.failed_attempts})"
|
f"Could not sync order {sq.order.code} to {type(self).__name__} (transient error, attempt #{sq.failed_attempts})"
|
||||||
)
|
)
|
||||||
if sq.failed_attempts >= self.max_attempts:
|
if sq.failed_attempts >= self.max_attempts:
|
||||||
sentry_sdk.capture_exception(e)
|
sentry_sdk.capture_exception(e)
|
||||||
@@ -174,6 +167,9 @@ class OutboundSyncProvider:
|
|||||||
else:
|
else:
|
||||||
sq.save()
|
sq.save()
|
||||||
else:
|
else:
|
||||||
|
sq.order.log_action(
|
||||||
|
"pretix.event.order.data_sync.success", {"objects": mapped_objects}
|
||||||
|
)
|
||||||
sq.delete()
|
sq.delete()
|
||||||
|
|
||||||
def order_valid_for_sync(self, order):
|
def order_valid_for_sync(self, order):
|
||||||
@@ -234,7 +230,7 @@ class OutboundSyncProvider:
|
|||||||
logger.debug("Skipping order (not valid for sync)", order)
|
logger.debug("Skipping order (not valid for sync)", order)
|
||||||
return
|
return
|
||||||
|
|
||||||
logger.debug("Syncing order", order)
|
logger.debug("Syncing order %r", order)
|
||||||
positions = list(
|
positions = list(
|
||||||
order.all_positions.filter(item__admission=True)
|
order.all_positions.filter(item__admission=True)
|
||||||
.prefetch_related("answers", "answers__question")
|
.prefetch_related("answers", "answers__question")
|
||||||
@@ -258,8 +254,18 @@ class OutboundSyncProvider:
|
|||||||
]
|
]
|
||||||
else:
|
else:
|
||||||
raise SyncConfigError("Invalid pretix model '{}'".format(mapping.pretix_model))
|
raise SyncConfigError("Invalid pretix model '{}'".format(mapping.pretix_model))
|
||||||
order.log_action(
|
self.finalize_sync_order(order)
|
||||||
"pretix.event.order.data_sync.success", {"objects": mapped_objects}
|
return mapped_objects
|
||||||
)
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
Called after sync_object has been called successfully for all objects of a specific order. Can be used for saving
|
||||||
|
bulk information per order.
|
||||||
|
"""
|
||||||
|
def finalize_sync_order(self, order):
|
||||||
|
pass
|
||||||
|
|
||||||
|
"""
|
||||||
|
Called after all orders of an event have been synced. Can be used for clean-up tasks (closing a session etc).
|
||||||
|
"""
|
||||||
|
def close(self):
|
||||||
|
pass
|
||||||
|
|||||||
Reference in New Issue
Block a user