1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-06-27 20:22:15 +02:00

Compare commits

..

6 Commits

Author SHA1 Message Date
26b351a51c Add another permission for model guest in activity 2025-02-14 18:14:35 +01:00
1836677c47 Update file initial.json 2025-02-13 22:30:36 +01:00
e7a98c86f0 Tried something with permissions 2025-02-13 21:51:26 +01:00
eb5044490b Delete a useless permission 2025-02-13 21:37:58 +01:00
983d7ec052 linters 2025-02-13 21:35:29 +01:00
dc56deaf85 Final modifications 2025-02-13 21:17:57 +01:00
5 changed files with 24 additions and 32 deletions

View File

@ -15,7 +15,6 @@ from django.utils.translation import gettext_lazy as _
from note.models import NoteSpecial, Alias from note.models import NoteSpecial, Alias
from note_kfet.inputs import Autocomplete, AmountInput from note_kfet.inputs import Autocomplete, AmountInput
from permission.models import PermissionMask, Role from permission.models import PermissionMask, Role
from permission.backends import PermissionBackend
from PIL import Image, ImageSequence from PIL import Image, ImageSequence
from .models import Profile, Club, Membership from .models import Profile, Club, Membership
@ -45,10 +44,10 @@ class ProfileForm(forms.ModelForm):
""" """
A form for the extras field provided by the :model:`member.Profile` model. A form for the extras field provided by the :model:`member.Profile` model.
""" """
# Remove widget=forms.HiddenInput() if you want to use report frequency.
report_frequency = forms.IntegerField(required=False, initial=0, label=_("Report frequency"))
report_frequency = forms.IntegerField(required=False, initial=0, label=_("Statement frequency (in days)")) last_report = forms.DateTimeField(required=False, disabled=True, label=_("Last report date"))
last_report = forms.DateTimeField(required=False, disabled=True, label=_("Last statement date"))
VSS_charter_read = forms.BooleanField( VSS_charter_read = forms.BooleanField(
required=True, required=True,
@ -67,14 +66,6 @@ class ProfileForm(forms.ModelForm):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.fields['address'].widget.attrs.update({"placeholder": "4 avenue des Sciences, 91190 GIF-SUR-YVETTE"}) self.fields['address'].widget.attrs.update({"placeholder": "4 avenue des Sciences, 91190 GIF-SUR-YVETTE"})
self.fields['promotion'].widget.attrs.update({"max": timezone.now().year}) self.fields['promotion'].widget.attrs.update({"max": timezone.now().year})
def clean(self):
"""Force the values of fields that the user does not have permission to modify.."""
cleaned_data = super().clean()
for field_name in self.fields.keys():
if not PermissionBackend.check_perm(self.request, f"member.change_profile_{field_name}", self.instance):
cleaned_data[field_name] = getattr(self.instance, field_name) # Force the old value
return cleaned_data
@transaction.atomic @transaction.atomic
def save(self, commit=True): def save(self, commit=True):

View File

@ -114,12 +114,12 @@ class Profile(models.Model):
) )
report_frequency = models.PositiveSmallIntegerField( report_frequency = models.PositiveSmallIntegerField(
verbose_name=_("Statement frequency (in days)"), verbose_name=_("report frequency (in days)"),
default=0, default=0,
) )
last_report = models.DateTimeField( last_report = models.DateTimeField(
verbose_name=_("Last statement date"), verbose_name=_("last report date"),
default=timezone.now, default=timezone.now,
) )

View File

@ -75,17 +75,22 @@ class UserUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
profile_form = self.profile_form(instance=context['user_object'].profile, profile_form = self.profile_form(instance=context['user_object'].profile,
data=self.request.POST if self.request.POST else None) data=self.request.POST if self.request.POST else None)
if not self.object.profile.report_frequency: if not self.object.profile.report_frequency:
del profile_form.fields["last_report"] del profile_form.fields["last_report"]
fields_to_check = list(profile_form.fields.keys()) fields_to_check = list(profile_form.fields.keys())
fields_modifiable = False
# Delete the fields for which the user does not have the permission to modify # Delete the fields for which the user does not have the permission to modify
for field_name in fields_to_check: for field_name in fields_to_check:
if not PermissionBackend.check_perm(self.request, f"member.change_profile_{field_name}", context['user_object'].profile): if not PermissionBackend.check_perm(self.request, f"member.change_profile_{field_name}", context['user_object'].profile):
profile_form.fields[field_name].widget = forms.HiddenInput() profile_form.fields[field_name].widget = forms.HiddenInput()
else:
fields_modifiable = True
context['profile_form'] = profile_form if fields_modifiable:
context['profile_form'] = profile_form
return context return context

View File

@ -127,7 +127,7 @@
"auth", "auth",
"user" "user"
], ],
"query": "{\"pk\": [\"user\", \"pk\"]}", "query": "[\"AND\", {\"pk\": [\"user\", \"pk\"]}, {\"memberships__club__parent_club__isnull\": true}]",
"type": "change", "type": "change",
"mask": 1, "mask": 1,
"field": "last_login", "field": "last_login",
@ -3885,19 +3885,15 @@
"pk": 247, "pk": 247,
"fields": { "fields": {
"model": [ "model": [
"member", "activity",
"profile" "guest"
], ],
"query": "{}", "query": "{\"activity__organizer\": [\"club\"]}",
"type": "view", "type": "view",
"mask": 3, "mask": 2,
"field": [ "field": "",
"ml_events_registration",
"ml_art_registration",
"ml_sport_registration"
],
"permanent": false, "permanent": false,
"description": "Voir les abonnements aux Newsletters de n'importe quel profil" "description": "Voir les personnes invitées aux événements organisés par son club"
} }
}, },
{ {

View File

@ -794,11 +794,11 @@ msgid "Permission mask"
msgstr "Masque de permissions" msgstr "Masque de permissions"
#: apps/member/forms.py:46 #: apps/member/forms.py:46
msgid "Statement frequency (in days)" msgid "Report frequency"
msgstr "Fréquence des relevés (en jours)" msgstr "Fréquence des relevés (en jours)"
#: apps/member/forms.py:48 #: apps/member/forms.py:48
msgid "Last statement date" msgid "Last report date"
msgstr "Date de dernier relevé" msgstr "Date de dernier relevé"
#: apps/member/forms.py:52 #: apps/member/forms.py:52
@ -1044,12 +1044,12 @@ msgstr ""
"artistiques sur le campus (1 mail par semaine)" "artistiques sur le campus (1 mail par semaine)"
#: apps/member/models.py:117 #: apps/member/models.py:117
msgid "Statement frequency (in days)" msgid "report frequency (in days)"
msgstr "Fréquence des relevés (en jours)" msgstr "fréquence des relevés (en jours)"
#: apps/member/models.py:122 #: apps/member/models.py:122
msgid "Last statement date" msgid "last report date"
msgstr "Date de dernier relevé" msgstr "date de dernier relevé"
#: apps/member/models.py:127 #: apps/member/models.py:127
msgid "email confirmed" msgid "email confirmed"