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, 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)