Fix broken WEI permissions

This commit is contained in:
Yohann D'ANELLO 2020-04-24 14:03:25 +02:00
parent edf2f793e2
commit 16079e3cc5
4 changed files with 232 additions and 46 deletions

View File

@ -118,6 +118,13 @@
"name": "1A" "name": "1A"
} }
}, },
{
"model": "member.role",
"pk": 18,
"fields": {
"name": "Adhérent WEI"
}
},
{ {
"model": "wei.weirole", "model": "wei.weirole",
"pk": 12, "pk": 12,
@ -148,6 +155,11 @@
"pk": 17, "pk": 17,
"fields": {} "fields": {}
}, },
{
"model": "wei.weirole",
"pk": 18,
"fields": {}
},
{ {
"model": "permission.permissionmask", "model": "permission.permissionmask",
"pk": 1, "pk": 1,
@ -1320,11 +1332,11 @@
"wei", "wei",
"weiclub" "weiclub"
], ],
"query": "{}", "query": "{\"pk\": [\"club\", \"pk\"]}",
"type": "view", "type": "view",
"mask": 1, "mask": 1,
"field": "", "field": "",
"description": "View all WEI" "description": "View my WEI"
} }
}, },
{ {
@ -1410,7 +1422,7 @@
"wei", "wei",
"weiregistration" "weiregistration"
], ],
"query": "{\"user\": [\"user\"], \"wei\": [\"club\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"], \"membership\": null}", "query": "{\"user\": [\"user\"], \"wei__year\": [\"today\", \"year\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"], \"membership\": null}",
"type": "add", "type": "add",
"mask": 1, "mask": 1,
"field": "", "field": "",
@ -1650,7 +1662,7 @@
"wei", "wei",
"weiregistration" "weiregistration"
], ],
"query": "{\"user\": [\"user\"], \"club\": [\"club\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}", "query": "{\"user\": [\"user\"], \"wei\": [\"club\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 1, "mask": 1,
"field": "emergency_contact_name", "field": "emergency_contact_name",
@ -1680,7 +1692,7 @@
"wei", "wei",
"weiregistration" "weiregistration"
], ],
"query": "{\"user\": [\"user\"], \"club\": [\"club\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}", "query": "{\"user\": [\"user\"], \"wei\": [\"club\"], \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 1, "mask": 1,
"field": "emergency_contact_phone", "field": "emergency_contact_phone",
@ -1725,7 +1737,7 @@
"wei", "wei",
"bus" "bus"
], ],
"query": "{\"wei\": [\"club\"]}", "query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 3,
"field": "name", "field": "name",
@ -1785,7 +1797,7 @@
"wei", "wei",
"bus" "bus"
], ],
"query": "[\"AND\", {\"wei\": [\"club\"]}, [\"OR\", {\"first_year\": false, \"club__weiclub__end_date__lte\": [\"today\"]}]]", "query": "[\"AND\", {\"wei\": [\"club\"]}, [\"OR\", [\"NOT\", [\"membership\", \"registration\", \"first_year\"]], {\"wei__date_end__lte\": [\"today\"]}]]",
"type": "view", "type": "view",
"mask": 1, "mask": 1,
"field": "", "field": "",
@ -1800,7 +1812,7 @@
"wei", "wei",
"busteam" "busteam"
], ],
"query": "[\"AND\", {\"wei\": [\"club\"]}, [\"OR\", {\"first_year\": false, \"club__weiclub__end_date__lte\": [\"today\"]}]]", "query": "[\"AND\", {\"wei\": [\"club\"]}, [\"OR\", [\"NOT\", [\"membership\", \"registration\", \"first_year\"]], {\"wei__date_end__lte\": [\"today\"]}]]",
"type": "view", "type": "view",
"mask": 1, "mask": 1,
"field": "", "field": "",
@ -1815,7 +1827,7 @@
"wei", "wei",
"weimembership" "weimembership"
], ],
"query": "[\"AND\", {\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}, [\"OR\", {\"registration__soge_credit\": true}, {\"user__note__balance__gte\": [\"F\", \"fee\"]}]]", "query": "[\"AND\", {\"club\": [\"club\"], \"club__weiclub__membership_end__gte\": [\"today\"]}, [\"OR\", {\"registration__soge_credit\": true}, {\"user__note__balance__gte\": [\"F\", \"fee\"]}]]",
"type": "add", "type": "add",
"mask": 3, "mask": 3,
"field": "", "field": "",
@ -1830,7 +1842,7 @@
"wei", "wei",
"weimembership" "weimembership"
], ],
"query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}", "query": "{\"club\": [\"club\"], \"club__weiclub__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 1, "mask": 1,
"field": "bus", "field": "bus",
@ -1845,7 +1857,7 @@
"wei", "wei",
"weimembership" "weimembership"
], ],
"query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}", "query": "{\"club\": [\"club\"], \"club__weiclub__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 1, "mask": 1,
"field": "team", "field": "team",
@ -1860,7 +1872,7 @@
"wei", "wei",
"weimembership" "weimembership"
], ],
"query": "{\"wei\": [\"club\"]}", "query": "{\"club\": [\"club\"]}",
"type": "view", "type": "view",
"mask": 1, "mask": 1,
"field": "", "field": "",
@ -1875,7 +1887,7 @@
"wei", "wei",
"weimembership" "weimembership"
], ],
"query": "[\"AND\", {\"user\": [\"user\"], \"wei\": [\"club\"]}, [\"OR\", {\"first_year\": false, \"club__weiclub__end_date__lte\": [\"today\"]}]]", "query": "[\"AND\", {\"user\": [\"user\"], \"club\": [\"club\"]}, [\"OR\", {\"registration__first_year\": false, \"club__weiclub__date_end__lte\": [\"today\"]}]]",
"type": "view", "type": "view",
"mask": 1, "mask": 1,
"field": "", "field": "",
@ -1890,7 +1902,7 @@
"wei", "wei",
"weimembership" "weimembership"
], ],
"query": "{\"wei\": [\"club\"], \"bus\": [\"membership\", \"weimembership\", \"bus\"]}", "query": "{\"club\": [\"club\"], \"bus\": [\"membership\", \"weimembership\", \"bus\"]}",
"type": "view", "type": "view",
"mask": 1, "mask": 1,
"field": "", "field": "",
@ -1905,13 +1917,148 @@
"wei", "wei",
"weimembership" "weimembership"
], ],
"query": "{\"wei\": [\"club\"], \"team\": [\"membership\", \"weimembership\", \"team\"]}", "query": "{\"club\": [\"club\"], \"team\": [\"membership\", \"weimembership\", \"team\"]}",
"type": "view", "type": "view",
"mask": 1, "mask": 1,
"field": "", "field": "",
"description": "View the members of the team" "description": "View the members of the team"
} }
}, },
{
"model": "permission.permission",
"pk": 117,
"fields": {
"model": [
"wei",
"bus"
],
"query": "{\"pk\": [\"membership\", \"bus\", \"pk\"], \"wei__date_end__gte\": [\"today\"]}",
"type": "change",
"mask": 1,
"field": "name",
"description": "Update the name of my bus"
}
},
{
"model": "permission.permission",
"pk": 118,
"fields": {
"model": [
"wei",
"bus"
],
"query": "{\"pk\": [\"membership\", \"bus\", \"pk\"], \"wei__date_end__gte\": [\"today\"]}",
"type": "change",
"mask": 1,
"field": "description",
"description": "Update the description of my bus"
}
},
{
"model": "permission.permission",
"pk": 119,
"fields": {
"model": [
"wei",
"busteam"
],
"query": "{\"bus\": [\"membership\", \"bus\"], \"wei__date_end__gte\": [\"today\"]}",
"type": "add",
"mask": 1,
"field": "",
"description": "Add a team to my bus"
}
},
{
"model": "permission.permission",
"pk": 120,
"fields": {
"model": [
"wei",
"busteam"
],
"query": "{\"bus\": [\"membership\", \"bus\"], \"wei__date_end__gte\": [\"today\"]}",
"type": "change",
"mask": 1,
"field": "name",
"description": "Update the name of a team of my bus"
}
},
{
"model": "permission.permission",
"pk": 121,
"fields": {
"model": [
"wei",
"busteam"
],
"query": "{\"bus\": [\"membership\", \"bus\"], \"wei__date_end__gte\": [\"today\"]}",
"type": "change",
"mask": 1,
"field": "color",
"description": "Update the color of a team of my bus"
}
},
{
"model": "permission.permission",
"pk": 122,
"fields": {
"model": [
"wei",
"busteam"
],
"query": "{\"bus\": [\"membership\", \"bus\"], \"wei__date_end__gte\": [\"today\"]}",
"type": "change",
"mask": 1,
"field": "description",
"description": "Update the description of a team of my bus"
}
},
{
"model": "permission.permission",
"pk": 123,
"fields": {
"model": [
"wei",
"busteam"
],
"query": "{\"pk\": [\"membership\", \"team\", \"pk\"], \"wei__date_end__gte\": [\"today\"]}",
"type": "change",
"mask": 1,
"field": "name",
"description": "Update the name of my team"
}
},
{
"model": "permission.permission",
"pk": 124,
"fields": {
"model": [
"wei",
"busteam"
],
"query": "{\"pk\": [\"membership\", \"team\", \"pk\"], \"wei__date_end__gte\": [\"today\"]}",
"type": "change",
"mask": 1,
"field": "color",
"description": "Update the color of my team"
}
},
{
"model": "permission.permission",
"pk": 125,
"fields": {
"model": [
"wei",
"busteam"
],
"query": "{\"pk\": [\"membership\", \"team\", \"pk\"], \"wei__date_end__gte\": [\"today\"]}",
"type": "change",
"mask": 1,
"field": "description",
"description": "Update the description of my team"
}
},
{ {
"model": "permission.rolepermissions", "model": "permission.rolepermissions",
"pk": 1, "pk": 1,
@ -1952,21 +2099,12 @@
16, 16,
17, 17,
18, 18,
97,
99,
101,
70, 70,
108, 108,
109, 109,
78, 78,
79, 79,
114, 83
83,
84,
87,
90,
93,
95
] ]
} }
}, },
@ -2180,7 +2318,18 @@
111, 111,
112, 112,
113, 113,
114 114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125
] ]
} }
}, },
@ -2190,15 +2339,6 @@
"fields": { "fields": {
"role": 10, "role": 10,
"permissions": [ "permissions": [
32,
33,
56,
58,
55,
57,
52,
53,
54,
23, 23,
24, 24,
25, 25,
@ -2207,7 +2347,16 @@
28, 28,
29, 29,
30, 30,
31 31,
32,
33,
52,
53,
54,
55,
56,
57,
58
] ]
} }
}, },
@ -2267,7 +2416,12 @@
"fields": { "fields": {
"role": 13, "role": 13,
"permissions": [ "permissions": [
115 115,
117,
118,
120,
121,
122
] ]
} }
}, },
@ -2280,5 +2434,26 @@
116 116
] ]
} }
},
{
"model": "permission.rolepermissions",
"pk": 16,
"fields": {
"role": 18,
"permissions": [
77,
84,
87,
90,
93,
95,
97,
99,
101,
108,
109,
114
]
}
} }
] ]

