From a7e0aecf6e3d63ed4010475bebc2a0aeba2231f5 Mon Sep 17 00:00:00 2001 From: "Tibor Bossanyi (Freelancer)" Date: Sat, 15 Jan 2022 17:08:39 +0100 Subject: [PATCH] BO 1.35+2 webhook payment --- .../aitrainer_backoffice/models/customer.py | 1 - .../aitrainer_backoffice/models/product.py | 18 ++++--- .../aitrainer_backoffice/views.py | 49 ++++++++++++++++++- 3 files changed, 60 insertions(+), 8 deletions(-) diff --git a/aitrainer_backoffice/aitrainer_backoffice/models/customer.py b/aitrainer_backoffice/aitrainer_backoffice/models/customer.py index d79c1a8..57a741d 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/models/customer.py +++ b/aitrainer_backoffice/aitrainer_backoffice/models/customer.py @@ -2,7 +2,6 @@ from django.db import models from django.utils.translation import ugettext_lazy as _ from ..models.sports import Sport -from ..models.exercises import Exercises class Customer(models.Model): customer_id = models.BigAutoField(primary_key=True) diff --git a/aitrainer_backoffice/aitrainer_backoffice/models/product.py b/aitrainer_backoffice/aitrainer_backoffice/models/product.py index cfb1138..d50c330 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/models/product.py +++ b/aitrainer_backoffice/aitrainer_backoffice/models/product.py @@ -2,12 +2,12 @@ from django.db import models from django.utils.translation import ugettext_lazy as _ -class ProductTypes(models.TextChoices): - SUBS = "subscription" - IN_APP_CURR = "in-app-currency" - - class Product(models.Model): + class ProductTypes(models.TextChoices): + SUBS = "subscription" + IN_APP_CURR = "in-app-currency" + WEB = "web" + product_id = models.AutoField(primary_key=True) name = models.CharField(max_length=50) description = models.TextField(max_length=1000, blank=True, null=True) @@ -18,11 +18,13 @@ class Product(models.Model): product_id_android = models.CharField(max_length=50, blank=True, null=True) price_ios = models.DecimalField(max_length=12, decimal_places=2, max_digits=12, blank=True) price_android = models.DecimalField(max_length=12, decimal_places=2, max_digits=12, blank=True) + price_web = models.DecimalField(max_length=12, decimal_places=2, max_digits=12, blank=True) class Meta: db_table = 'product' verbose_name = _("Product") verbose_name_plural = _("Products") + app_label = 'controlling' def __str__(self): return self.name @@ -35,8 +37,12 @@ class Purchase(models.Model): date_add = models.DateField(blank=True, null=True) purchase_sum = models.DecimalField(decimal_places=2, max_digits=7) currency = models.CharField(max_length=3) + expiring = models.DateField(blank=True, null=True) class Meta: db_table = 'purchase' verbose_name = _("Purchase") - verbose_name_plural = _("Purchases") \ No newline at end of file + verbose_name_plural = _("Purchases") + + def __str__(self): + return self.name \ No newline at end of file diff --git a/aitrainer_backoffice/aitrainer_backoffice/views.py b/aitrainer_backoffice/aitrainer_backoffice/views.py index f665316..496b064 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/views.py +++ b/aitrainer_backoffice/aitrainer_backoffice/views.py @@ -1,8 +1,55 @@ from django.http import HttpResponse from django.views.decorators.csrf import csrf_exempt +import json +import os +from datetime import date, timedelta, datetime +import pytz + +SETTING = os.environ['WORKOUTTEST_SETTING'] +if SETTING == "PROD": + from aitrainer_backoffice.aitrainer_backoffice.models.customer import Customer + from aitrainer_backoffice.aitrainer_backoffice.models.product import Product, Purchase +else: + from aitrainer_backoffice.models.customer import Customer + from aitrainer_backoffice.models.product import Product, Purchase + @csrf_exempt def webhook(request): if request.method == 'POST': print("Data received from Webhook is: ", request.body) - return HttpResponse("Webhook received!") \ No newline at end of file + json_object = json.loads(request.body) + + if ( json_object['status'] == True ): + qs_customer = Customer.objects.filter(email = json_object['email']) + if ( qs_customer.count() > 0): + qs_product = Product.objects.filter(price_web = json_object['price']) + + today = date.today() + cet = pytz.timezone('Europe/Budapest') + + customer_id = qs_customer[0].customer_id + + for product in qs_product: + + + expiring = date.today() + timedelta(days=1095) + if ( json_object['price'] == 26970): + qs_purchase = Purchase.objects.filter(customer_id = customer_id, product_id =product.pk) + if ( qs_purchase.count() < 2 ): + expiring = date.today() + timedelta(days=30) + + print("insert purchase: " + product.name + " exp: " + str(expiring)) + purchase = Purchase( + customer_id = qs_customer[0].customer_id, + product_id = product.pk, + date_add = datetime.now(tz=cet), + purchase_sum = product.price_web, + currency = "HUF", + expiring = expiring + ) + purchase.save() + + + + return HttpResponse("OK") \ No newline at end of file