update video editor

This commit is contained in:
rolux 2012-01-15 20:35:37 +05:30
commit 84cdd2ebf5
13 changed files with 155 additions and 44 deletions

View file

@ -118,7 +118,6 @@ class Annotation(models.Model):
}
for key in ('id', 'in', 'out', 'value', 'created', 'modified'):
j[key] = getattr(self, {
'duration': 'clip__duration',
'hue': 'clip__hue',
'id': 'public_id',
'in': 'start',
@ -127,6 +126,7 @@ class Annotation(models.Model):
'saturation': 'clip__saturation',
'volume': 'clip__volume',
}.get(key, key))
j['duration'] = j['out'] - j['in']
l = self.get_layer()
if l['type'] == 'place':

View file

@ -142,6 +142,7 @@ def addAnnotation(request):
value=data['value'])
annotation.save()
response = json_response(annotation.json())
response['data']['editable'] = True
else:
response = json_response(status=403, text='permission denied')
return render_to_json_response(response)
@ -198,6 +199,7 @@ def editAnnotation(request):
}.get(key,key), data[key])
a.save()
response['data'] = a.json()
response['data']['editable'] = True
else:
response = json_response(status=403, text='permission denied')
return render_to_json_response(response)

View file

@ -364,6 +364,17 @@ def editFile(request):
return render_to_json_response(response)
actions.register(editFile, cache=False)
@login_required_json
def removeFiles(request):
data = json.loads(request.POST['data'])
response = json_response()
if request.user.get_profile().get_level() == 'admin':
models.File.objects.filter(oshash__in=data['ids'], instances__id=None).delete()
else:
response = json_response(status=403, text='permissino denied')
return render_to_json_response(response)
actions.register(removeFiles, cache=False)
def lookup_file(request, oshash):
f = get_object_or_404(models.File, oshash=oshash)

View file

@ -216,6 +216,15 @@ class Item(models.Model):
for g in filter(lambda g: g not in current_groups, groups):
group, created = Group.objects.get_or_create(name=g)
self.groups.add(group)
keys = [k['id'] for k in
filter(lambda i: i.get('description'), settings.CONFIG['itemKeys'])]
for k in keys:
key = '%sdescription' % k
if key in data:
value = data.get(k, self.get(k, ''))
d, created = Description.objects.get_or_create(key=k, value=value)
d.description = data.pop(key)
d.save()
for key in data:
self.data[key] = data[key]
return self.save()
@ -496,6 +505,17 @@ class Item(models.Model):
elif self.poster_frame != -1.0:
i['posterFrame'] = self.poster_frame
dkeys = [k['id'] for k in
filter(lambda i: i.get('description'), settings.CONFIG['itemKeys'])]
if keys:
dkeys = filter(lambda k: k in keys, dkeys)
for key in dkeys:
qs = Description.objects.filter(key=key, value=self.get(key, ''))
if qs.count() == 0:
i['%sdescription'%key] = ''
else:
i['%sdescription'%key] = qs[0].description
if keys:
info = {}
for key in keys:
@ -1299,3 +1319,13 @@ class Facet(models.Model):
self.sortvalue = utils.sort_string(self.value)
super(Facet, self).save(*args, **kwargs)
class Description(models.Model):
'''
shared itemkey descriptions
'''
class Meta:
unique_together = ("key", "value")
key = models.CharField(max_length=200, db_index=True)
value = models.CharField(max_length=1000, db_index=True)
description = models.TextField()

View file

@ -404,7 +404,11 @@ def get(request):
if not data['keys'] or 'notes' in data['keys'] \
and request.user.get_profile().capability('canEditMetadata'):
info['notes'] = item.notes
if not data['keys'] or 'groups' in data['keys'] \
and request.user.get_profile().capability('canEditMetadata'):
info['groups'] = [g.name for g in item.groups.all()]
info['editable'] = item.editable(request.user)
response['data'] = info
else:
response = json_response(status=403, text='permission denied')

View file

@ -56,7 +56,8 @@
{"id": "keywords", "title": "Keywords", "type": "string"},
{"id": "language", "title": "Languages", "type": "string"},
{"id": "places", "title": "Places", "type": "string"},
{"id": "year", "title": "Years", "type": "integer"},
//{"id": "year", "title": "Years", "type": "integer"},
{"id": "features", "title": "Features", "type": "string"},
{"id": "director", "title": "Directors", "type": "string"},
{"id": "cinematographer", "title": "Cinematographers", "type": "string"}
],
@ -104,6 +105,7 @@
"title": "Source",
"type": "string",
"autocomplete": true,
"description": true,
"columnWidth": 180,
"filter": true,
"find": true
@ -113,6 +115,7 @@
"title": "Project",
"type": "string",
"autocomplete": true,
"description": true,
"columnWidth": 120,
"filter": true,
"find": true
@ -562,7 +565,7 @@
"showBrowser": true,
"showCalendarControls": true, // fixme: should be false
"showFilters": true,
"showFlags": true,
"showFlags": false,
"showHome": true,
"showIconBrowser": false,
"showInfo": true,