some more improvements to lists

This commit is contained in:
rlx 2011-01-13 11:54:52 +00:00
commit 3cec70395e
4 changed files with 88 additions and 42 deletions

View file

@ -37,7 +37,6 @@ def parseCondition(condition, user):
else:
exclude = False
if k == 'subscribed':
print "FXIME, subscribed needs work"
key = 'subscribed_users__username'
v = user.username
elif isinstance(v, bool): #featured and public flag

View file

@ -30,10 +30,10 @@ def _order_query(qs, sort):
def _parse_query(data, user):
query = {}
query['range'] = [0, 100]
#query['sort'] = [{'key':'user', 'operator':'+'}, {'key':'name', 'operator':'+'}]
query['sort'] = [{'key':'position__position', 'operator':'+'}]
query['sort'] = [{'key':'user', 'operator':'+'}, {'key':'name', 'operator':'+'}]
#query['sort'] = [{'key':'position__position', 'operator':'+'}]
query['sort'] = [{'key':'name', 'operator':'+'}]
for key in ('keys', 'group', 'list', 'range', 'ids'):
for key in ('keys', 'group', 'list', 'range', 'ids', 'sort'):
if key in data:
query[key] = data[key]
query['qs'] = models.List.objects.find(data, user)
@ -77,10 +77,16 @@ def findLists(request):
query = _parse_query(data, request.user)
#order
#FIXME: having to use distinct here seams wrong
qs = _order_query(query['qs'].distinct(), query['sort'])
#qs = query['qs'].distinct().order_by('position__position')
#qs = query['qs']
is_section_request = query['sort'] == [{u'operator': u'+', u'key': u'position'}]
is_featured = len(filter(lambda x: x['key'] == 'status' and x['value'] == 'featured' and x['operator'] == '=', data['query'].get('conditions', []))) > 0
if is_section_request:
qs = query['qs']
if not is_featured:
qs = qs.filter(position__in=models.Position.objects.filter(user=request.user))
qs = qs.order_by('position__position')
else:
qs = _order_query(query['qs'], query['sort'])
#range
response = json_response()
@ -225,6 +231,9 @@ def editList(request):
if value not in list._status:
value = list._status[0]
setattr(list, key, value)
if value == 'private':
for user in list.subscribed_users.all():
list.subscribed_users.remove(user)
elif key == 'name':
name = data['name']
num = 1

View file

@ -37,9 +37,7 @@ class UserProfile(models.Model):
ui['lists'][''] = site_config['uiDefaults']['list']
def add(lists, section):
print lists, section
ids = [l.get_id() for l in lists]
in_list = filter(lambda l: l in ui['lists'], ids)
ids = []
for l in lists:
if section == 'featured':
pos, created = Position.objects.get_or_create(list=l, section=section)
@ -49,11 +47,10 @@ class UserProfile(models.Model):
pos.position = len(in_list)
pos.save()
id = l.get_id()
if id not in in_list:
if id not in ui['lists']:
ui['lists'][id] = {}
ui['lists'][id].update(ui['lists'][''])
in_list.append(id)
ui['lists'][id]['position'] = pos.position
ids.append(id)
return ids
ids = ['']