item should only be loaded if item is joined, disable for now

This commit is contained in:
j 2018-11-15 11:17:29 +00:00
parent f4aa94f848
commit 72bb3ba6c1
3 changed files with 41 additions and 30 deletions

View file

@ -145,7 +145,11 @@ class ClipManager(Manager):
keys = layer_ids + ['annotations', 'text', '*']
conditions = data.get('query', {}).get('conditions', [])
conditions = flatten_conditions(conditions)
conditions = list(filter(lambda c: c.get('key') in keys, conditions))
conditions_ = []
for c in conditions:
if c.get('key') in keys and c not in conditions_:
conditions_.append(c)
conditions = conditions_
operator = data.get('query', {}).get('operator', '&')
def parse(condition):

View file

@ -95,7 +95,7 @@ def findClips(request, data):
if 'keys' in data:
qs = order_query(qs, query['sort'])
qs = qs[query['range'][0]:query['range'][1]]
qs = qs.select_related('item')
#qs = qs.select_related('item')
layers = settings.CONFIG['layers']
entity_layer_ids = [k['id'] for k in layers if k['type'] == 'entity']

View file

@ -11,9 +11,10 @@ import tempfile
from six.moves.urllib.parse import quote
import ox
from django.conf import settings
from django.contrib.auth import get_user_model
from django.core.cache import cache
from django.db import models, transaction
from django.db.models import Max
from django.contrib.auth import get_user_model
from django.utils.encoding import python_2_unicode_compatible
from oxdjango.fields import JSONField
@ -118,7 +119,7 @@ class Edit(models.Model):
c = self.add_clip(data)
if c:
ids.insert(index, c.id)
added.append(c.json(user))
added.append(c.json(user=user))
added[-1]['index'] = index
index += 1
else:
@ -488,32 +489,38 @@ class Clip(models.Model):
self.sortvolume = 0
def json(self, user=None):
data = {
'id': self.get_id(),
'index': self.index,
'volume': self.volume,
}
if self.annotation:
data['annotation'] = self.annotation.public_id
data['item'] = self.item.public_id
data['in'] = self.annotation.start
data['out'] = self.annotation.end
data['parts'] = self.annotation.item.cache['parts']
data['durations'] = self.annotation.item.cache['durations']
else:
data['item'] = self.item.public_id
data['in'] = self.start
data['out'] = self.end
data['parts'] = self.item.cache['parts']
data['durations'] = self.item.cache['durations']
for key in ('title', 'director', 'year', 'videoRatio'):
value = self.item.cache.get(key)
if value:
data[key] = value
data['duration'] = data['out'] - data['in']
data['cuts'] = tuple([c for c in self.item.get('cuts', []) if c > self.start and c < self.end])
data['layers'] = self.get_layers(user)
data['streams'] = [s.file.oshash for s in self.item.streams()]
cache_key = 'edit:clip:' + str(self.get_id())
if user:
cache_key += ':' + user.username
data = cache.get(cache_key)
if not data:
data = {
'id': self.get_id(),
'index': self.index,
'volume': self.volume,
}
if self.annotation:
data['annotation'] = self.annotation.public_id
data['item'] = self.item.public_id
data['in'] = self.annotation.start
data['out'] = self.annotation.end
data['parts'] = self.annotation.item.cache['parts']
data['durations'] = self.annotation.item.cache['durations']
else:
data['item'] = self.item.public_id
data['in'] = self.start
data['out'] = self.end
data['parts'] = self.item.cache['parts']
data['durations'] = self.item.cache['durations']
for key in ('title', 'director', 'year', 'videoRatio'):
value = self.item.cache.get(key)
if value:
data[key] = value
data['duration'] = data['out'] - data['in']
data['cuts'] = tuple([c for c in self.item.get('cuts', []) if c > self.start and c < self.end])
data['layers'] = self.get_layers(user)
data['streams'] = [s.file.oshash for s in self.item.streams()]
cache.set(cache_key, data, 180)
return data
def get_annotations(self):