View File

@ -11,7 +11,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.db.models import Q, Count from django.db.models import Q, Count
from django.db.models.functions import Lower from django.db.models.functions.text import Lower
from django.forms import HiddenInput from django.forms import HiddenInput
from django.http import HttpResponse from django.http import HttpResponse
from django.shortcuts import redirect from django.shortcuts import redirect
@ -540,6 +540,9 @@ class WEIUpdateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Update
model = WEIRegistration model = WEIRegistration
form_class = WEIRegistrationForm form_class = WEIRegistrationForm
def get_queryset(self, **kwargs):
return WEIRegistration.objects
def dispatch(self, request, *args, **kwargs): def dispatch(self, request, *args, **kwargs):
wei = self.get_object().wei wei = self.get_object().wei
today = date.today() today = date.today()
@ -702,7 +705,9 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Crea
if "preferred_team_pk" in information and len(information["preferred_team_pk"]) == 1: if "preferred_team_pk" in information and len(information["preferred_team_pk"]) == 1:
form["team"].initial = Bus.objects.get(pk=information["preferred_team_pk"][0]) form["team"].initial = Bus.objects.get(pk=information["preferred_team_pk"][0])
if "preferred_roles_pk" in information: if "preferred_roles_pk" in information:
form["roles"].initial = WEIRole.objects.filter(pk__in=information["preferred_roles_pk"]).all() form["roles"].initial = WEIRole.objects.filter(
Q(pk__in=information["preferred_roles_pk"]) | Q(name="Adhérent WEI")
).all()
return form return form
def form_valid(self, form): def form_valid(self, form):
@ -749,7 +754,12 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Crea
membership.roles.set(WEIRole.objects.filter(name="1A").all()) membership.roles.set(WEIRole.objects.filter(name="1A").all())
membership.save() membership.save()
return super().form_valid(form) ret = super().form_valid(form)
membership.refresh_from_db()
membership.roles.add(WEIRole.objects.get("Adhérent WEI"))
return ret
def get_success_url(self): def get_success_url(self):
self.object.refresh_from_db() self.object.refresh_from_db()
@ -845,10 +855,11 @@ class MemberListRenderView(LoginRequiredMixin, View):
qs = qs.filter(club__pk=self.kwargs["wei_pk"]).order_by( qs = qs.filter(club__pk=self.kwargs["wei_pk"]).order_by(
Lower('bus__name'), Lower('bus__name'),
Lower('team__name'), Lower('team__name'),
'roles', 'user__profile__promotion',
Lower('user__last_name'), Lower('user__last_name'),
Lower('user__first_name'), Lower('user__first_name'),
).distinct() 'id',
)
if "bus_pk" in self.kwargs: if "bus_pk" in self.kwargs:
qs = qs.filter(bus__pk=self.kwargs["bus_pk"]) qs = qs.filter(bus__pk=self.kwargs["bus_pk"])
@ -856,7 +867,7 @@ class MemberListRenderView(LoginRequiredMixin, View):
if "team_pk" in self.kwargs: if "team_pk" in self.kwargs:
qs = qs.filter(team__pk=self.kwargs["team_pk"] if self.kwargs["team_pk"] else None) qs = qs.filter(team__pk=self.kwargs["team_pk"] if self.kwargs["team_pk"] else None)
return qs return qs.distinct()
def get(self, request, **kwargs): def get(self, request, **kwargs):
qs = self.get_queryset() qs = self.get_queryset()

