From bef385bdb038c6f4f00ca8ba176c8f3d4ef5c5ed Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 18 Oct 2018 17:56:55 +0200 Subject: Basket: list view, better sheet, allow basket sharing (db and right management) --- ishtar_common/models.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'ishtar_common/models.py') 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) -- cgit v1.2.3