diff --git a/apps/permission/fixtures/initial.json b/apps/permission/fixtures/initial.json index ce0fcd3d..bad0ec80 100644 --- a/apps/permission/fixtures/initial.json +++ b/apps/permission/fixtures/initial.json @@ -1482,7 +1482,7 @@ "wei", "weiregistration" ], - "query": "{\"user\": [\"user\"], \"wei\": [\"club\"], \"wei__membership_start__lte\": [\"today\"]}", + "query": "[\"AND\", {\"user\": [\"user\"]}, [\"OR\", {\"wei\": [\"club\"]}, {\"wei__year\": [\"today\", \"year\"], \"membership\": null}]]", "type": "view", "mask": 1, "field": "", @@ -1527,7 +1527,7 @@ "wei", "weiregistration" ], - "query": "{\"user\": [\"user\"], \"wei\": [\"club\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}", + "query": "[\"AND\", {\"user\": [\"user\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}, [\"OR\", {\"wei\": [\"club\"]}, {\"wei__year\": [\"today\", \"year\"], \"membership\": null}]]", "type": "change", "mask": 1, "field": "soge_credit", @@ -1572,7 +1572,7 @@ "wei", "weiregistration" ], - "query": "{\"user\": [\"user\"], \"wei\": [\"club\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}", + "query": "[\"AND\", {\"user\": [\"user\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}, [\"OR\", {\"wei\": [\"club\"]}, {\"wei__year\": [\"today\", \"year\"], \"membership\": null}]]", "type": "change", "mask": 1, "field": "birth_date", @@ -1602,7 +1602,7 @@ "wei", "weiregistration" ], - "query": "{\"user\": [\"user\"], \"wei\": [\"club\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}", + "query": "[\"AND\", {\"user\": [\"user\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}, [\"OR\", {\"wei\": [\"club\"]}, {\"wei__year\": [\"today\", \"year\"], \"membership\": null}]]", "type": "change", "mask": 1, "field": "gender", @@ -1632,7 +1632,7 @@ "wei", "weiregistration" ], - "query": "{\"user\": [\"user\"], \"wei\": [\"club\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}", + "query": "[\"AND\", {\"user\": [\"user\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}, [\"OR\", {\"wei\": [\"club\"]}, {\"wei__year\": [\"today\", \"year\"], \"membership\": null}]]", "type": "change", "mask": 1, "field": "health_issues", @@ -1662,7 +1662,7 @@ "wei", "weiregistration" ], - "query": "{\"user\": [\"user\"], \"wei\": [\"club\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}", + "query": "[\"AND\", {\"user\": [\"user\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}, [\"OR\", {\"wei\": [\"club\"]}, {\"wei__year\": [\"today\", \"year\"], \"membership\": null}]]", "type": "change", "mask": 1, "field": "emergency_contact_name", @@ -1692,7 +1692,7 @@ "wei", "weiregistration" ], - "query": "{\"user\": [\"user\"], \"wei\": [\"club\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}", + "query": "[\"AND\", {\"user\": [\"user\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}, [\"OR\", {\"wei\": [\"club\"]}, {\"wei__year\": [\"today\", \"year\"], \"membership\": null}]]", "type": "change", "mask": 1, "field": "emergency_contact_phone", diff --git a/apps/wei/views.py b/apps/wei/views.py index c4423e8a..0f9ffd2c 100644 --- a/apps/wei/views.py +++ b/apps/wei/views.py @@ -121,16 +121,38 @@ class WEIDetailView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView): bus_table = BusTable(data=buses, prefix="bus-") context['buses'] = bus_table - # Check if the user has the right to create a membership with a random user, to display the button. - empty_membership = Membership( - club=club, - user=User.objects.first(), - date_start=datetime.now().date(), - date_end=datetime.now().date(), - fee=0, - ) - context["can_add_members"] = PermissionBackend \ - .check_perm(self.request.user, "member.add_membership", empty_membership) + random_user = User.objects.filter(~Q(wei__wei__in=[club])).first() + + if random_user is None: + # This case occurs when all users are registered to the WEI. + # Don't worry, Pikachu never went to the WEI. + # This bug can arrive only in dev mode. + context["can_add_first_year_member"] = True + context["can_add_any_member"] = True + else: + # Check if the user has the right to create a registration of a random first year member. + empty_fy_registration = WEIRegistration( + user=random_user, + first_year=True, + birth_date="1970-01-01", + gender="No", + emergency_contact_name="No", + emergency_contact_phone="No", + ) + context["can_add_first_year_member"] = PermissionBackend \ + .check_perm(self.request.user, "wei.add_weiregistration", empty_fy_registration) + + # Check if the user has the right to create a registration of a random old member. + empty_old_registration = WEIRegistration( + user=User.objects.filter(~Q(wei__wei__in=[club])).first(), + first_year=False, + birth_date="1970-01-01", + gender="No", + emergency_contact_name="No", + emergency_contact_phone="No", + ) + context["can_add_any_member"] = PermissionBackend \ + .check_perm(self.request.user, "wei.add_weiregistration", empty_old_registration) empty_bus = Bus( wei=club, diff --git a/templates/wei/weiclub_info.html b/templates/wei/weiclub_info.html index 7f1803d9..4af6afa0 100644 --- a/templates/wei/weiclub_info.html +++ b/templates/wei/weiclub_info.html @@ -58,8 +58,10 @@ {% trans "WEI list" %} {% endif %} {% if club.is_current_wei %} - {% if can_add_members %} + {% if can_add_first_year_member %} {% trans "Register 1A" %} + {% endif %} + {% if can_add_any_member %} {% trans "Register 2A+" %} {% endif %} {% if "wei.change_"|has_perm:club %}