View File

@ -106,12 +106,12 @@ SPDX-License-Identifier: GPL-3.0-or-later
<a class="nav-link" href="{% url 'activity:activity_list' %}"><i class="fa fa-calendar"></i> {% trans 'Activities' %}</a> <a class="nav-link" href="{% url 'activity:activity_list' %}"><i class="fa fa-calendar"></i> {% trans 'Activities' %}</a>
</li> </li>
{% endif %} {% endif %}
{% if "treasury.invoice"|not_empty_model_change_list %} {% if "treasury.invoice"|not_empty_model_list %}
<li class="nav-item active"> <li class="nav-item active">
<a class="nav-link" href="{% url 'treasury:invoice_list' %}"><i class="fa fa-money"></i> {% trans 'Treasury' %}</a> <a class="nav-link" href="{% url 'treasury:invoice_list' %}"><i class="fa fa-money"></i> {% trans 'Treasury' %}</a>
</li> </li>
{% endif %} {% endif %}
{% if "wei.weiclub"|not_empty_model_change_list %} {% if "wei.weiclub"|not_empty_model_list %}
<li class="nav-item active"> <li class="nav-item active">
<a class="nav-link" href="{% url 'wei:current_wei_detail' %}"><i class="fa fa-bus"></i> {% trans 'WEI' %}</a> <a class="nav-link" href="{% url 'wei:current_wei_detail' %}"><i class="fa fa-bus"></i> {% trans 'WEI' %}</a>
</li> </li>

View File

@ -30,7 +30,7 @@
{% for membership in memberships %} {% for membership in memberships %}
{{ membership.user.last_name|safe }} & {{ membership.user.first_name|safe }} & {{ membership.registration.birth_date|safe }} {{ membership.user.last_name|safe }} & {{ membership.user.first_name|safe }} & {{ membership.registration.birth_date|safe }}
& {{ membership.registration.get_gender_display|safe }} & {{ membership.user.profile.section_generated|safe }} & {{ membership.bus.name|safe }} & {{ membership.registration.get_gender_display|safe }} & {{ membership.user.profile.section_generated|safe }} & {{ membership.bus.name|safe }}
& {% if membership.team %}{{ membership.team.name|safe }}{% else %}--{% endif %} & {{ membership.roles.all|join:", "|safe }} \\ & {% if membership.team %}{{ membership.team.name|safe }}{% else %}--{% endif %} & {{ membership.roles.first|safe }} \\
{% endfor %} {% endfor %}
\end{tabularx} \end{tabularx}
\end{center} \end{center}