mirror of
https://github.com/pretix/pretix.git
synced 2026-05-04 15:04:03 +00:00
Refactor cancelling positions and orders in the data model (#1088)
- [x] Data model - [x] display in order view in backend - [x] review all usages of OrderPositions.objects - [x] review all usages of order.positions - [x] review all other model usages - [x] review plugins - [x] plugins backwards-compatible API? - [x] decide on way forward for REST API - [x] need to cancel fees - [x] tests - [ ] plugins - [ ] gdpr - [ ] reports - [x] docs
This commit is contained in:
@@ -53,6 +53,14 @@ def env():
|
||||
price=Decimal("14"),
|
||||
attendee_name_parts={'full_name': "Peter", "_scheme": "full"}
|
||||
)
|
||||
OrderPosition.objects.create(
|
||||
order=o,
|
||||
item=ticket,
|
||||
variation=None,
|
||||
price=Decimal("14"),
|
||||
canceled=True,
|
||||
attendee_name_parts={'full_name': "Lukas Gelöscht", "_scheme": "full"}
|
||||
)
|
||||
return event, user, o, ticket
|
||||
|
||||
|
||||
@@ -125,6 +133,7 @@ def test_order_detail(client, env):
|
||||
response = client.get('/control/event/dummy/dummy/orders/FOO/')
|
||||
assert 'Early-bird' in response.rendered_content
|
||||
assert 'Peter' in response.rendered_content
|
||||
assert 'Lukas Gelöscht' in response.rendered_content
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@@ -256,23 +265,15 @@ def test_order_deny(client, env):
|
||||
# (Old status, new status, success expected)
|
||||
(Order.STATUS_CANCELED, Order.STATUS_PAID, False),
|
||||
(Order.STATUS_CANCELED, Order.STATUS_PENDING, False),
|
||||
(Order.STATUS_CANCELED, Order.STATUS_REFUNDED, False),
|
||||
(Order.STATUS_CANCELED, Order.STATUS_EXPIRED, False),
|
||||
|
||||
(Order.STATUS_PAID, Order.STATUS_PENDING, False),
|
||||
(Order.STATUS_PAID, Order.STATUS_CANCELED, False),
|
||||
(Order.STATUS_PAID, Order.STATUS_REFUNDED, False),
|
||||
(Order.STATUS_PAID, Order.STATUS_CANCELED, True),
|
||||
(Order.STATUS_PAID, Order.STATUS_EXPIRED, False),
|
||||
|
||||
(Order.STATUS_PENDING, Order.STATUS_CANCELED, True),
|
||||
(Order.STATUS_PENDING, Order.STATUS_PAID, True),
|
||||
(Order.STATUS_PENDING, Order.STATUS_REFUNDED, False),
|
||||
(Order.STATUS_PENDING, Order.STATUS_EXPIRED, True),
|
||||
|
||||
(Order.STATUS_REFUNDED, Order.STATUS_CANCELED, False),
|
||||
(Order.STATUS_REFUNDED, Order.STATUS_PAID, False),
|
||||
(Order.STATUS_REFUNDED, Order.STATUS_PENDING, False),
|
||||
(Order.STATUS_REFUNDED, Order.STATUS_EXPIRED, False),
|
||||
])
|
||||
def test_order_transition(client, env, process):
|
||||
o = Order.objects.get(id=env[2].id)
|
||||
@@ -784,6 +785,11 @@ class OrderChangeTests(SoupTest):
|
||||
order=self.order, item=self.ticket, variation=None,
|
||||
price=Decimal("23.00"), attendee_name_parts={'full_name': "Dieter", "_scheme": "full"}
|
||||
)
|
||||
self.op3 = OrderPosition.objects.create(
|
||||
order=self.order, item=self.ticket, variation=None,
|
||||
price=Decimal("23.00"), attendee_name_parts={'full_name': "Lukas", "_scheme": "full"},
|
||||
canceled=True
|
||||
)
|
||||
self.quota = self.event.quotas.create(name="All", size=100)
|
||||
self.quota.items.add(self.ticket)
|
||||
self.quota.items.add(self.shirt)
|
||||
@@ -793,6 +799,14 @@ class OrderChangeTests(SoupTest):
|
||||
t.limit_events.add(self.event)
|
||||
self.client.login(email='dummy@dummy.dummy', password='dummy')
|
||||
|
||||
def test_do_not_show_canceled(self):
|
||||
r = self.client.get('/control/event/{}/{}/orders/{}/change'.format(
|
||||
self.event.organizer.slug, self.event.slug, self.order.code
|
||||
))
|
||||
assert self.op1.secret[:5] in r.rendered_content
|
||||
assert self.op2.secret[:5] in r.rendered_content
|
||||
assert self.op3.secret[:5] not in r.rendered_content
|
||||
|
||||
def test_change_item_success(self):
|
||||
self.client.post('/control/event/{}/{}/orders/{}/change'.format(
|
||||
self.event.organizer.slug, self.event.slug, self.order.code
|
||||
@@ -1137,7 +1151,7 @@ def test_process_refund_mark_refunded(client, env):
|
||||
r.refresh_from_db()
|
||||
assert r.state == OrderRefund.REFUND_STATE_DONE
|
||||
env[2].refresh_from_db()
|
||||
assert env[2].status == Order.STATUS_REFUNDED
|
||||
assert env[2].status == Order.STATUS_CANCELED
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@@ -1240,7 +1254,7 @@ def test_refund_paid_order_fully_mark_as_refunded(client, env):
|
||||
assert r.provider == "manual"
|
||||
assert r.state == OrderRefund.REFUND_STATE_DONE
|
||||
assert r.amount == Decimal('14.00')
|
||||
assert env[2].status == Order.STATUS_REFUNDED
|
||||
assert env[2].status == Order.STATUS_CANCELED
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
|
||||
Reference in New Issue
Block a user