diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-10-17 20:53:11 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-10-17 20:53:11 +0200 | 
| commit | 42c142e549a2890fcf18aba3049ca713b848d02e (patch) | |
| tree | 32d48af331dc356dcbb3510655942728be1390f4 /ishtar_common/models.py | |
| parent | 76a8b8c9807b780705180e617caf0f7f5a40264d (diff) | |
| download | Ishtar-42c142e549a2890fcf18aba3049ca713b848d02e.tar.bz2 Ishtar-42c142e549a2890fcf18aba3049ca713b848d02e.zip | |
Fix permission management
* improve ObjectPermBackend
* change permission right from wizard to groups
* remove default to administrator
* add default data for french person_types
Diffstat (limited to 'ishtar_common/models.py')
| -rw-r--r-- | ishtar_common/models.py | 22 | 
1 files changed, 15 insertions, 7 deletions
| diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 456368d6e..ee5ad0c8d 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -37,7 +37,7 @@ from django.utils.translation import ugettext_lazy as _, ugettext  from django.utils.safestring import SafeUnicode, mark_safe  from django.template.defaultfilters import slugify -from django.contrib.auth.models import User +from django.contrib.auth.models import User, Group  from django.contrib.gis.db import models  from django.contrib import admin @@ -641,7 +641,8 @@ class Organization(Address, OwnPerms):          return self.name  class PersonType(GeneralType): -    rights = models.ManyToManyField(WizardStep, verbose_name=_(u"Rights")) +    #rights = models.ManyToManyField(WizardStep, verbose_name=_(u"Rights")) +    groups = models.ManyToManyField(Group, verbose_name=_(u"Groups"))      class Meta:          verbose_name = _(u"Person type")          verbose_name_plural = _(u"Person types") @@ -687,11 +688,17 @@ class Person(Address, OwnPerms) :          return u", ".join([unicode(pt) for pt in self.person_types.all()])      def has_right(self, right_name): +        if '.' in right_name: +            right_name = right_name.split('.')[-1]          if type(right_name) in (list, tuple): -            return bool( -              self.person_types.filter(txt_idx__in=right_name).count()) +            return bool(self.person_types.filter( +                                           txt_idx__in=right_name).count()) or \ +                   bool(self.person_types.filter( +                     groups__permissions__codename__in=right_name).count())          # or self.person_types.filter(wizard__url_name__in=right_name).count()) -        return bool(self.person_types.filter(txt_idx=right_name).count()) +        return bool(self.person_types.filter(txt_idx=right_name).count()) or \ +               bool(self.person_types.filter( +                     groups__permissions__codename=right_name).count())          # or self.person_types.filter(wizard__url_name=right_name).count())      def full_label(self): @@ -711,7 +718,8 @@ class Person(Address, OwnPerms) :          return slugify(u"-".join(values))  class IshtarUser(User): -    person = models.ForeignKey(Person, verbose_name=_(u"Person"), unique=True) +    person = models.ForeignKey(Person, verbose_name=_(u"Person"), unique=True, +                               related_name='ishtaruser')      class Meta:          verbose_name = _(u"Ishtar user") @@ -735,7 +743,7 @@ class IshtarUser(User):          return IshtarUser.objects.create(user_ptr=user, person=person)      def has_right(self, right_name): -       return self.person.has_right('administrator') +       return self.person.has_right(right_name)  class AuthorType(GeneralType):      class Meta: | 
