From 3752fa15e803524451890b7b1d77829556d6a3b5 Mon Sep 17 00:00:00 2001 From: chenzichan <1532886617@qq.com> Date: Thu, 23 Oct 2025 17:59:34 +0800 Subject: [PATCH 1/7] Fix PSF membership link (#2787) with dynamic logic --- templates/includes/authenticated.html | 15 ++++++++++- users/tests/test_membership_links.py | 36 +++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 users/tests/test_membership_links.py diff --git a/templates/includes/authenticated.html b/templates/includes/authenticated.html index 82d5b38f6..a0bf3fedb 100644 --- a/templates/includes/authenticated.html +++ b/templates/includes/authenticated.html @@ -7,7 +7,20 @@
  • Edit your user profile
  • Change your password
  • {% if request.user.has_membership %} -
  • Edit your PSF Basic membership
  • +
  • + + {% if user.is_authenticated %} + {% if user.has_membership %} + Edit your membership + {% else %} + Join PSF Membership + {% endif %} + {% else %} + + Login to manage membership + + {% endif %} +
  • {% else %}
  • Become a PSF Basic member
  • {% endif %} diff --git a/users/tests/test_membership_links.py b/users/tests/test_membership_links.py new file mode 100644 index 000000000..234832c65 --- /dev/null +++ b/users/tests/test_membership_links.py @@ -0,0 +1,36 @@ +from django.test import TestCase, RequestFactory +from django.template import Context, Template +from django.contrib.auth import get_user_model +from django.contrib.auth.models import AnonymousUser +from users.models import Membership + +User = get_user_model() + +class MembershipLinkTests(TestCase): + + def setUp(self): + self.factory = RequestFactory() + self.user = User.objects.create_user(username='testuser', password='123') + self.template = Template(""" + {% include 'includes/authenticated.html' %} + """) + + def render_template(self, user): + request = self.factory.get('/') + request.user = user + return self.template.render(Context({'user': user, 'request': request})) + + def test_anonymous_user(self): + html = self.render_template(AnonymousUser()) + # Anonymous users should see "Sign In" + self.assertIn('Sign In', html) + + def test_logged_in_non_member(self): + html = self.render_template(self.user) + # Logged-in but not a member -> should see the membership join link + self.assertIn('Become a PSF Basic member', html) + + def test_logged_in_member(self): + Membership.objects.create(creator=self.user) + html = self.render_template(self.user) + self.assertIn('Edit your PSF Basic membership', html) From c502c3008989ea382c0e0c88914257dade5f762c Mon Sep 17 00:00:00 2001 From: Chen Zichan <139482965+czc0407@users.noreply.github.com> Date: Thu, 23 Oct 2025 19:39:11 +0800 Subject: [PATCH 2/7] Update templates/includes/authenticated.html Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> --- templates/includes/authenticated.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/includes/authenticated.html b/templates/includes/authenticated.html index a0bf3fedb..4f2259b86 100644 --- a/templates/includes/authenticated.html +++ b/templates/includes/authenticated.html @@ -13,7 +13,7 @@ {% if user.has_membership %} Edit your membership {% else %} - Join PSF Membership + Join the PSF {% endif %} {% else %} From 1783b27b2e97878adb667485473686417b6b453d Mon Sep 17 00:00:00 2001 From: Chen Zichan <139482965+czc0407@users.noreply.github.com> Date: Thu, 23 Oct 2025 19:39:21 +0800 Subject: [PATCH 3/7] Update templates/includes/authenticated.html Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> --- templates/includes/authenticated.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/includes/authenticated.html b/templates/includes/authenticated.html index 4f2259b86..7698dce20 100644 --- a/templates/includes/authenticated.html +++ b/templates/includes/authenticated.html @@ -17,7 +17,7 @@ {% endif %} {% else %} - Login to manage membership + Log in to manage membership {% endif %} From 355ed4401f55ffd3349866d5a9a7507074c982ea Mon Sep 17 00:00:00 2001 From: Chen Zichan <139482965+czc0407@users.noreply.github.com> Date: Thu, 23 Oct 2025 19:39:28 +0800 Subject: [PATCH 4/7] Update templates/includes/authenticated.html Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> --- templates/includes/authenticated.html | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/includes/authenticated.html b/templates/includes/authenticated.html index 7698dce20..e7cb23106 100644 --- a/templates/includes/authenticated.html +++ b/templates/includes/authenticated.html @@ -8,7 +8,6 @@
  • Change your password
  • {% if request.user.has_membership %}
  • - {% if user.is_authenticated %} {% if user.has_membership %} Edit your membership From 16c307b3260f3e43bc2f57e65ad721352d5c3c2c Mon Sep 17 00:00:00 2001 From: chenzichan <1532886617@qq.com> Date: Thu, 23 Oct 2025 21:15:22 +0800 Subject: [PATCH 5/7] Fix: correct membership link text to match expected test string --- templates/includes/authenticated.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/includes/authenticated.html b/templates/includes/authenticated.html index e7cb23106..662872a27 100644 --- a/templates/includes/authenticated.html +++ b/templates/includes/authenticated.html @@ -10,7 +10,7 @@
  • {% if user.is_authenticated %} {% if user.has_membership %} - Edit your membership + Edit your PSF Basic membership {% else %} Join the PSF {% endif %} From df1830210cc02cd7a5874e14728ce7db69161265 Mon Sep 17 00:00:00 2001 From: chenzichan <1532886617@qq.com> Date: Thu, 23 Oct 2025 21:38:29 +0800 Subject: [PATCH 6/7] chore: ignore virtual environment --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a9eca9d19..e694f1a17 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ __pycache__ .DS_Store .envrc .state/ +venv*/ From f4d5a5806c36e80f988ec86b60804818624c84f3 Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Tue, 4 Nov 2025 11:15:54 -0600 Subject: [PATCH 7/7] Update .gitignore --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index e694f1a17..a9eca9d19 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,3 @@ __pycache__ .DS_Store .envrc .state/ -venv*/