performance
This commit is contained in:
parent
d451eb3063
commit
21d6324eb6
6 changed files with 47 additions and 74 deletions
|
|
@ -87,15 +87,9 @@ def find(data):
|
|||
j = i.json()
|
||||
response['items'].append({k:j[k] for k in j if not data['keys'] or k in data['keys']})
|
||||
else:
|
||||
key = 'stats:' + hashlib.sha1(json.dumps(data)).hexdigest()
|
||||
stats = state.cache.get(key)
|
||||
if stats is None:
|
||||
stats = {}
|
||||
size = [i.info.get('size', 0) for i in q['qs'].join(models.Sort).options(load_only('id', 'info'))]
|
||||
stats['items'] = len(size)
|
||||
stats['size'] = sum(size)
|
||||
state.cache.set(key, stats, ttl=60)
|
||||
response = stats
|
||||
size = [i.info.get('size', 0) for i in q['qs'].join(models.Sort).options(load_only('id', 'info'))]
|
||||
response['items'] = len(size)
|
||||
response['size'] = sum(size)
|
||||
return response
|
||||
actions.register(find)
|
||||
|
||||
|
|
@ -154,9 +148,14 @@ def remove(data):
|
|||
if 'ids' in data and data['ids']:
|
||||
for i in models.Item.query.filter(models.Item.id.in_(data['ids'])):
|
||||
i.remove_file()
|
||||
return {}
|
||||
return {
|
||||
'items': []
|
||||
}
|
||||
actions.register(remove, cache=False)
|
||||
|
||||
def autocomplete(data):
|
||||
return {}
|
||||
actions.register(remove, cache=False)
|
||||
|
||||
def findMetadata(data):
|
||||
'''
|
||||
|
|
|
|||
|
|
@ -148,6 +148,10 @@ class Item(db.Model):
|
|||
value = map(get_sort_name, value)
|
||||
value = ox.sort_string(u'\n'.join(value))
|
||||
elif sort_type == 'title':
|
||||
if isinstance(value, dict):
|
||||
value = value.values()
|
||||
if isinstance(value, list):
|
||||
value = u''.join(value)
|
||||
value = utils.sort_title(value).lower()
|
||||
else:
|
||||
if isinstance(value, list):
|
||||
|
|
@ -176,6 +180,8 @@ class Item(db.Model):
|
|||
if value: value = value[0]
|
||||
if value:
|
||||
Find.query.filter_by(item_id=self.id, key=key['id']).delete()
|
||||
if isinstance(value, dict):
|
||||
value = ' '.join(value.values())
|
||||
if not isinstance(value, list):
|
||||
value = [value]
|
||||
for v in value:
|
||||
|
|
@ -185,24 +191,6 @@ class Item(db.Model):
|
|||
if f:
|
||||
db.session.delete(f)
|
||||
|
||||
def update_lists(self):
|
||||
Find.query.filter_by(item_id=self.id, key='list').delete()
|
||||
for p in self.users:
|
||||
f = Find()
|
||||
f.item_id = self.id
|
||||
f.key = 'list'
|
||||
if p.id == settings.USER_ID:
|
||||
f.findvalue = f.value = ':'
|
||||
else:
|
||||
f.findvalue = f.value = '%s:' % p.id
|
||||
db.session.add(f)
|
||||
for l in self.lists:
|
||||
f = Find()
|
||||
f.item_id = self.id
|
||||
f.key = 'list'
|
||||
f.findvalue = f.value = l.find_id
|
||||
db.session.add(f)
|
||||
|
||||
def update(self):
|
||||
for key in ('mediastate', 'coverRatio', 'previewRatio'):
|
||||
if key in self.meta:
|
||||
|
|
@ -220,7 +208,6 @@ class Item(db.Model):
|
|||
self.meta.update(Metadata.load(*self.meta['primaryid']))
|
||||
self.update_sort()
|
||||
self.update_find()
|
||||
self.update_lists()
|
||||
#self.modified = datetime.utcnow()
|
||||
self.save()
|
||||
|
||||
|
|
@ -457,7 +444,7 @@ class Find(db.Model):
|
|||
item = db.relationship('Item', backref=db.backref('find', lazy='dynamic'))
|
||||
key = db.Column(db.String(200), index=True)
|
||||
value = db.Column(db.Text())
|
||||
findvalue = db.Column(db.Text())
|
||||
findvalue = db.Column(db.Text(), index=True)
|
||||
|
||||
def __repr__(self):
|
||||
return (u'%s=%s' % (self.key, self.findvalue)).encode('utf-8')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue