summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r--ishtar_common/models.py22
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: