Skip to content

Commit c403b6a

Browse files
feat: Make top_corporate_members more generic
1 parent f16a8dd commit c403b6a

File tree

8 files changed

+56
-81
lines changed

8 files changed

+56
-81
lines changed

djangoproject/templates/aggregator/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,5 +99,5 @@ <h2 class="bullet-icon"><i class="icon icon-rss blue"></i> {{ feedtype.name }}</
9999
{% endblock %}
100100

101101
{% block content-related-extra %}
102-
{% top_and_gold_corporate_members %}
102+
{% top_corporate_members "diamond" "platinum" "gold" header="Diamond, Platinum and Gold Members" %}
103103
{% endblock %}

djangoproject/templates/flatpages/foundation.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ <h1>{{ flatpage.title }}</h1>
1010
{% endblock %}
1111

1212
{% block content-related-extra %}
13-
{% top_and_gold_corporate_members %}
13+
{% top_corporate_members "diamond" "platinum" "gold" header="Diamond, Platinum and Gold Members" %}
1414
{% endblock %}

djangoproject/templates/fundraising/includes/top_and_gold_corporate_members.html

Lines changed: 0 additions & 22 deletions
This file was deleted.

djangoproject/templates/fundraising/includes/top_corporate_members.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{% if members %}
22
<div class="corporate-members">
3-
<h3>Diamond and Platinum Members</h3>
3+
<h3>{{header}}</h3>
44
{% for obj in members %}
55
<div class="clearfix">
66
<div class="member-logo">

djangoproject/templates/releases/download.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ <h2 id="unsupported-versions">Unsupported previous releases</h2>
279279
<div role="complementary">
280280
<h2 class="visuallyhidden" id="aside-header">Additional Information</h2>
281281

282-
{% top_corporate_members %}
282+
{% top_corporate_members "diamond" "platinum" header="Diamond and Platinum Members" %}
283283

284284
{% donation_snippet %}
285285

docs/templates/docs/doc.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,6 @@ <h3 id="links-wrapper-header">{% trans "Download:" %}</h3>
223223
</section>
224224
{% endblock links-wrapper %}
225225

226-
{% top_corporate_members %}
226+
{% top_corporate_members "diamond" "platinum" header="Diamond and Platinum Members" %}
227227
</div>
228228
{% endblock content-related %}

fundraising/templatetags/fundraising_extras.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -114,14 +114,16 @@ def display_django_heroes():
114114

115115

116116
@register.inclusion_tag("fundraising/includes/top_corporate_members.html")
117-
def top_corporate_members():
118-
members = CorporateMember.objects.by_membership_level()
117+
def top_corporate_members(*levels, header=None):
118+
"""
119+
Usage:
120+
{% top_corporate_members "diamond" "platinum" header="Diamond and Platinum Members" %}
121+
"""
119122

120-
return {"members": members["diamond"] + members["platinum"]}
123+
all_members: dict = CorporateMember.objects.by_membership_level()
121124

125+
members = []
126+
for level in levels:
127+
members.extend(all_members.get(level, []))
122128

123-
@register.inclusion_tag("fundraising/includes/top_and_gold_corporate_members.html")
124-
def top_and_gold_corporate_members():
125-
members = CorporateMember.objects.by_membership_level()
126-
127-
return {"members": members["diamond"] + members["platinum"] + members["gold"]}
129+
return {"header": header, "members": members}

fundraising/tests/test_templatetags.py

Lines changed: 41 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
from ..templatetags.fundraising_extras import (
1818
display_django_heroes,
1919
donation_form_with_heart,
20-
top_and_gold_corporate_members,
2120
top_corporate_members,
2221
)
2322

@@ -111,12 +110,14 @@ def setUpTestData(cls):
111110

112111
member_1.invoice_set.create(amount=5, expiration_date=cls.future_date)
113112
member_2.invoice_set.create(amount=5, expiration_date=cls.future_date)
114-
member_3.invoice_set.create(amount=5, expiration_date=cls.future_date)
113+
member_3.invoice_set.create(amount=5, expiration_date=cls.past_date)
115114
member_4.invoice_set.create(amount=5, expiration_date=cls.past_date)
116115
member_5.invoice_set.create(amount=5, expiration_date=cls.past_date)
117116

118117
def test_with_no_platinum_or_diamond_members(self):
119-
members = top_corporate_members()["members"]
118+
members = top_corporate_members(
119+
"diamond", "platinum", header="Diamond and Platinum members"
120+
)["members"]
120121

121122
self.assertEqual(members, [])
122123

@@ -129,7 +130,9 @@ def test_with_diamond_members_and_no_platinum_members(self):
129130
member_2.invoice_set.create(amount=8, expiration_date=self.future_date)
130131
member_3.invoice_set.create(amount=2, expiration_date=self.future_date)
131132

132-
members = top_corporate_members()["members"]
133+
members = top_corporate_members(
134+
"diamond", "platinum", header="Diamond and Platinum members"
135+
)["members"]
133136

134137
self.assertEqual(members, [member_2, member_1, member_3])
135138

