Fixed small b ugs in the order view

This commit is contained in:
Raphael Michel
2015-10-19 15:33:27 +02:00
parent 80235fce26
commit 3b0e72440a
2 changed files with 86 additions and 3 deletions

View File

@@ -248,6 +248,7 @@ class OrderExtend(OrderView):
if self.form.is_valid():
if oldvalue > now():
messages.success(self.request, _('The payment term has been changed.'))
self.form.save()
else:
try:
@@ -300,10 +301,10 @@ class OrderGo(EventPermissionRequiredMixin, View):
permission = 'can_view_orders'
def get(self, request, *args, **kwargs):
code = request.GET.get("code")
code = request.GET.get("code", "").upper().strip()
try:
if code.startswith(request.event.slug):
code = code[len(request.event.slug):]
if code.startswith(request.event.slug.upper()):
code = code[len(request.event.slug.upper()):]
order = Order.objects.current.get(code=code, event=request.event)
return redirect('control:event.order', event=request.event.slug, organizer=request.event.organizer.slug,
code=order.code)

View File

@@ -272,3 +272,85 @@ def test_order_download_success(client, env, mocker):
assert response.status_code == 302
assert tickets.generate.assert_not_called()
assert dl == response['Location']
@pytest.mark.django_db
def test_order_extend_not_pending(client, env):
o = Order.objects.current.get(identity=env[2].identity)
o.status = Order.STATUS_PAID
o.save()
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.get('/control/event/dummy/dummy/orders/FOO/extend', follow=True)
assert 'alert-danger' in response.rendered_content
response = client.post('/control/event/dummy/dummy/orders/FOO/extend', follow=True)
assert 'alert-danger' in response.rendered_content
@pytest.mark.django_db
def test_order_extend_not_expired(client, env):
q = Quota.objects.create(event=env[0], size=0)
q.items.add(env[3])
newdate = (now() + timedelta(days=20)).strftime("%Y-%m-%d %H:%M:%S")
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.post('/control/event/dummy/dummy/orders/FOO/extend', {
'expires': newdate
}, follow=True)
assert 'alert-success' in response.rendered_content
o = Order.objects.current.get(identity=env[2].identity)
assert o.expires.strftime("%Y-%m-%d %H:%M:%S") == newdate
@pytest.mark.django_db
def test_order_extend_expired_quota_left(client, env):
o = Order.objects.current.get(identity=env[2].identity)
o.expires = now() - timedelta(days=5)
o.save()
q = Quota.objects.create(event=env[0], size=3)
q.items.add(env[3])
newdate = (now() + timedelta(days=20)).strftime("%Y-%m-%d %H:%M:%S")
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.post('/control/event/dummy/dummy/orders/FOO/extend', {
'expires': newdate
}, follow=True)
assert 'alert-success' in response.rendered_content
o = Order.objects.current.get(identity=env[2].identity)
assert o.expires.strftime("%Y-%m-%d %H:%M:%S") == newdate
@pytest.mark.django_db
def test_order_extend_expired_quota_empty(client, env):
o = Order.objects.current.get(identity=env[2].identity)
o.expires = now() - timedelta(days=5)
olddate = o.expires
o.save()
q = Quota.objects.create(event=env[0], size=0)
q.items.add(env[3])
newdate = (now() + timedelta(days=20)).strftime("%Y-%m-%d %H:%M:%S")
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.post('/control/event/dummy/dummy/orders/FOO/extend', {
'expires': newdate
}, follow=True)
assert 'alert-danger' in response.rendered_content
o = Order.objects.current.get(identity=env[2].identity)
assert o.expires.strftime("%Y-%m-%d %H:%M:%S") == olddate.strftime("%Y-%m-%d %H:%M:%S")
@pytest.mark.django_db
def test_order_with_slug(client, env):
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.get('/control/event/dummy/dummy/orders/go?code=DUMMYFOO')
assert response['Location'].endswith('/control/event/dummy/dummy/orders/FOO/')
@pytest.mark.django_db
def test_order_go_found(client, env):
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.get('/control/event/dummy/dummy/orders/go?code=FOO')
assert response['Location'].endswith('/control/event/dummy/dummy/orders/FOO/')
@pytest.mark.django_db
def test_order_go_not_found(client, env):
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.get('/control/event/dummy/dummy/orders/go?code=BAR')
assert response['Location'].endswith('/control/event/dummy/dummy/orders/')