From 6eed38520d78c264e09d82334ef6e3cc8ae6a063 Mon Sep 17 00:00:00 2001 From: j <0x006A@0x2620.org> Date: Thu, 6 Jan 2011 12:34:10 +0530 Subject: [PATCH] filter lists, alloed editList to write query --- pandora/item/managers.py | 9 ++++++++- pandora/itemlist/views.py | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pandora/item/managers.py b/pandora/item/managers.py index 95e3ed81..de3acda5 100644 --- a/pandora/item/managers.py +++ b/pandora/item/managers.py @@ -186,7 +186,14 @@ class ItemManager(Manager): if only_public: lqs = lqs.filter(public=True) if lqs.count() == 1: - qs = qs.filter(listitem__list__id=lqs[0].id) + if lqs[0].query: + data = lqs[0].query + conditions = parseConditions(data['query']['conditions'], + data['query'].get('operator', '&')) + if conditions: + qs = qs.filter(conditions) + else: + qs = qs.filter(id__in=lqs[0].items.all()) return qs def find(self, data, user): diff --git a/pandora/itemlist/views.py b/pandora/itemlist/views.py index 84f03ee2..c7ed87c9 100644 --- a/pandora/itemlist/views.py +++ b/pandora/itemlist/views.py @@ -102,7 +102,7 @@ def editList(request): list = get_object_or_404_json(models.List, pk=data['list']) if list.editable(request.user): for key in data: - if key in ('name', 'public'): + if key in ('name', 'public', 'query'): setattr(list, key, data['key']) else: response = json_response(status=403, text='not allowed')