1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-04-28 01:22:37 +00:00

Compare commits

...

3 Commits

Author SHA1 Message Date
thomasl
238ba78f4f Forgot to import PermissionBackend 2025-02-13 00:54:55 +01:00
thomasl
0ec771b5ee Add some security 2025-02-13 00:39:05 +01:00
thomasl
c841fb6068 Some corrections for report_frequency 2025-02-12 23:46:19 +01:00
3 changed files with 22 additions and 13 deletions

View File

@ -15,6 +15,7 @@ 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
@ -44,10 +45,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"), widget=forms.HiddenInput())
last_report = forms.DateTimeField(required=False, disabled=True, label=_("Last report date")) report_frequency = forms.IntegerField(required=False, initial=0, label=_("Statement frequency (in days)"))
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,
@ -66,6 +67,14 @@ 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=_("report frequency (in days)"), verbose_name=_("Statement frequency (in days)"),
default=0, default=0,
) )
last_report = models.DateTimeField( last_report = models.DateTimeField(
verbose_name=_("last report date"), verbose_name=_("Last statement date"),
default=timezone.now, default=timezone.now,
) )

View File

@ -794,12 +794,12 @@ msgid "Permission mask"
msgstr "Masque de permissions" msgstr "Masque de permissions"
#: apps/member/forms.py:46 #: apps/member/forms.py:46
msgid "Report frequency" msgid "Statement frequency (in days)"
msgstr "Fréquence des rapports (en jours)" msgstr "Fréquence des relevés (en jours)"
#: apps/member/forms.py:48 #: apps/member/forms.py:48
msgid "Last report date" msgid "Last statement date"
msgstr "Date de dernier rapport" msgstr "Date de dernier relevé"
#: apps/member/forms.py:52 #: apps/member/forms.py:52
msgid "" msgid ""
@ -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 "report frequency (in days)" msgid "Statement frequency (in days)"
msgstr "fréquence des rapports (en jours)" msgstr "Fréquence des relevés (en jours)"
#: apps/member/models.py:122 #: apps/member/models.py:122
msgid "last report date" msgid "Last statement date"
msgstr "date de dernier rapport" msgstr "Date de dernier relevé"
#: apps/member/models.py:127 #: apps/member/models.py:127
msgid "email confirmed" msgid "email confirmed"