diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-10-18 17:56:55 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-10-24 12:06:09 +0200 |
commit | bef385bdb038c6f4f00ca8ba176c8f3d4ef5c5ed (patch) | |
tree | 1f7dcecec02273235224cbaa86f8d4dee35068ec /ishtar_common/models.py | |
parent | 923bce0f14bc6ce436a44f31c6e716ef8876cb69 (diff) | |
download | Ishtar-bef385bdb038c6f4f00ca8ba176c8f3d4ef5c5ed.tar.bz2 Ishtar-bef385bdb038c6f4f00ca8ba176c8f3d4ef5c5ed.zip |
Basket: list view, better sheet, allow basket sharing (db and right management)
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index a1bae96c2..82c754fa0 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -3408,7 +3408,7 @@ class IshtarUser(FullSearch): return self.person.full_label() -class Basket(models.Model): +class Basket(FullSearch): """ Abstract class for a basket Subclass must be defined with an "items" ManyToManyField @@ -3416,8 +3416,19 @@ class Basket(models.Model): IS_BASKET = True label = models.CharField(_(u"Label"), max_length=1000) comment = models.TextField(_(u"Comment"), blank=True, null=True) - user = models.ForeignKey(IshtarUser, blank=True, null=True) + user = models.ForeignKey( + IshtarUser, blank=True, null=True, related_name='%(class)ss', + verbose_name=_(u"Owner")) available = models.BooleanField(_(u"Available"), default=True) + shared_with = models.ManyToManyField( + IshtarUser, verbose_name=_(u"Shared with"), blank=True, + related_name='shared_%(class)ss' + ) + + TABLE_COLS = ['label', 'user'] + + BASE_SEARCH_VECTORS = ['label', 'comment'] + M2M_SEARCH_VECTORS = ['items'] class Meta: abstract = True @@ -3426,6 +3437,13 @@ class Basket(models.Model): def __unicode__(self): return self.label + @classmethod + def BASE_REQUEST(cls, request): + if not request.user or not getattr(request.user, 'ishtaruser', None): + return Q(pk=None) + ishtaruser = request.user.ishtaruser + return Q(user=ishtaruser) | Q(shared_with=ishtaruser) + @property def cached_label(self): return unicode(self) |