summaryrefslogtreecommitdiff
path: root/members
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2016-03-12 09:37:21 -0500
committerTim Graham <timograham@gmail.com>2016-03-12 09:37:21 -0500
commit6f2b0cf70af558c915eb441e05e7e373970fba7a (patch)
tree1f52b65da716cd2b51cde71fee5168c13d0ca78f /members
parent90daced00e8feeebff59337afb3dcd7533b60ae0 (diff)
Added an "Is paid" column to corporate member changelist.
Diffstat (limited to 'members')
-rw-r--r--members/admin.py1
-rw-r--r--members/models.py6
-rw-r--r--members/test_models.py11
3 files changed, 18 insertions, 0 deletions
diff --git a/members/admin.py b/members/admin.py
index a7f190f2..da583815 100644
--- a/members/admin.py
+++ b/members/admin.py
@@ -29,6 +29,7 @@ class CorporateMemberAdmin(admin.ModelAdmin):
'display_name',
'membership_expires',
'_is_invoiced',
+ '_is_paid',
'contact_email',
'membership_level',
]
diff --git a/members/models.py b/members/models.py
index 79e96b88..5066ee07 100644
--- a/members/models.py
+++ b/members/models.py
@@ -68,6 +68,12 @@ class CorporateMember(models.Model):
_is_invoiced.boolean = True
is_invoiced = property(_is_invoiced)
+ def _is_paid(self):
+ invoices = self.invoice_set.all()
+ return bool(invoices) and all(invoice.paid_date is not None for invoice in invoices)
+ _is_paid.boolean = True
+ is_paid = property(_is_paid)
+
def get_expiry_date(self):
expiry_date = None
for invoice in self.invoice_set.all():
diff --git a/members/test_models.py b/members/test_models.py
index f9489cd0..219250de 100644
--- a/members/test_models.py
+++ b/members/test_models.py
@@ -58,6 +58,17 @@ class CorporateMemberTests(TestCase):
invoice.save()
self.assertEqual(self.member.is_invoiced, True)
+ def test_is_paid(self):
+ # No invoices == not paid.
+ self.assertEqual(self.member.is_paid, False)
+ # Invoice but no paid_date == not paid.
+ invoice = self.member.invoice_set.create(amount=500)
+ self.assertEqual(self.member.is_paid, False)
+ # Invoice with a paid_date == paid.
+ invoice.paid_date = date.today()
+ invoice.save()
+ self.assertEqual(self.member.is_paid, True)
+
def test_get_expiry_date(self):
today = date.today()
tomorrow = today + timedelta(days=1)