X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/3b0dd45f80df3512dabe75506e635a0f6e3a87e3..d18f17e7a8bdcafd4ef341b1cbe90c5c275a9dcb:/src/club/payu/models.py?ds=sidebyside

diff --git a/src/club/payu/models.py b/src/club/payu/models.py
index 6305e2ed5..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,6 +36,8 @@ 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)
@@ -75,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
 
@@ -83,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(),
@@ -128,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):