diff --git a/apps/member/forms.py b/apps/member/forms.py index 352a5625..ecf7fb59 100644 --- a/apps/member/forms.py +++ b/apps/member/forms.py @@ -44,10 +44,10 @@ class ProfileForm(forms.ModelForm): """ 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( required=True, diff --git a/apps/member/models.py b/apps/member/models.py index 78d59667..e71e1fa7 100644 --- a/apps/member/models.py +++ b/apps/member/models.py @@ -114,12 +114,12 @@ class Profile(models.Model): ) report_frequency = models.PositiveSmallIntegerField( - verbose_name=_("report frequency (in days)"), + verbose_name=_("Statement frequency (in days)"), default=0, ) last_report = models.DateTimeField( - verbose_name=_("last report date"), + verbose_name=_("Last statement date"), default=timezone.now, ) diff --git a/apps/member/views.py b/apps/member/views.py index 348bf089..3bbc167f 100644 --- a/apps/member/views.py +++ b/apps/member/views.py @@ -26,6 +26,7 @@ from note_kfet.middlewares import _set_current_request from permission.backends import PermissionBackend from permission.models import Role from permission.views import ProtectQuerysetMixin, ProtectedCreateView +from django import forms from .forms import UserForm, ProfileForm, ImageForm, ClubForm, MembershipForm, \ CustomAuthenticationForm, MembershipRolesForm @@ -72,11 +73,23 @@ class UserUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView): form.fields['email'].required = True form.fields['email'].help_text = _("This address must be valid.") - if PermissionBackend.check_perm(self.request, "member.change_profile", context['user_object'].profile): - context['profile_form'] = self.profile_form(instance=context['user_object'].profile, - data=self.request.POST if self.request.POST else None) - if not self.object.profile.report_frequency: - del context['profile_form'].fields["last_report"] + profile_form = self.profile_form(instance=context['user_object'].profile, + data=self.request.POST if self.request.POST else None) + if not self.object.profile.report_frequency: + del profile_form.fields["last_report"] + + 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 + for field_name in fields_to_check: + 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() + else : + fields_modifiable = True + + if fields_modifiable : + context['profile_form'] = profile_form return context diff --git a/apps/permission/fixtures/initial.json b/apps/permission/fixtures/initial.json index 00f952cc..36134dee 100644 --- a/apps/permission/fixtures/initial.json +++ b/apps/permission/fixtures/initial.json @@ -3832,6 +3832,74 @@ "description": "Voir les profils des membres du club" } }, + { + "model": "permission.permission", + "pk": 244, + "fields": { + "model": [ + "member", + "profile" + ], + "query": "{}", + "type": "change", + "mask": 3, + "field": "ml_events_registration", + "permanent": false, + "description": "Modifier l'abonnement à la Newsletter BDE pour n'importe quel profil" + } + }, + { + "model": "permission.permission", + "pk": 245, + "fields": { + "model": [ + "member", + "profile" + ], + "query": "{}", + "type": "change", + "mask": 3, + "field": "ml_art_registration", + "permanent": false, + "description": "Modifier l'abonnement à la Newsletter Art pour n'importe quel profil" + } + }, + { + "model": "permission.permission", + "pk": 246, + "fields": { + "model": [ + "member", + "profile" + ], + "query": "{}", + "type": "change", + "mask": 3, + "field": "ml_sport_registration", + "permanent": false, + "description": "Modifier l'abonnement à la Newsletter Sport pour n'importe quel profil" + } + }, + { + "model": "permission.permission", + "pk": 247, + "fields": { + "model": [ + "member", + "profile" + ], + "query": "{}", + "type": "view", + "mask": 3, + "field": [ + "ml_events_registration", + "ml_art_registration", + "ml_sport_registration" + ], + "permanent": false, + "description": "Voir les abonnements aux Newsletters de n'importe quel profil" + } + }, { "model": "permission.role", "pk": 1, diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index 2af3257e..da4865c1 100644 --- a/locale/fr/LC_MESSAGES/django.po +++ b/locale/fr/LC_MESSAGES/django.po @@ -794,12 +794,12 @@ msgid "Permission mask" msgstr "Masque de permissions" #: apps/member/forms.py:46 -msgid "Report frequency" -msgstr "Fréquence des rapports (en jours)" +msgid "Statement frequency (in days)" +msgstr "Fréquence des relevés (en jours)" #: apps/member/forms.py:48 -msgid "Last report date" -msgstr "Date de dernier rapport" +msgid "Last statement date" +msgstr "Date de dernier relevé" #: apps/member/forms.py:52 msgid "" @@ -1044,12 +1044,12 @@ msgstr "" "artistiques sur le campus (1 mail par semaine)" #: apps/member/models.py:117 -msgid "report frequency (in days)" -msgstr "fréquence des rapports (en jours)" +msgid "Statement frequency (in days)" +msgstr "Fréquence des relevés (en jours)" #: apps/member/models.py:122 -msgid "last report date" -msgstr "date de dernier rapport" +msgid "Last statement date" +msgstr "Date de dernier relevé" #: apps/member/models.py:127 msgid "email confirmed"