mirror of
https://github.com/pretix/pretix.git
synced 2025-12-14 13:32:28 +00:00
Compare commits
2 Commits
fix-datasy
...
order-impo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
345a284df0 | ||
|
|
c0f4646684 |
@@ -391,7 +391,7 @@ class OutboundSyncProvider:
|
|||||||
def sync_order(self, order):
|
def sync_order(self, order):
|
||||||
if not self.should_sync_order(order):
|
if not self.should_sync_order(order):
|
||||||
logger.debug("Skipping order %r", order)
|
logger.debug("Skipping order %r", order)
|
||||||
return {}
|
return
|
||||||
|
|
||||||
logger.debug("Syncing order %r", order)
|
logger.debug("Syncing order %r", order)
|
||||||
positions = list(
|
positions = list(
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ from pretix.base.modelimport import DataImportError, ImportColumn, parse_csv
|
|||||||
from pretix.base.modelimport_orders import get_order_import_columns
|
from pretix.base.modelimport_orders import get_order_import_columns
|
||||||
from pretix.base.modelimport_vouchers import get_voucher_import_columns
|
from pretix.base.modelimport_vouchers import get_voucher_import_columns
|
||||||
from pretix.base.models import (
|
from pretix.base.models import (
|
||||||
CachedFile, Event, InvoiceAddress, Order, OrderPayment, OrderPosition,
|
CachedFile, Event, InvoiceAddress, LogEntry, Order, OrderPayment,
|
||||||
User, Voucher,
|
OrderPosition, User, Voucher,
|
||||||
)
|
)
|
||||||
from pretix.base.models.orders import Transaction
|
from pretix.base.models.orders import Transaction
|
||||||
from pretix.base.services.invoices import generate_invoice, invoice_qualified
|
from pretix.base.services.invoices import generate_invoice, invoice_qualified
|
||||||
@@ -175,6 +175,7 @@ def import_orders(event: Event, fileid: str, settings: dict, locale: str, user,
|
|||||||
raise DataImportError(_('The seat you selected has already been taken. Please select a different seat.'))
|
raise DataImportError(_('The seat you selected has already been taken. Please select a different seat.'))
|
||||||
|
|
||||||
save_transactions = []
|
save_transactions = []
|
||||||
|
save_logentries = []
|
||||||
for o in orders:
|
for o in orders:
|
||||||
o.total = sum([c.price for c in o._positions]) # currently no support for fees
|
o.total = sum([c.price for c in o._positions]) # currently no support for fees
|
||||||
if o.total == Decimal('0.00'):
|
if o.total == Decimal('0.00'):
|
||||||
@@ -211,13 +212,15 @@ def import_orders(event: Event, fileid: str, settings: dict, locale: str, user,
|
|||||||
o._address.save()
|
o._address.save()
|
||||||
for c in cols:
|
for c in cols:
|
||||||
c.save(o)
|
c.save(o)
|
||||||
o.log_action(
|
save_logentries.append(o.log_action(
|
||||||
'pretix.event.order.placed',
|
'pretix.event.order.placed',
|
||||||
user=user,
|
user=user,
|
||||||
data={'source': 'import'}
|
data={'source': 'import'},
|
||||||
)
|
save=False,
|
||||||
|
))
|
||||||
save_transactions += o.create_transactions(is_new=True, fees=[], positions=o._positions, save=False)
|
save_transactions += o.create_transactions(is_new=True, fees=[], positions=o._positions, save=False)
|
||||||
Transaction.objects.bulk_create(save_transactions)
|
Transaction.objects.bulk_create(save_transactions)
|
||||||
|
LogEntry.bulk_create_and_postprocess(save_logentries)
|
||||||
|
|
||||||
for o in orders:
|
for o in orders:
|
||||||
with language(o.locale, event.settings.region):
|
with language(o.locale, event.settings.region):
|
||||||
@@ -286,13 +289,16 @@ def import_vouchers(event: Event, fileid: str, settings: dict, locale: str, user
|
|||||||
raise DataImportError(
|
raise DataImportError(
|
||||||
_('The seat you selected has already been taken. Please select a different seat.'))
|
_('The seat you selected has already been taken. Please select a different seat.'))
|
||||||
|
|
||||||
|
save_logentries = []
|
||||||
for v in vouchers:
|
for v in vouchers:
|
||||||
v.save()
|
v.save()
|
||||||
v.log_action(
|
save_logentries.append(v.log_action(
|
||||||
'pretix.voucher.added',
|
'pretix.voucher.added',
|
||||||
user=user,
|
user=user,
|
||||||
data={'source': 'import'}
|
data={'source': 'import'},
|
||||||
)
|
save=False,
|
||||||
|
))
|
||||||
for c in cols:
|
for c in cols:
|
||||||
c.save(v)
|
c.save(v)
|
||||||
|
LogEntry.bulk_create_and_postprocess(save_logentries)
|
||||||
cf.delete()
|
cf.delete()
|
||||||
|
|||||||
@@ -2825,7 +2825,7 @@ class OrderChangeManager:
|
|||||||
def _check_complete_cancel(self):
|
def _check_complete_cancel(self):
|
||||||
current = self.order.positions.count()
|
current = self.order.positions.count()
|
||||||
cancels = sum([
|
cancels = sum([
|
||||||
1 + o.position.addons.filter(canceled=False).count() for o in self._operations if isinstance(o, self.CancelOperation)
|
1 + o.position.addons.count() for o in self._operations if isinstance(o, self.CancelOperation)
|
||||||
]) + len([
|
]) + len([
|
||||||
o for o in self._operations if isinstance(o, self.SplitOperation)
|
o for o in self._operations if isinstance(o, self.SplitOperation)
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -327,26 +327,6 @@ def test_enqueue_order_twice(event):
|
|||||||
SimpleOrderSync.enqueue_order(order, 'testcase_2nd')
|
SimpleOrderSync.enqueue_order(order, 'testcase_2nd')
|
||||||
|
|
||||||
|
|
||||||
class DoNothingSync(SimpleOrderSync):
|
|
||||||
|
|
||||||
def should_sync_order(self, order):
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
|
||||||
def test_should_not_sync(event):
|
|
||||||
_register_with_fake_plugin_name(datasync_providers, DoNothingSync, 'testplugin')
|
|
||||||
|
|
||||||
DoNothingSync.fake_api_client = FakeSyncAPI()
|
|
||||||
|
|
||||||
for order in event.orders.order_by("code").all():
|
|
||||||
DoNothingSync.enqueue_order(order, 'testcase')
|
|
||||||
|
|
||||||
sync_all()
|
|
||||||
|
|
||||||
assert DoNothingSync.fake_api_client.fake_database == {}
|
|
||||||
|
|
||||||
|
|
||||||
StaticMappingWithAssociations = namedtuple('StaticMappingWithAssociations', (
|
StaticMappingWithAssociations = namedtuple('StaticMappingWithAssociations', (
|
||||||
'id', 'pretix_model', 'external_object_type', 'pretix_id_field', 'external_id_field', 'property_mappings', 'association_mappings'
|
'id', 'pretix_model', 'external_object_type', 'pretix_id_field', 'external_id_field', 'property_mappings', 'association_mappings'
|
||||||
))
|
))
|
||||||
|
|||||||
Reference in New Issue
Block a user