diff --git a/www/web/warppay/admin.py b/www/web/warppay/admin.py index 5f28e7452a7174e0e4d975ec1d5ca8ed9c177a12..2350d9e0f8c50368be8d2e5174c34ccd07d6d2f1 100644 --- a/www/web/warppay/admin.py +++ b/www/web/warppay/admin.py @@ -13,4 +13,8 @@ class ProductAdmin(admin.ModelAdmin): @admin.register(UserCredit) class UserCreditAdmin(admin.ModelAdmin): + pass + +@admin.register(Transaction) +class TransactionAdmin(admin.ModelAdmin): pass \ No newline at end of file diff --git a/www/web/warppay/models.py b/www/web/warppay/models.py index 7fcb1dae5eb45266913469f2233ac37c2a1c2c6b..4f75293b767b54e8f94f91e0787ce9dd57b12af7 100644 --- a/www/web/warppay/models.py +++ b/www/web/warppay/models.py @@ -26,7 +26,7 @@ class ProductSerializer(serializers.ModelSerializer): category = serializers.StringRelatedField() class Meta: model = Product - fields = ['id', 'name', 'price', 'category', 'count'] + fields = ['id', 'name', 'price_vk', 'category', 'stock_count'] class Transaction(models.Model): @@ -36,6 +36,9 @@ class Transaction(models.Model): amount = models.FloatField() cash_paid = models.BooleanField(default=False) + def __str__(self): + return str(self.amount) #self.product.name+" - "+self.amount + class TransactionLog(models.Model): uid = models.CharField(max_length=100) diff --git a/www/web/warppay/urls.py b/www/web/warppay/urls.py index bd60d9d84af78ba051e82eb2f896bd72a9e6b9dd..f576626ffa577a2c650aada5d0a97d5cb0e16683 100644 --- a/www/web/warppay/urls.py +++ b/www/web/warppay/urls.py @@ -7,6 +7,6 @@ urlpatterns = [ url(r'^api/users/(?P<user_id>\w+)/$', views.user_list), url(r'^api/products/$', views.product_list), url(r'^api/gen_token/$', views.gen_token), - url(r'^api/transaction/$', views.transaction), + url(r'^api/transaction/(?P<user_id>\w+)/$', views.transaction), ] diff --git a/www/web/warppay/views.py b/www/web/warppay/views.py index 34cf088baf12d7f17d5d34490c3f90c4db3a9618..e3365b2c5dd29a9128c249718f87d91dbdccf945 100644 --- a/www/web/warppay/views.py +++ b/www/web/warppay/views.py @@ -50,6 +50,7 @@ def user_list(request, user_id = 0): if not user_id: return Response(status=status.HTTP_406_NOT_ACCEPTABLE) try: + print(request.data) user = UserCredit.objects.get(uid=user_id) if "card_id" in request.data: try: @@ -90,27 +91,38 @@ def user_list(request, user_id = 0): @api_view(['PUT']) #@authentication_classes((TokenAuthentication,)) #@permission_classes((IsAuthenticated,)) -def transaction(request): +def transaction(request, user_id=None): if request.method == 'PUT': - if 'type' not in request.data or 'amount' not in request.data or 'uid' not in request.data or ('amount' in request.data and int(request.data['amount'] < 0)): + if 'trans_type' not in request.data or not user_id: return Response(status=status.HTTP_406_NOT_ACCEPTABLE) try: - u = UserCredit.objects.get(uid=str(request.data['uid'])) + u = UserCredit.objects.get(uid=str(user_id)) except ObjectDoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) t = Transaction() - t.type = request.data['type'] - t.amount = float(request.data['amount']) + t.type = int(request.data['trans_type']) - if request.data['type'] == 1: - u.credit +=t.amount - elif request.data['type'] == 2: - #product = models.ForeignKey(Product, on_delete=models.CASCADE, null=True) + if t.type == 1: + if 'amount' not in request.data or ('amount' in request.data and float(request.data['amount'] < 0)): + return Response(status=status.HTTP_406_NOT_ACCEPTABLE) if 'cash_paid' in request.data: t.cash_paid = bool(request.data['cash_paid']) - u.credit -=t.amount + else: + t.cash_paid = True + t.amount = float(request.data['amount']) + u.credit +=t.amount + elif t.type == 2: + try: + product = Product.objects.get(id=request.data['product']['id']) + t.product = product + if 'cash_paid' in request.data: + t.cash_paid = bool(request.data['cash_paid']) + t.amount = product.price_vk + u.credit -= t.amount + except: + return Response(status=status.HTTP_406_NOT_ACCEPTABLE) else: return Response(status=status.HTTP_406_NOT_ACCEPTABLE)