with aria role. #}
+
+ {% block content-related-extra %}{% endblock %}
+
{% donation_snippet %}
About the foundation
diff --git a/djangoproject/templates/flatpages/foundation.html b/djangoproject/templates/flatpages/foundation.html
index e1a3b864e7..c3a17cf1c7 100644
--- a/djangoproject/templates/flatpages/foundation.html
+++ b/djangoproject/templates/flatpages/foundation.html
@@ -1,5 +1,5 @@
{% extends "base_foundation.html" %}
-
+{% load fundraising_extras %}
{% block og_title %}{{ flatpage.title }}{% endblock %}
{% block title %}{{ flatpage.title }}{% endblock %}
@@ -8,3 +8,7 @@
{{ flatpage.title }}
{{ flatpage.content }}
{% endblock %}
+
+{% block content-related-extra %}
+ {% top_and_gold_corporate_members %}
+{% endblock %}
diff --git a/djangoproject/templates/fundraising/includes/top_and_gold_corporate_members.html b/djangoproject/templates/fundraising/includes/top_and_gold_corporate_members.html
new file mode 100644
index 0000000000..2ea0028116
--- /dev/null
+++ b/djangoproject/templates/fundraising/includes/top_and_gold_corporate_members.html
@@ -0,0 +1,22 @@
+{% if members %}
+
+
Diamond, Platinum and Gold Members
+ {% for obj in members %}
+
+ {% endfor %}
+
+{% endif %}
diff --git a/fundraising/templatetags/fundraising_extras.py b/fundraising/templatetags/fundraising_extras.py
index 2d78ef9ea9..4936b86ca4 100644
--- a/fundraising/templatetags/fundraising_extras.py
+++ b/fundraising/templatetags/fundraising_extras.py
@@ -118,3 +118,10 @@ def top_corporate_members():
members = CorporateMember.objects.by_membership_level()
return {"members": members["diamond"] + members["platinum"]}
+
+
+@register.inclusion_tag("fundraising/includes/top_and_gold_corporate_members.html")
+def top_and_gold_corporate_members():
+ members = CorporateMember.objects.by_membership_level()
+
+ return {"members": members["diamond"] + members["platinum"] + members["gold"]}
diff --git a/fundraising/tests/test_templatetags.py b/fundraising/tests/test_templatetags.py
index 421187797e..b56972ea3e 100644
--- a/fundraising/tests/test_templatetags.py
+++ b/fundraising/tests/test_templatetags.py
@@ -17,6 +17,7 @@
from ..templatetags.fundraising_extras import (
display_django_heroes,
donation_form_with_heart,
+ top_and_gold_corporate_members,
top_corporate_members,
)
@@ -167,3 +168,55 @@ def test_with_diamond_members_and_platinum_members(self):
expected = [member_5, member_4, member_6, member_2, member_1, member_3]
self.assertEqual(members, expected)
+
+
+class TestTopAndGoldCorporateMembers(TestCase):
+ past_date = date(2000, 1, 1)
+ future_date = date(3000, 1, 1)
+
+ def test_with_no_gold_members(self):
+ members = top_and_gold_corporate_members()["members"]
+ self.assertEqual(members, [])
+
+ def test_with_gold_members(self):
+ member_1 = CorporateMember.objects.create(membership_level=3)
+ member_2 = CorporateMember.objects.create(membership_level=3)
+ member_3 = CorporateMember.objects.create(membership_level=3)
+
+ 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_and_gold_corporate_members()["members"]
+
+ self.assertEqual(members, [member_2, member_1, member_3])
+
+ def test_with_gold_members_and_other_members(self):
+ member_1 = CorporateMember.objects.create(membership_level=3)
+ member_2 = CorporateMember.objects.create(membership_level=3)
+ member_3 = CorporateMember.objects.create(membership_level=4)
+ member_4 = CorporateMember.objects.create(membership_level=5)
+ member_5 = CorporateMember.objects.create(membership_level=2)
+
+ 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=2, expiration_date=self.future_date)
+ member_5.invoice_set.create(amount=2, expiration_date=self.future_date)
+
+ members = top_and_gold_corporate_members()["members"]
+ self.assertEqual(members, [member_4, member_3, member_2, member_1])
+ self.assertNotIn(member_5, members)
+
+ def test_with_gold_members_and_expired_invoice(self):
+ member_1 = CorporateMember.objects.create(membership_level=3)
+ member_2 = CorporateMember.objects.create(membership_level=3)
+ 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.past_date)
+
+ members = top_and_gold_corporate_members()["members"]
+ self.assertEqual(members, [member_2, member_1])
+ self.assertNotIn(member_3, members)