speedup annotation looksup

This commit is contained in:
j 2011-08-23 12:47:59 +02:00
parent 48fc8c2828
commit 2c2ec73d49
2 changed files with 9 additions and 7 deletions

View file

@ -79,8 +79,9 @@ class Annotation(models.Model):
user = models.ForeignKey(User) user = models.ForeignKey(User)
item = models.ForeignKey('item.Item', related_name='annotations') item = models.ForeignKey('item.Item', related_name='annotations')
public_id = models.CharField(max_length=128, unique=True)
#seconds #seconds
start = models.FloatField(default=-1) start = models.FloatField(default=-1, db_index=True)
end = models.FloatField(default=-1) end = models.FloatField(default=-1)
layer = models.ForeignKey(Layer) layer = models.ForeignKey(Layer)
@ -100,12 +101,15 @@ class Annotation(models.Model):
else: else:
return self.value return self.value
def get_id(self): def save(self, *args, **kwargs):
return '%s/%s' % (self.item.itemId, ox.to32(self.id)) if not self.id:
super(Annotation, self).save(*args, **kwargs)
self.public_id = '%s/%s' % (self.item.itemId, ox.to32(self.id))
super(Annotation, self).save(*args, **kwargs)
def json(self, layer=False, keys=None): def json(self, layer=False, keys=None):
j = { j = {
'id': self.get_id(), 'id': self.public_id,
'user': self.user.username, 'user': self.user.username,
'in': self.start, 'in': self.start,
'out': self.end, 'out': self.end,
@ -125,8 +129,6 @@ class Annotation(models.Model):
streams = self.item.streams() streams = self.item.streams()
if streams: if streams:
j['videoRatio'] = streams[0].aspect_ratio j['videoRatio'] = streams[0].aspect_ratio
if 'item' in keys:
j['item'] = self.item.itemId
return j return j
def __unicode__(self): def __unicode__(self):

View file

@ -58,7 +58,7 @@ def findAnnotations(request):
qs = qs[query['range'][0]:query['range'][1]] qs = qs[query['range'][0]:query['range'][1]]
response['data']['items'] = [p.json(keys=data['keys']) for p in qs] response['data']['items'] = [p.json(keys=data['keys']) for p in qs]
elif 'position' in query: elif 'position' in query:
ids = [i.get_id() for i in qs] ids = [i.public_id for i in qs]
data['conditions'] = data['conditions'] + { data['conditions'] = data['conditions'] + {
'value': data['position'], 'value': data['position'],
'key': query['sort'][0]['key'], 'key': query['sort'][0]['key'],