only find places/events where words match fixes: #58

This commit is contained in:
j 2011-10-30 12:55:46 +01:00
commit e71421f597
3 changed files with 31 additions and 12 deletions

View file

@ -2,10 +2,13 @@
# vi:si:et:sw=4:sts=4:ts=4
from __future__ import division
from django.conf import settings
from ox.utils import json
from ox.django.shortcuts import render_to_json_response, json_response
from api.actions import actions
from annotation.models import Annotation
from item.models import Item
from item import utils
@ -81,15 +84,13 @@ def findClips(request):
qs = qs[query['range'][0]:query['range'][1]]
qs = qs.select_related('item__sort')
response['data']['items'] = [p.json(keys=data['keys']) for p in qs]
from django.conf import settings
from annotation.models import Annotation
keys = data['keys']
public_layers = [l['id']
for l in filter(lambda l: not l.get('private', False),
settings.CONFIG['layers'])]
def merge_annotations(layer, qs):
def add_annotations(layer, qs):
for a in qs.values('public_id', 'value', 'clip__public_id'):
for i in response['data']['items']:
if i['id'] == a['clip__public_id']:
@ -99,13 +100,13 @@ def findClips(request):
'id': a['public_id'],
'value': a['value'],
})
if 'annotations' in keys:
merge_annotations('annotations',
Annotation.objects.filter(layer__name__in=public_layers, clip__in=qs))
for layer in filter(lambda l: l in keys, public_layers):
merge_annotations(layer,
Annotation.objects.filter(layer__name=layer, clip__in=qs))
if response['data']['items']:
if 'annotations' in keys:
add_annotations('annotations',
Annotation.objects.filter(layer__name__in=public_layers, clip__in=qs))
for layer in filter(lambda l: l in keys, public_layers):
add_annotations(layer,
Annotation.objects.filter(layer__name=layer, clip__in=qs))
elif 'position' in query:
qs = order_query(qs, query['sort'])
ids = [i.public_id for i in qs]