bgneal@33: """ bgneal@33: Models for the donations application. bgneal@33: """ bgneal@33: from django.db import models bgneal@33: from django.contrib import auth bgneal@33: bgneal@33: class Donation(models.Model): bgneal@33: """Model to represent a donation to the website.""" bgneal@33: bgneal@33: user = models.ForeignKey(auth.models.User, null=True, blank=True) bgneal@33: is_anonymous = models.BooleanField() bgneal@33: test_ipn = models.BooleanField(default=False, verbose_name="Test IPN") bgneal@33: txn_id = models.CharField(max_length=20, verbose_name="Txn ID") bgneal@33: txn_type = models.CharField(max_length=64) bgneal@33: first_name = models.CharField(max_length=64, blank=True) bgneal@33: last_name = models.CharField(max_length=64, blank=True) bgneal@33: payer_email = models.EmailField(max_length=127, blank=True) bgneal@33: payer_id = models.CharField(max_length=13, blank=True, verbose_name="Payer ID") bgneal@33: mc_fee = models.DecimalField(max_digits=8, decimal_places=2, verbose_name="Fee") bgneal@33: mc_gross = models.DecimalField(max_digits=8, decimal_places=2, verbose_name="Gross") bgneal@33: memo = models.TextField(blank=True) bgneal@33: payer_status = models.CharField(max_length=10, blank=True) bgneal@33: payment_date = models.DateTimeField() bgneal@33: bgneal@33: class Meta: bgneal@33: ordering = ('-payment_date', ) bgneal@33: bgneal@33: def __unicode__(self): bgneal@33: if self.user: bgneal@33: return u'%s from %s' % (self.mc_gross, self.user.username) bgneal@33: return u'%s from %s %s' % (self.mc_gross, self.first_name, self.last_name) bgneal@33: bgneal@33: def save(self, *args, **kwargs): bgneal@33: if self.user is None: bgneal@33: self.is_anonymous = True bgneal@33: super(Donation, self).save(*args, **kwargs)