forked from CGM_Public/pretix_original
Fix 85420602 and add tests
This commit is contained in:
@@ -61,17 +61,17 @@ class MarkPaidForm(forms.Form):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.instance = kwargs.pop("instance")
|
self.instance = kwargs.pop("instance")
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
quota_fail = (
|
quota_success = (
|
||||||
self.instance.status == Order.STATUS_PENDING or
|
self.instance.status == Order.STATUS_PENDING or
|
||||||
self.instance._is_still_available(now(), count_waitinglist=False) is True
|
self.instance._is_still_available(now(), count_waitinglist=False) is True
|
||||||
)
|
)
|
||||||
term_last = self.instance.payment_term_last
|
term_last = self.instance.payment_term_last
|
||||||
term_fail = (
|
term_success = (
|
||||||
(not term_last or term_last >= now()) and
|
(not term_last or term_last >= now()) and
|
||||||
(self.instance.status == Order.STATUS_PENDING or self.instance.event.settings.get(
|
(self.instance.status == Order.STATUS_PENDING or self.instance.event.settings.get(
|
||||||
'payment_term_accept_late'))
|
'payment_term_accept_late'))
|
||||||
)
|
)
|
||||||
if quota_fail or term_fail:
|
if quota_success and term_success:
|
||||||
del self.fields['force']
|
del self.fields['force']
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -519,6 +519,43 @@ def test_order_mark_paid_overdue_quota_blocked_by_waiting_list(client, env):
|
|||||||
assert o.status == Order.STATUS_PAID
|
assert o.status == Order.STATUS_PAID
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_order_mark_paid_blocked(client, env):
|
||||||
|
o = Order.objects.get(id=env[2].id)
|
||||||
|
o.status = Order.STATUS_EXPIRED
|
||||||
|
o.expires = now() - timedelta(days=5)
|
||||||
|
o.save()
|
||||||
|
q = Quota.objects.create(event=env[0], size=0)
|
||||||
|
q.items.add(env[3])
|
||||||
|
|
||||||
|
client.login(email='dummy@dummy.dummy', password='dummy')
|
||||||
|
response = client.post('/control/event/dummy/dummy/orders/FOO/transition', {
|
||||||
|
'status': 'p'
|
||||||
|
}, follow=True)
|
||||||
|
assert 'alert-danger' in response.rendered_content
|
||||||
|
o = Order.objects.get(id=env[2].id)
|
||||||
|
assert o.status == Order.STATUS_EXPIRED
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_order_mark_paid_forced(client, env):
|
||||||
|
o = Order.objects.get(id=env[2].id)
|
||||||
|
o.status = Order.STATUS_EXPIRED
|
||||||
|
o.expires = now() - timedelta(days=5)
|
||||||
|
o.save()
|
||||||
|
q = Quota.objects.create(event=env[0], size=0)
|
||||||
|
q.items.add(env[3])
|
||||||
|
|
||||||
|
client.login(email='dummy@dummy.dummy', password='dummy')
|
||||||
|
response = client.post('/control/event/dummy/dummy/orders/FOO/transition', {
|
||||||
|
'status': 'p',
|
||||||
|
'force': 'on'
|
||||||
|
}, follow=True)
|
||||||
|
assert 'alert-success' in response.rendered_content
|
||||||
|
o = Order.objects.get(id=env[2].id)
|
||||||
|
assert o.status == Order.STATUS_PAID
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_order_go_lowercase(client, env):
|
def test_order_go_lowercase(client, env):
|
||||||
client.login(email='dummy@dummy.dummy', password='dummy')
|
client.login(email='dummy@dummy.dummy', password='dummy')
|
||||||
|
|||||||
Reference in New Issue
Block a user