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 %}