|
@@ -539,6 +539,34 @@ class RowLevelPermission(Permission):
|
|
|
help_text="Offre dont l'utilisateur est autorisé à voir et modifier les membres et les abonnements.")
|
|
|
description = models.TextField(blank=True)
|
|
|
|
|
|
+ def save(self, *args, **kwargs):
|
|
|
+ """
|
|
|
+ Lors de la sauvegarde d'une RowLevelPermission. Si le champ codename n'est pas définit,
|
|
|
+ le calcul automatiquement.
|
|
|
+ """
|
|
|
+ if not self.codename:
|
|
|
+ self.codename = self.generate_codename()
|
|
|
+ return super(RowLevelPermission, self).save(*args, **kwargs)
|
|
|
+
|
|
|
+ def generate_codename(self):
|
|
|
+ """
|
|
|
+ Calcule le codename automatiquement en fonction du name.
|
|
|
+ """
|
|
|
+
|
|
|
+ codename = slugify(self.name)
|
|
|
+
|
|
|
+ codename = codename[:30]
|
|
|
+
|
|
|
+ perm = Permission.objects.filter(codename=codename)
|
|
|
+ base_codename = codename
|
|
|
+ incr = 2
|
|
|
+
|
|
|
+ while perm:
|
|
|
+ codename = base_codename + str(incr)
|
|
|
+ perm = Permission.objects.filter(codename=codename)
|
|
|
+ incr += 1
|
|
|
+ return codename
|
|
|
+
|
|
|
class Meta:
|
|
|
verbose_name = 'permission fine'
|
|
|
verbose_name_plural = 'permissions fines'
|
|
@@ -547,35 +575,3 @@ class RowLevelPermission(Permission):
|
|
|
RowLevelPermission._meta.get_field('codename').blank = True
|
|
|
RowLevelPermission._meta.get_field('codename').help_text = 'Laisser vide pour le générer automatiquement'
|
|
|
RowLevelPermission._meta.get_field('content_type').help_text = "Garder 'abonnement' pour une utilisation normale"
|
|
|
-
|
|
|
-def get_automatic_codename(perm):
|
|
|
- """
|
|
|
- Calcule le codename automatiquement en fonction du name.
|
|
|
- """
|
|
|
-
|
|
|
-
|
|
|
- codename = slugify(perm.name)
|
|
|
-
|
|
|
- codename = codename[:30]
|
|
|
-
|
|
|
-
|
|
|
- perm = Permission.objects.filter(codename=codename)
|
|
|
- base_codename = codename
|
|
|
- incr = 2
|
|
|
-
|
|
|
- while perm:
|
|
|
- codename = base_codename + str(incr)
|
|
|
- perm = Permission.objects.filter(codename=codename)
|
|
|
- incr += 1
|
|
|
-
|
|
|
- return codename
|
|
|
-
|
|
|
-
|
|
|
-@receiver(pre_save, sender=RowLevelPermission)
|
|
|
-def define_codename(sender, instance, **kwargs):
|
|
|
- """
|
|
|
- Lors de la sauvegarde d'une RowLevelPermission. Si le champ codename n'est pas définit,
|
|
|
- le calcul automatiquement.
|
|
|
- """
|
|
|
- if not instance.codename:
|
|
|
- instance.codename = get_automatic_codename(instance)
|