diff --git a/www/web/warppay/urls.py b/www/web/warppay/urls.py index 20cb31b82c5ac1cab92b35c2292ced4c14a9ddc5..15e284c5e2cfd4a98e4e2f5bd93b7a893102b9f5 100644 --- a/www/web/warppay/urls.py +++ b/www/web/warppay/urls.py @@ -8,7 +8,7 @@ urlpatterns = [ url(r'^api/products/$', views.product_list), url(r'^api/categories/$', views.category_list), # url(r'^api/gen_token/$', views.gen_token), - url(r'^api/transaction/(?P<user_id>\w+)/$', views.transaction), + url(r'^api/transactions/(?P<user_id>\w+)/$', views.multiple_transaction), url(r'^api/products/(?P<prod_id>\w+)/barcode/$', views.addBarcode), ] diff --git a/www/web/warppay/views.py b/www/web/warppay/views.py index 50ded6866f8f6c169d564d1c05d7b3d6f5d83411..886fcb0c0bace26218048298bd4b4ddbef5383b0 100644 --- a/www/web/warppay/views.py +++ b/www/web/warppay/views.py @@ -115,13 +115,12 @@ def user_list(request, user_id = 0): return Response(serializer.data, status=state) return Response() - @api_view(['PUT']) @authentication_classes((TokenAuthentication,)) @permission_classes((IsAuthenticated,)) -def transaction(request, user_id=None): +def multiple_transaction(request, user_id=None): if request.method == 'PUT': - if 'trans_type' not in request.data or not user_id: + if not user_id: return Response(status=status.HTTP_406_NOT_ACCEPTABLE) try: @@ -129,38 +128,54 @@ def transaction(request, user_id=None): except ObjectDoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) + transactions = [] + products = [] + for transact in request.data: + if 'trans_type' not in transact: + return Response(status=status.HTTP_406_NOT_ACCEPTABLE) + t = Transaction() - t.type = int(request.data['trans_type']) + t.type = int(transact['trans_type']) if t.type == 1: - if 'amount' not in request.data or ('amount' in request.data and float(request.data['amount'] < 0)): + if 'amount' not in transact or ('amount' in transact and float(transact['amount'] < 0)): return Response(status=status.HTTP_406_NOT_ACCEPTABLE) - if 'cash_paid' in request.data: - t.cash_paid = bool(request.data['cash_paid']) + if 'cash_paid' in transact: + t.cash_paid = bool(transact['cash_paid']) else: t.cash_paid = True - t.amount = float(request.data['amount']) - u.credit +=t.amount + t.amount = float(transact['amount']) + u.credit += t.amount elif t.type == 2: try: - product = Product.objects.get(id=request.data['product']['id']) + product = Product.objects.get(id=transact['product']['id']) t.product = product - if 'cash_paid' in request.data: - t.cash_paid = bool(request.data['cash_paid']) + if 'cash_paid' in transact: + t.cash_paid = bool(transact['cash_paid']) t.amount = product.price_vk if not t.cash_paid: u.credit -= t.amount product.stock_count -= 1 - product.save() + products.append(product) except: return Response(status=status.HTTP_406_NOT_ACCEPTABLE) else: return Response(status=status.HTTP_406_NOT_ACCEPTABLE) + transactions.append(t) + + for t in transactions: t.save() - u.save() - return Response() + print(t) + for p in products: + p.save() + print(p) + + u.save() + print(u) + return Response() + def sync_users(): for ldapuser in LdapUser.objects.all():