diff options
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: |