some more improvements to lists
This commit is contained in:
parent
e61ea929ee
commit
3cec70395e
4 changed files with 88 additions and 42 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 = ['']
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue