diff options
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index b92614e08..7c2069309 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -2470,6 +2470,24 @@ class Person(Address, Merge, OwnPerms, ValueGetter): [unicode(getattr(self, attr)) for attr in ['title', 'salutation'] if getattr(self, attr)]) + @property + def default_profile(self): + q = self.profiles.filter(default=True) + if q.count(): + return q.all()[0] + q = self.profiles + nb = q.count() + if not nb: + return + if nb > 1: + # arbitrary return the first one + return q.all()[0] + # if there is only one it is the default + profile = q.all()[0] + profile.default = True + profile.save() + return profile + def simple_lbl(self): values = [unicode(getattr(self, attr)) for attr in ('surname', 'name') if getattr(self, attr)] @@ -2630,6 +2648,32 @@ class Person(Address, Merge, OwnPerms, ValueGetter): =user.ishtaruser) +class ProfileType(GeneralType): + groups = models.ManyToManyField(Group, verbose_name=_(u"Groups"), + blank=True) + + class Meta: + verbose_name = _(u"Profile type") + verbose_name_plural = _(u"Profile types") + ordering = ('label',) + + +post_save.connect(post_save_cache, sender=ProfileType) +post_delete.connect(post_save_cache, sender=ProfileType) + + +class UserProfile(models.Model): + profile_type = models.ForeignKey( + ProfileType, verbose_name=_(u"Profile type")) + default = models.BooleanField(_(u"Default profile"), default=False) + person = models.ForeignKey( + Person, verbose_name=_(u"Person"), related_name='profiles') + + class Meta: + verbose_name = _(u"User profile") + verbose_name_plural = _(u"User profiles") + + class IshtarUser(FullSearch): TABLE_COLS = ('username', 'person__name', 'person__surname', 'person__email', 'person__person_types_list', |