lingo: allow regie's slug in AddItemBasket regie_id parameter (#13541)

This commit is contained in:
Jean-Baptiste Jaillet 2016-11-10 20:22:09 +01:00 committed by Frédéric Péters
parent f32c3a937f
commit 8e948a6ab3
2 changed files with 24 additions and 1 deletions

View File

@ -131,7 +131,13 @@ class AddBasketItemApiView(View):
item.user = user
if request.GET.get('regie_id'):
item.regie = Regie.objects.get(id=request.GET.get('regie_id'))
try:
item.regie = Regie.objects.get(slug=request.GET.get('regie_id'))
except Regie.DoesNotExist:
try:
item.regie = Regie.objects.get(id=int(request.GET.get('regie_id')))
except (ValueError, Regie.DoesNotExist):
return HttpResponseBadRequest('Unknown regie')
else:
try:
item.regie = Regie.objects.get(is_default=True)

View File

@ -195,6 +195,23 @@ def test_add_amount_to_basket(key, regie, user):
assert BasketItem.objects.filter(amount=Decimal('22.24')).exists()
assert BasketItem.objects.filter(amount=Decimal('22.24'))[0].regie_id == regie.id
url = '%s?email=%s&regie_id=%s' % (
reverse('api-add-basket-item'), user_email, regie.slug)
data['extra'] = {'amount': '13.67'}
url = sign_url(url, settings.LINGO_API_SIGN_KEY)
resp = client.post(url, json.dumps(data), content_type='application/json')
assert resp.status_code == 200
assert json.loads(resp.content)['result'] == 'success'
assert BasketItem.objects.filter(amount=Decimal('13.67')).exists()
assert BasketItem.objects.filter(amount=Decimal('13.67'))[0].regie_id == regie.id
url = '%s?email=%s&orig=wcs&regie_id=%s' % (reverse('api-add-basket-item'), user_email, 'scarecrow')
url = sign_url(url, key)
resp = client.post(url, json.dumps(data), content_type='application/json')
assert resp.status_code == 400
assert resp.content == 'Unknown regie'
def test_cancel_basket_item(key, regie, user):
user_email = 'foo@example.com'
User.objects.get_or_create(email=user_email)