From a3b65cb046d82204abd894d8c0c47070b7e3920b Mon Sep 17 00:00:00 2001 From: rolux Date: Thu, 13 Jan 2011 15:32:14 +0000 Subject: [PATCH] fix addList/removeList/unknown list --- pandora/item/managers.py | 20 ++++++++++---------- pandora/itemlist/views.py | 33 ++++++++++++++++----------------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/pandora/item/managers.py b/pandora/item/managers.py index 63fd4aae5..c641c832a 100644 --- a/pandora/item/managers.py +++ b/pandora/item/managers.py @@ -82,17 +82,17 @@ def parseCondition(condition): q = Q(**{k: v}) return q elif key_type == 'list': + q = Q(itemId=False) l = v.split(".") - lqs = List.objects.filter(name=l[1], user__username=l[0]) - if lqs.count() == 1: - if lqs[0].query.get('static', False) == False: - data = lqs[0].query - q = parseConditions(data['conditions'], - data.get('operator', '&')) - else: - q = Q(id__in=lqs[0].items.all()) - else: - q = Q(itemId=False) + if len(l) == 2: + lqs = List.objects.filter(name=l[1], user__username=l[0]) + if lqs.count() == 1: + if lqs[0].query.get('static', False) == False: + data = lqs[0].query + q = parseConditions(data['conditions'], + data.get('operator', '&')) + else: + q = Q(id__in=lqs[0].items.all()) return q else: #number or date diff --git a/pandora/itemlist/views.py b/pandora/itemlist/views.py index 4b0e1bb4d..b17e70c48 100644 --- a/pandora/itemlist/views.py +++ b/pandora/itemlist/views.py @@ -178,17 +178,19 @@ def addList(request): } ''' data = json.loads(request.POST['data']) - if models.List.objects.filter(name=data['name'], user=request.user).count() == 0: - list = models.List(name = data['name'], user=request.user) - list.save() - pos, created = models.Position.objects.get_or_create(list=list, user=request.user, section='my') - pos.position = data['position'] - pos.save() - response = json_response(status=200, text='created') - response['data']['list'] = list.json() - else: - response = json_response(status=200, text='list already exists') - response['data']['errors'] = {'name': 'List already exists'} + name = data['name'] + num = 1 + while models.List.objects.filter(name=name, user=request.user).count()>0: + num += 1 + name = data['name'] + ' (%d)' % num + list = models.List(name = name, user=request.user) + list.save() + pos, created = models.Position.objects.get_or_create(list=list, + user=request.user, section='my') + pos.position = data['position'] + pos.save() + response = json_response(status=200, text='created') + response['data'] = list.json() return render_to_json_response(response) actions.register(addList, cache=False) @@ -263,8 +265,7 @@ actions.register(editList, cache=False) def removeList(request): ''' param data { - name: value, - user: username(only admins) + id: listId, } return { status: {'code': int, 'text': string}, @@ -273,10 +274,8 @@ def removeList(request): } ''' data = json.loads(request.POST['data']) - user = request.user.username - if user.is_staff and 'user' in data: - user = data.get('user') - list = get_object_or_404_json(models.List, name=data['name'], user__username=user) + list = get_list_or_404_json(data['id']) + response = json_response() if list.editable(request.user): list.delete() else: