Skip to content

Commit fa886d6

Browse files
adamzapSaptakS
authored andcommitted
Add top CorporateMembers 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.
1 parent c4ec1cd commit fa886d6

File tree

6 files changed

+107
-30
lines changed

6 files changed

+107
-30
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{% if members %}
2+
<div class="corporate-members">
3+
<h3>Diamond and Platinum Members</h3>
4+
{% for obj in members %}
5+
<div class="clearfix">
6+
<div class="member-logo">
7+
<a href="{{ obj.url }}" title="{{ obj.display_name }}">
8+
<img src="{{ obj.thumbnail.url }}" alt="{{ obj.display_name }}" />
9+
</a>
10+
</div>
11+
<div class="small-cta">
12+
<ul class="list-links-small">
13+
<li><strong>{{ obj.display_name }}</strong></li>
14+
<li><a href="{{ obj.url }}" title="{{ obj.display_name }}">
15+
{{ obj.description }}
16+
</a></li>
17+
</ul>
18+
</div>
19+
</div>
20+
{% endfor %}
21+
</div>
22+
{% endif %}

djangoproject/templates/releases/download.html

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -273,28 +273,7 @@ <h2 id="unsupported-versions">Unsupported previous releases</h2>
273273
<div role="complementary">
274274
<h2 class="visuallyhidden" id="aside-header">Additional Information</h2>
275275

276-
{% if corporate_members %}
277-
<div class="corporate-members">
278-
<h3>Diamond and Platinum Members</h3>
279-
{% for obj in corporate_members %}
280-
<div class="clearfix">
281-
<div class="member-logo">
282-
<a href="{{ obj.url }}" title="{{ obj.display_name }}">
283-
<img src="{{ obj.thumbnail.url }}" alt="{{ obj.display_name }}" />
284-
</a>
285-
</div>
286-
<div class="small-cta">
287-
<ul class="list-links-small">
288-
<li><strong>{{ obj.display_name }}</strong></li>
289-
<li><a href="{{ obj.url }}" title="{{ obj.display_name }}">
290-
{{ obj.description }}
291-
</a></li>
292-
</ul>
293-
</div>
294-
</div>
295-
{% endfor %}
296-
</div>
297-
{% endif %}
276+
{% top_corporate_members %}
298277

299278
{% donation_snippet %}
300279

docs/templates/docs/doc.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,5 +222,7 @@ <h3 id="links-wrapper-header">{% trans "Download:" %}</h3>
222222
</p>
223223
</section>
224224
{% endblock links-wrapper %}
225+
226+
{% top_corporate_members %}
225227
</div>
226228
{% endblock content-related %}

fundraising/templatetags/fundraising_extras.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,3 +111,10 @@ def display_django_heroes():
111111
"display_logo_amount": int(LEADERSHIP_LEVEL_AMOUNT),
112112
"corporate_membership_amounts": CORPORATE_MEMBERSHIP_AMOUNTS,
113113
}
114+
115+
116+
@register.inclusion_tag("fundraising/includes/top_corporate_members.html")
117+
def top_corporate_members():
118+
members = CorporateMember.objects.by_membership_level()
119+
120+
return {"members": members["diamond"] + members["platinum"]}

fundraising/tests/test_templatetags.py

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from datetime import datetime, timedelta
1+
from datetime import date, datetime, timedelta
22
from decimal import Decimal
33

44
from django.test import TestCase
@@ -17,6 +17,7 @@
1717
from ..templatetags.fundraising_extras import (
1818
display_django_heroes,
1919
donation_form_with_heart,
20+
top_corporate_members,
2021
)
2122

2223

@@ -93,3 +94,76 @@ def create_hero_with_payment_date(days):
9394

9495
response = display_django_heroes()
9596
self.assertEqual(response["heroes"], [hero2, hero3])
97+
98+
99+
class TestTopCorporateMembers(TestCase):
100+
past_date = date(2000, 1, 1)
101+
future_date = date(3000, 1, 1)
102+
103+
@classmethod
104+
def setUpTestData(cls):
105+
member_1 = CorporateMember.objects.create(membership_level=1)
106+
member_2 = CorporateMember.objects.create(membership_level=2)
107+
member_3 = CorporateMember.objects.create(membership_level=3)
108+
member_4 = CorporateMember.objects.create(membership_level=4)
109+
member_5 = CorporateMember.objects.create(membership_level=5)
110+
111+
member_1.invoice_set.create(amount=5, expiration_date=cls.future_date)
112+
member_2.invoice_set.create(amount=5, expiration_date=cls.future_date)
113+
member_3.invoice_set.create(amount=5, expiration_date=cls.future_date)
114+
member_4.invoice_set.create(amount=5, expiration_date=cls.past_date)
115+
member_5.invoice_set.create(amount=5, expiration_date=cls.past_date)
116+
117+
def test_with_no_platinum_or_diamond_members(self):
118+
members = top_corporate_members()["members"]
119+
120+
self.assertEqual(members, [])
121+
122+
def test_with_diamond_members_and_no_platinum_members(self):
123+
member_1 = CorporateMember.objects.create(membership_level=5)
124+
member_2 = CorporateMember.objects.create(membership_level=5)
125+
member_3 = CorporateMember.objects.create(membership_level=5)
126+
127+
member_1.invoice_set.create(amount=4, expiration_date=self.future_date)
128+
member_2.invoice_set.create(amount=8, expiration_date=self.future_date)
129+
member_3.invoice_set.create(amount=2, expiration_date=self.future_date)
130+
131+
members = top_corporate_members()["members"]
132+
133+
self.assertEqual(members, [member_2, member_1, member_3])
134+
135+
def test_with_platinum_members_and_no_diamond_members(self):
136+
member_1 = CorporateMember.objects.create(membership_level=4)
137+
member_2 = CorporateMember.objects.create(membership_level=4)
138+
member_3 = CorporateMember.objects.create(membership_level=4)
139+
140+
member_1.invoice_set.create(amount=4, expiration_date=self.future_date)
141+
member_2.invoice_set.create(amount=8, expiration_date=self.future_date)
142+
member_3.invoice_set.create(amount=2, expiration_date=self.future_date)
143+
144+
members = top_corporate_members()["members"]
145+
146+
self.assertEqual(members, [member_2, member_1, member_3])
147+
148+
def test_with_diamond_members_and_platinum_members(self):
149+
member_1 = CorporateMember.objects.create(membership_level=4)
150+
member_2 = CorporateMember.objects.create(membership_level=4)
151+
member_3 = CorporateMember.objects.create(membership_level=4)
152+
153+
member_4 = CorporateMember.objects.create(membership_level=5)
154+
member_5 = CorporateMember.objects.create(membership_level=5)
155+
member_6 = CorporateMember.objects.create(membership_level=5)
156+
157+
member_1.invoice_set.create(amount=4, expiration_date=self.future_date)
158+
member_2.invoice_set.create(amount=8, expiration_date=self.future_date)
159+
member_3.invoice_set.create(amount=2, expiration_date=self.future_date)
160+
161+
member_4.invoice_set.create(amount=4, expiration_date=self.future_date)
162+
member_5.invoice_set.create(amount=8, expiration_date=self.future_date)
163+
member_6.invoice_set.create(amount=2, expiration_date=self.future_date)
164+
165+
members = top_corporate_members()["members"]
166+
167+
expected = [member_5, member_4, member_6, member_2, member_1, member_3]
168+
169+
self.assertEqual(members, expected)

releases/views.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
from django.http import Http404, HttpResponsePermanentRedirect
22
from django.shortcuts import get_object_or_404, render
33

4-
from members.models import CorporateMember
5-
64
from .models import Release
75

86

@@ -23,17 +21,12 @@ def index(request):
2321
# Get the list of earlier releases.
2422
unsupported = Release.objects.unsupported()
2523

26-
corporate_members = CorporateMember.objects.by_membership_level()
27-
2824
context = {
2925
"current": current,
3026
"previous": previous,
3127
"lts": lts,
3228
"unsupported": unsupported,
3329
"preview": preview,
34-
"corporate_members": (
35-
corporate_members["diamond"] + corporate_members["platinum"]
36-
),
3730
}
3831
return render(request, "releases/download.html", context)
3932

0 commit comments

Comments
 (0)