8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-11-27 07:02:26 +00:00

Ajoute un message d'erreur si can_xxx renvoie False

This commit is contained in:
Maël Kervella 2017-11-30 19:02:15 +00:00 committed by root
parent 0d78dcadf5
commit 7d8b61f0c9
2 changed files with 36 additions and 17 deletions

View file

@ -58,8 +58,9 @@ def can_create(model):
"""
def decorator(view):
def wrapper(request,*args, **kwargs):
if not model.can_create(request.user):
messages.error(request, "Vous ne pouvez pas accéder à ce menu")
can, msg = model.can_create(request.user)
if not can:
messages.error(request, msg or "Vous ne pouvez pas accéder à ce menu")
return redirect(reverse('users:profil',
kwargs={'userid':str(request.user.id)}
))
@ -84,8 +85,9 @@ def can_edit(model):
return redirect(reverse('users:profil',
kwargs={'userid':str(request.user.id)}
))
if not model.can_edit(instance, request.user):
messages.error(request, "Vous ne pouvez pas accéder à ce menu")
can, msg = model.can_edit(instance, request.user)
if not can:
messages.error(request, msg or "Vous ne pouvez pas accéder à ce menu")
return redirect(reverse('users:profil',
kwargs={'userid':str(request.user.id)}
))

View file

@ -765,24 +765,37 @@ class User(AbstractBaseUser):
def can_create(user):
options, _created = OptionalUser.objects.get_or_create()
if options.all_can_create:
return True
return True, None
else:
return user.has_perms(('cableur',))
return user.has_perms(('cableur',)), u"Vous n'avez pas le\
droit de créer un utilisateur"
def can_edit(self, user):
if self.is_class_club and user.is_class_adherent:
return self == user or user.has_perms(('cableur',)) or\
user.adherent in self.club.administrators.all()
if self == user or user.has_perms(('cableur',)) or\
user.adherent in self.club.administrators.all():
return True, None
else:
return self == user or user.has_perms(('cableur',))
return False, u"Vous n'avez pas le droit d'éditer ce club"
else:
if self == user or user.has_perms(('cableur',)):
return True, None
else:
return False, u"Vous ne pouvez éditer un autre utilisateur que vous même"
def can_view(self, user):
if self.is_class_club and user.is_class_adherent:
return self == user or user.has_perms(('cableur',)) or\
if self == user or user.has_perms(('cableur',)) or\
user.adherent in self.club.administrators.all() or\
user.adherent in self.club.members.all()
user.adherent in self.club.members.all():
return True, None
else:
return self == user or user.has_perms(('cableur',))
return False, u"Vous n'avez pas le droit de voir ce club"
else:
if self == user or user.has_perms(('cableur',)):
return True, None
else:
return False, u"Vous ne pouvez voir un autre utilisateur que vous même"
def get_instance(userid):
return User.objects.get(pk=userid)
@ -917,12 +930,14 @@ class ServiceUser(AbstractBaseUser):
def can_create(user):
options, _created = OptionalUser.objects.get_or_create()
if options.all_can_create:
return True
return True, None
else:
return user.has_perms(('infra',))
return user.has_perms(('infra',)), u"Vous n'avez pas le droit de\
créer un service user"
def can_edit(instance, user):
return user.has_perms(('infra',))
return user.has_perms(('infra',)), u"Vous n'avez pas le droit d'éditer\
les services users"
def get_instance(userid):
return ServiceUser.objects.get(pk=userid)
@ -957,7 +972,8 @@ class Right(models.Model):
return str(self.user)
def can_create(user):
return user.has_perms('bureau')
return user.has_perms('bureau'), u"Vous n'avez pas le droit de\
créer des droits"
@receiver(post_save, sender=Right)
@ -1104,7 +1120,8 @@ class Ban(models.Model):
return str(self.user) + ' ' + str(self.raison)
def can_create(user):
return user.has_perms(('bofh',))
return user.has_perms(('bofh',)), u"Vous n'avez pas le droit de\
créer des bannissement"
@receiver(post_save, sender=Ban)