diff --git a/apps/member/templates/member/user_list.html b/apps/member/templates/member/user_list.html index a41d7e69..023aca16 100644 --- a/apps/member/templates/member/user_list.html +++ b/apps/member/templates/member/user_list.html @@ -5,7 +5,7 @@ SPDX-License-Identifier: GPL-3.0-or-later {% load i18n perms %} {% block content %} -{% if "member.change_profile_registration_valid"|has_perm:user %} +{% if can_manage_registrations %} {% trans "Registrations" %} diff --git a/apps/member/views.py b/apps/member/views.py index f736f47e..9a585ede 100644 --- a/apps/member/views.py +++ b/apps/member/views.py @@ -234,6 +234,13 @@ class UserListView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView): return qs + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + pre_registered_users = User.objects.filter(PermissionBackend.filter_queryset(self.request.user, User, "view"))\ + .filter(profile__registration_valid=False) + context["can_manage_registrations"] = pre_registered_users.exists() + return context + class ProfileAliasView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView): """ @@ -247,8 +254,8 @@ class ProfileAliasView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) note = context['object'].note - context["aliases"] = AliasTable(note.alias_set.filter(PermissionBackend - .filter_queryset(self.request.user, Alias, "view")).all()) + context["aliases"] = AliasTable( + note.alias_set.filter(PermissionBackend.filter_queryset(self.request.user, Alias, "view")).distinct().all()) context["can_create"] = PermissionBackend.check_perm(self.request.user, "note.add_alias", Alias( note=context["object"].note, name="", @@ -450,8 +457,8 @@ class ClubAliasView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) note = context['object'].note - context["aliases"] = AliasTable(note.alias_set.filter(PermissionBackend - .filter_queryset(self.request.user, Alias, "view")).all()) + context["aliases"] = AliasTable(note.alias_set.filter( + PermissionBackend.filter_queryset(self.request.user, Alias, "view")).distinct().all()) context["can_create"] = PermissionBackend.check_perm(self.request.user, "note.add_alias", Alias( note=context["object"].note, name="", diff --git a/apps/permission/fixtures/initial.json b/apps/permission/fixtures/initial.json index 6faaa11f..8c7ec9bc 100644 --- a/apps/permission/fixtures/initial.json +++ b/apps/permission/fixtures/initial.json @@ -799,12 +799,12 @@ "member", "membership" ], - "query": "{\"club\": [\"club\"]}", + "query": "{}", "type": "change", "mask": 3, "field": "roles", "permanent": false, - "description": "Modifier les rôles d'un adhérent d'un club" + "description": "Modifier les rôles d'une adhésion" } }, { @@ -2807,6 +2807,38 @@ "description": "Voir ses propres alias, pour toujours" } }, + { + "model": "permission.permission", + "pk": 180, + "fields": { + "model": [ + "auth", + "user" + ], + "query": "{\"profile__registration_valid\": false}", + "type": "view", + "mask": 2, + "field": "", + "permanent": false, + "description": "Voir n'importe quel utilisateur non encore inscrit" + } + }, + { + "model": "permission.permission", + "pk": 181, + "fields": { + "model": [ + "member", + "profile" + ], + "query": "{\"registration_valid\": false}", + "type": "view", + "mask": 2, + "field": "", + "permanent": false, + "description": "Voir n'importe quel profil non encore inscrit" + } + }, { "model": "permission.role", "pk": 1, @@ -3402,7 +3434,6 @@ 135, 136, 137, - 138, 139, 140, 143, @@ -3423,15 +3454,27 @@ "name": "PC Kfet", "permissions": [ 6, + 22, 24, 25, 26, 27, 30, + 49, + 50, + 55, + 56, + 57, + 58, + 143, 150, 166, 167, - 168 + 168, + 176, + 177, + 180, + 181 ] } }, diff --git a/apps/treasury/apps.py b/apps/treasury/apps.py index e2873ea2..f3fbe092 100644 --- a/apps/treasury/apps.py +++ b/apps/treasury/apps.py @@ -28,6 +28,8 @@ class TreasuryConfig(AppConfig): source__in=NoteSpecial.objects.filter(~Q(remittancetype=None)), specialtransactionproxy=None, ): - SpecialTransactionProxy.objects.create(transaction=transaction, remittance=None) + proxy = SpecialTransactionProxy(transaction=transaction, remittance=None) + proxy._force_save = True + proxy.save() post_migrate.connect(setup_specialtransactions_proxies, sender=SpecialTransactionProxy) diff --git a/apps/treasury/signals.py b/apps/treasury/signals.py index f08540d1..5604b3c1 100644 --- a/apps/treasury/signals.py +++ b/apps/treasury/signals.py @@ -10,9 +10,8 @@ def save_special_transaction(instance, created, **kwargs): """ if not hasattr(instance, "_no_signal"): - if instance.is_credit(): - if created and RemittanceType.objects.filter(note=instance.source).exists(): - SpecialTransactionProxy.objects.create(transaction=instance, remittance=None).save() - else: - if created and RemittanceType.objects.filter(note=instance.destination).exists(): - SpecialTransactionProxy.objects.create(transaction=instance, remittance=None).save() + if created and RemittanceType.objects.filter( + note=instance.source if instance.is_credit() else instance.destination).exists(): + proxy = SpecialTransactionProxy(transaction=instance, remittance=None) + proxy._force_save = True + proxy.save()