Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

abstract_models.py 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import re
  2. from django.db import models
  3. class AbstractOrderTransaction(models.Model):
  4. # We track link with basket for audit
  5. basket = models.ForeignKey('basket.Basket', null=True)
  6. # Note we don't use a foreign key as the order hasn't been created
  7. # by the time the transaction takes place
  8. order_number = models.CharField(max_length=128, db_index=True)
  9. # The 'method' of the transaction - one of 'auth', 'pre', 'cancel', ...
  10. method = models.CharField(max_length=12)
  11. amount = models.DecimalField(decimal_places=2, max_digits=12)
  12. merchant_ref = models.CharField(max_length=128)
  13. # Response fields
  14. datacash_ref = models.CharField(max_length=128)
  15. auth_code = models.CharField(max_length=128, blank=True, null=True)
  16. status = models.PositiveIntegerField()
  17. reason = models.CharField(max_length=255)
  18. # Store full XML for debugging purposes
  19. request_xml = models.TextField()
  20. response_xml = models.TextField()
  21. date = models.DateTimeField(auto_now_add=True)
  22. class Meta:
  23. abstract = True
  24. def save(self, *args, **kwargs):
  25. if not self.pk:
  26. reg_ex = re.compile(r'\d{12}')
  27. self.request_xml = reg_ex.sub('XXXXXXXXXXXX', self.request_xml)
  28. super(AbstractOrderTransaction, self).save(*args, **kwargs)