@@ -142,7 +145,9 @@ def test_with_platinum_members_and_no_diamond_members(self):
142145
member_2.invoice_set.create(amount=8, expiration_date=self.future_date)
143146
member_3.invoice_set.create(amount=2, expiration_date=self.future_date)
144147

145-
members = top_corporate_members()["members"]
148+
members = top_corporate_members(
149+
"diamond", "platinum", header="Diamond and Platinum members"
150+
)["members"]
146151

147152
self.assertEqual(members, [member_2, member_1, member_3])
148153

@@ -163,60 +168,50 @@ def test_with_diamond_members_and_platinum_members(self):
163168
member_5.invoice_set.create(amount=8, expiration_date=self.future_date)
164169
member_6.invoice_set.create(amount=2, expiration_date=self.future_date)
165170

166-
members = top_corporate_members()["members"]
171+
members = top_corporate_members(
172+
"diamond", "platinum", header="Diamond and Platinum members"
173+
)["members"]
167174

168175
expected = [member_5, member_4, member_6, member_2, member_1, member_3]
169176

170177
self.assertEqual(members, expected)
171178

179+
def test_with_diamond_platinum_and_gold_members(self):
180+
member_1 = CorporateMember.objects.create(membership_level=4)
181+
member_2 = CorporateMember.objects.create(membership_level=4)
182+
member_3 = CorporateMember.objects.create(membership_level=4)
172183

173-
class TestTopAndGoldCorporateMembers(TestCase):
174-
past_date = date(2000, 1, 1)
175-
future_date = date(3000, 1, 1)
176-
177-
def test_with_no_gold_members(self):
178-
members = top_and_gold_corporate_members()["members"]
179-
self.assertEqual(members, [])
184+
member_4 = CorporateMember.objects.create(membership_level=5)
185+
member_5 = CorporateMember.objects.create(membership_level=5)
186+
member_6 = CorporateMember.objects.create(membership_level=5)
180187

181-
def test_with_gold_members(self):
182-
member_1 = CorporateMember.objects.create(membership_level=3)
183-
member_2 = CorporateMember.objects.create(membership_level=3)
184-
member_3 = CorporateMember.objects.create(membership_level=3)
188+
member_7 = CorporateMember.objects.create(membership_level=3)
189+
member_8 = CorporateMember.objects.create(membership_level=3)
185190

186191
member_1.invoice_set.create(amount=4, expiration_date=self.future_date)
187192
member_2.invoice_set.create(amount=8, expiration_date=self.future_date)
188193
member_3.invoice_set.create(amount=2, expiration_date=self.future_date)
189194

190-
members = top_and_gold_corporate_members()["members"]
191-
192-
self.assertEqual(members, [member_2, member_1, member_3])
193-
194-
def test_with_gold_members_and_other_members(self):
195-
member_1 = CorporateMember.objects.create(membership_level=3)
196-
member_2 = CorporateMember.objects.create(membership_level=3)
197-
member_3 = CorporateMember.objects.create(membership_level=4)
198-
member_4 = CorporateMember.objects.create(membership_level=5)
199-
member_5 = CorporateMember.objects.create(membership_level=2)
200-
201-
member_1.invoice_set.create(amount=4, expiration_date=self.future_date)
202-
member_2.invoice_set.create(amount=8, expiration_date=self.future_date)
203-
member_3.invoice_set.create(amount=2, expiration_date=self.future_date)
204-
member_4.invoice_set.create(amount=2, expiration_date=self.future_date)
205-
member_5.invoice_set.create(amount=2, expiration_date=self.future_date)
195+
member_4.invoice_set.create(amount=4, expiration_date=self.future_date)
196+
member_5.invoice_set.create(amount=8, expiration_date=self.future_date)
197+
member_6.invoice_set.create(amount=2, expiration_date=self.future_date)
206198

207-
members = top_and_gold_corporate_members()["members"]
208-
self.assertEqual(members, [member_4, member_3, member_2, member_1])
209-
self.assertNotIn(member_5, members)
199+
member_7.invoice_set.create(amount=8, expiration_date=self.future_date)
200+
member_8.invoice_set.create(amount=2, expiration_date=self.future_date)
210201

211-
def test_with_gold_members_and_expired_invoice(self):
212-
member_1 = CorporateMember.objects.create(membership_level=3)
213-
member_2 = CorporateMember.objects.create(membership_level=3)
214-
member_3 = CorporateMember.objects.create(membership_level=4)
202+
members = top_corporate_members(
203+
"diamond", "platinum", "gold", header="Diamond, Platinum and Gold members"
204+
)["members"]
215205

216-
member_1.invoice_set.create(amount=4, expiration_date=self.future_date)
217-
member_2.invoice_set.create(amount=8, expiration_date=self.future_date)
218-
member_3.invoice_set.create(amount=2, expiration_date=self.past_date)
206+
expected = [
207+
member_5,
208+
member_4,
209+
member_6,
210+
member_2,
211+
member_1,
212+
member_3,
213+
member_7,
214+
member_8,
215+
]
219216

220-
members = top_and_gold_corporate_members()["members"]
221-
self.assertEqual(members, [member_2, member_1])
222-
self.assertNotIn(member_3, members)
217+
self.assertEqual(members, expected)

0 commit comments

Comments
 (0)