X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/72fe2a679f27d81c92c65cf005ebf13fae7c7e34..24f09a9815fff57bde69683b12980480fd8dc6a2:/src/club/payu/models.py diff --git a/src/club/payu/models.py b/src/club/payu/models.py index 6ed329da8..b025bfc72 100644 --- a/src/club/payu/models.py +++ b/src/club/payu/models.py @@ -8,7 +8,7 @@ from django.contrib.sites.models import Site from django.db import models from django.urls import reverse from django.utils.timezone import now -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from . import POSS @@ -36,7 +36,10 @@ class Order(models.Model): ('COMPLETED', _('Completed')), ('CANCELED', _('Canceled')), ('REJECTED', _('Rejected')), + + ('ERR-INVALID_TOKEN', _('Invalid token')), ]) + created_at = models.DateTimeField(null=True, blank=True, auto_now_add=True) completed_at = models.DateTimeField(null=True, blank=True) class Meta: @@ -74,6 +77,9 @@ class Order(models.Model): def get_notify_url(self): raise NotImplementedError + def get_thanks_url(self): + raise NotImplementedError + def status_updated(self): pass @@ -82,6 +88,11 @@ class Order(models.Model): def get_pos(self): return POSS[self.pos_id] + def get_continue_url(self): + return "https://{}{}".format( + Site.objects.get_current().domain, + self.get_thanks_url()) + def get_representation(self, token=None): rep = { "notifyUrl": self.get_notify_url(), @@ -127,12 +138,18 @@ class Order(models.Model): # else? if 'orderId' not in response: - raise ValueError("Expecting dict with `orderId` key, got: %s" % response) - self.order_id = response['orderId'] - self.save() + code = response.get('status', {}).get('codeLiteral', '') + if code: + self.status = 'ERR-' + str(code) + self.save() + self.status_updated() + else: + raise ValueError("Expecting dict with `orderId` key, got: %s" % response) + else: + self.order_id = response['orderId'] + self.save() - - return response.get('redirectUri', self.schedule.get_thanks_url()) + return response.get('redirectUri', self.get_thanks_url()) class Notification(models.Model):