diff options
| author | Adam Zapletal <adamzap@gmail.com> | 2025-09-13 21:01:38 -0500 |
|---|---|---|
| committer | Saptak Sengupta <saptak013@gmail.com> | 2025-09-25 00:18:50 +0530 |
| commit | fa886d667d5e88bb0c06866b251acc03a4c97311 (patch) | |
| tree | d61fb8c1d2f09c540477b4e353dce6515d17aa77 /fundraising | |
| parent | c4ec1cd97882bfdf7a76b9264f5fd94336cef12a (diff) | |
Add top `CorporateMember`s to `docs` sidebar
This was requested by the fundraising working group.
I abstracted the top `CorporateMember` display from the `releases` app
sidebar into a new inclusion tag called `top_corporate_members` and
included it in its original place as well as in the `docs` sidebar as
requested.
Uploaded images for `CorporateMember`s may not display in local
development environments do to the way media files paths work with
subdomains.
Diffstat (limited to 'fundraising')
| -rw-r--r-- | fundraising/templatetags/fundraising_extras.py | 7 | ||||
| -rw-r--r-- | fundraising/tests/test_templatetags.py | 76 |
2 files changed, 82 insertions, 1 deletions
diff --git a/fundraising/templatetags/fundraising_extras.py b/fundraising/templatetags/fundraising_extras.py index 55b3ecf2..2d78ef9e 100644 --- a/fundraising/templatetags/fundraising_extras.py +++ b/fundraising/templatetags/fundraising_extras.py @@ -111,3 +111,10 @@ def display_django_heroes(): "display_logo_amount": int(LEADERSHIP_LEVEL_AMOUNT), "corporate_membership_amounts": CORPORATE_MEMBERSHIP_AMOUNTS, } + + +@register.inclusion_tag("fundraising/includes/top_corporate_members.html") +def top_corporate_members(): + members = CorporateMember.objects.by_membership_level() + + return {"members": members["diamond"] + members["platinum"]} diff --git a/fundraising/tests/test_templatetags.py b/fundraising/tests/test_templatetags.py index 0cf46024..42118779 100644 --- a/fundraising/tests/test_templatetags.py +++ b/fundraising/tests/test_templatetags.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta +from datetime import date, datetime, timedelta from decimal import Decimal from django.test import TestCase @@ -17,6 +17,7 @@ from ..models import ( from ..templatetags.fundraising_extras import ( display_django_heroes, donation_form_with_heart, + top_corporate_members, ) @@ -93,3 +94,76 @@ class TestDisplayDjangoHeroes(TestCase): response = display_django_heroes() self.assertEqual(response["heroes"], [hero2, hero3]) + + +class TestTopCorporateMembers(TestCase): + past_date = date(2000, 1, 1) + future_date = date(3000, 1, 1) + + @classmethod + def setUpTestData(cls): + member_1 = CorporateMember.objects.create(membership_level=1) + member_2 = CorporateMember.objects.create(membership_level=2) + member_3 = CorporateMember.objects.create(membership_level=3) + member_4 = CorporateMember.objects.create(membership_level=4) + member_5 = CorporateMember.objects.create(membership_level=5) + + member_1.invoice_set.create(amount=5, expiration_date=cls.future_date) + member_2.invoice_set.create(amount=5, expiration_date=cls.future_date) + member_3.invoice_set.create(amount=5, expiration_date=cls.future_date) + member_4.invoice_set.create(amount=5, expiration_date=cls.past_date) + member_5.invoice_set.create(amount=5, expiration_date=cls.past_date) + + def test_with_no_platinum_or_diamond_members(self): + members = top_corporate_members()["members"] + + self.assertEqual(members, []) + + def test_with_diamond_members_and_no_platinum_members(self): + member_1 = CorporateMember.objects.create(membership_level=5) + member_2 = CorporateMember.objects.create(membership_level=5) + member_3 = CorporateMember.objects.create(membership_level=5) + + member_1.invoice_set.create(amount=4, expiration_date=self.future_date) + member_2.invoice_set.create(amount=8, expiration_date=self.future_date) + member_3.invoice_set.create(amount=2, expiration_date=self.future_date) + + members = top_corporate_members()["members"] + + self.assertEqual(members, [member_2, member_1, member_3]) + + def test_with_platinum_members_and_no_diamond_members(self): + member_1 = CorporateMember.objects.create(membership_level=4) + member_2 = CorporateMember.objects.create(membership_level=4) + member_3 = CorporateMember.objects.create(membership_level=4) + + member_1.invoice_set.create(amount=4, expiration_date=self.future_date) + member_2.invoice_set.create(amount=8, expiration_date=self.future_date) + member_3.invoice_set.create(amount=2, expiration_date=self.future_date) + + members = top_corporate_members()["members"] + + self.assertEqual(members, [member_2, member_1, member_3]) + + def test_with_diamond_members_and_platinum_members(self): + member_1 = CorporateMember.objects.create(membership_level=4) + member_2 = CorporateMember.objects.create(membership_level=4) + member_3 = CorporateMember.objects.create(membership_level=4) + + member_4 = CorporateMember.objects.create(membership_level=5) + member_5 = CorporateMember.objects.create(membership_level=5) + member_6 = CorporateMember.objects.create(membership_level=5) + + member_1.invoice_set.create(amount=4, expiration_date=self.future_date) + member_2.invoice_set.create(amount=8, expiration_date=self.future_date) + member_3.invoice_set.create(amount=2, expiration_date=self.future_date) + + member_4.invoice_set.create(amount=4, expiration_date=self.future_date) + member_5.invoice_set.create(amount=8, expiration_date=self.future_date) + member_6.invoice_set.create(amount=2, expiration_date=self.future_date) + + members = top_corporate_members()["members"] + + expected = [member_5, member_4, member_6, member_2, member_1, member_3] + + self.assertEqual(members, expected) |
