Fix 85420602 and add tests

This commit is contained in:
Raphael Michel
2018-06-01 13:35:04 +02:00
parent 0f5af4b990
commit 11ff81f852
2 changed files with 40 additions and 3 deletions

View File

@@ -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']

View File

@@ -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')