store clip values in clip db, cleanup if all annotations are gone, add additionalSort
This commit is contained in:
parent
10a1239df7
commit
16cc495fb5
10 changed files with 109 additions and 99 deletions
|
|
@ -40,7 +40,6 @@ import archive.models
|
|||
from person.models import get_name_sort
|
||||
from title.models import get_title_sort
|
||||
|
||||
|
||||
def get_id(info):
|
||||
q = Item.objects.all()
|
||||
for key in ('title', 'director', 'year'):
|
||||
|
|
@ -325,9 +324,6 @@ class Item(models.Model):
|
|||
if self.poster_frame == -1 and self.sort.duration:
|
||||
self.poster_frame = self.sort.duration/2
|
||||
update_poster = True
|
||||
if not self.get('runtime') and self.sort.duration:
|
||||
self.data['runtime'] = self.sort.duration
|
||||
self.update_sort()
|
||||
self.json = self.get_json()
|
||||
super(Item, self).save(*args, **kwargs)
|
||||
if update_ids:
|
||||
|
|
@ -1143,7 +1139,7 @@ class Item(models.Model):
|
|||
return icon
|
||||
|
||||
def load_subtitles(self):
|
||||
if not filter(lambda l: l['id'] == 'subtitles', settings.CONFIG['layers']):
|
||||
if not utils.get_by_id(settings.CONFIG['layers'], 'subtitles'):
|
||||
return
|
||||
with transaction.commit_on_success():
|
||||
layer = 'subtitles'
|
||||
|
|
@ -1220,7 +1216,8 @@ pre_delete.connect(delete_item, sender=Item)
|
|||
|
||||
Item.facet_keys = []
|
||||
for key in settings.CONFIG['itemKeys']:
|
||||
if 'autocomplete' in key and not 'autocompleteSortKey' in key:
|
||||
if 'autocomplete' in key and not 'autocompleteSortKey' in key or \
|
||||
key.get('filter'):
|
||||
Item.facet_keys.append(key['id'])
|
||||
|
||||
Item.person_keys = []
|
||||
|
|
|
|||
|
|
@ -78,3 +78,7 @@ def get_positions(ids, pos):
|
|||
except:
|
||||
pass
|
||||
return positions
|
||||
|
||||
def get_by_id(objects, id):
|
||||
obj = filter(lambda o: o['id'] == id, objects)
|
||||
return obj and obj[0] or None
|
||||
|
|
|
|||
|
|
@ -33,23 +33,15 @@ from clip.models import Clip
|
|||
|
||||
from ox.django.api import actions
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
def _order_query(qs, sort, prefix='sort__'):
|
||||
order_by = []
|
||||
if len(sort) == 1:
|
||||
if sort[0]['key'] == 'title':
|
||||
sort.append({'operator': '-', 'key': 'year'})
|
||||
sort.append({'operator': '+', 'key': 'director'})
|
||||
elif sort[0]['key'] == 'director':
|
||||
sort.append({'operator': '-', 'key': 'year'})
|
||||
sort.append({'operator': '-', 'key': 'title'})
|
||||
elif sort[0]['key'] == 'year':
|
||||
sort.append({'operator': '+', 'key': 'director'})
|
||||
sort.append({'operator': '+', 'key': 'title'})
|
||||
elif not sort[0]['key'] in ('value', 'sortvalue'):
|
||||
sort.append({'operator': '+', 'key': 'director'})
|
||||
sort.append({'operator': '-', 'key': 'year'})
|
||||
sort.append({'operator': '+', 'key': 'title'})
|
||||
key = utils.get_by_id(settings.CONFIG['itemKeys'], sort[0]['key'])
|
||||
for s in key.get('additionalSort', settings.CONFIG.get('additionalSort', [])):
|
||||
sort.append(s)
|
||||
for e in sort:
|
||||
operator = e['operator']
|
||||
if operator != '-':
|
||||
|
|
@ -273,14 +265,21 @@ Positions
|
|||
Sum('pixels'),
|
||||
Sum('size')
|
||||
)
|
||||
response['data']['duration'] = r['duration__sum']
|
||||
response['data']['files'] = files.count()
|
||||
response['data']['items'] = items.count()
|
||||
response['data']['pixels'] = r['pixels__sum']
|
||||
response['data']['runtime'] = items.aggregate(Sum('sort__runtime'))['sort__runtime__sum']
|
||||
response['data']['size'] = r['size__sum']
|
||||
totals = [i['id'] for i in settings.CONFIG['totals']]
|
||||
if 'duration' in totals:
|
||||
response['data']['duration'] = r['duration__sum']
|
||||
if 'files' in totals:
|
||||
response['data']['files'] = files.count()
|
||||
if 'items' in totals:
|
||||
response['data']['items'] = items.count()
|
||||
if 'pixels' in totals:
|
||||
response['data']['pixels'] = r['pixels__sum']
|
||||
if 'runtime' in totals:
|
||||
response['data']['runtime'] = items.aggregate(Sum('sort__runtime'))['sort__runtime__sum'] or 0
|
||||
if 'size' in totals:
|
||||
response['data']['size'] = r['size__sum']
|
||||
for key in ('runtime', 'duration', 'pixels', 'size'):
|
||||
if response['data'][key] == None:
|
||||
if key in totals and response['data'][key] == None:
|
||||
response['data'][key] = 0
|
||||
return render_to_json_response(response)
|
||||
actions.register(find)
|
||||
|
|
@ -769,8 +768,8 @@ def video(request, id, resolution, format, index=None):
|
|||
response = HttpResponse(extract.chop(path, t[0], t[1]), content_type=content_type)
|
||||
filename = "Clip of %s - %s-%s - %s %s%s" % (
|
||||
item.get('title'),
|
||||
ox.formatDuration(t[0] * 1000),
|
||||
ox.formatDuration(t[1] * 1000),
|
||||
ox.formatDuration(t[0] * 1000).replace(':', '.')[:-4],
|
||||
ox.formatDuration(t[1] * 1000).replace(':', '.')[:-4],
|
||||
settings.SITENAME,
|
||||
item.itemId,
|
||||
ext
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue