mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-30 15:29:53 +01:00 
			
		
		
		
	Compare commits
	
		
			20 Commits
		
	
	
		
			Automation
			...
			238ba78f4f
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 238ba78f4f | ||
|  | 0ec771b5ee | ||
|  | c841fb6068 | ||
|  | f6649f155a | ||
|  | 5707abf9e2 | ||
|  | 056c4029f8 | ||
|  | bfd865b3e3 | ||
|  | 6ceb43cb66 | ||
|  | 9635004520 | ||
|  | 05e21ed229 | ||
|  | b2ccc4aede | ||
|  | 6229652dea | ||
|  | eee87dcf13 | ||
|  | bcf21507e5 | ||
|  | 6127ced143 | ||
|  | f63e5dcb5a | ||
|  | 73aa0098bf | ||
|  | 694a5c7bd8 | ||
|  | a4480258d7 | ||
|  | 821efbf78b | 
| @@ -15,6 +15,7 @@ from django.utils.translation import gettext_lazy as _ | ||||
| from note.models import NoteSpecial, Alias | ||||
| from note_kfet.inputs import Autocomplete, AmountInput | ||||
| from permission.models import PermissionMask, Role | ||||
| from permission.backends import PermissionBackend | ||||
| from PIL import Image, ImageSequence | ||||
|  | ||||
| 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. | ||||
|     """ | ||||
|     # 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, | ||||
| @@ -67,6 +68,14 @@ class ProfileForm(forms.ModelForm): | ||||
|         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}) | ||||
|      | ||||
|     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 | ||||
|     def save(self, commit=True): | ||||
|         if not self.instance.section or (("department" in self.changed_data | ||||
|   | ||||
| @@ -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, | ||||
|     ) | ||||
|  | ||||
|   | ||||
| @@ -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,19 @@ 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()) | ||||
|  | ||||
|         # 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() | ||||
|  | ||||
|         context['profile_form'] = profile_form | ||||
|  | ||||
|         return context | ||||
|  | ||||
|   | ||||
| @@ -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, | ||||
|   | ||||
| @@ -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" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user