clip timeline
This commit is contained in:
parent
2d5f924891
commit
a00b88acd9
6 changed files with 244 additions and 1 deletions
166
pandora/timeline/views.py
Normal file
166
pandora/timeline/views.py
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
from __future__ import division
|
||||
|
||||
from ox.utils import json
|
||||
from ox.django.decorators import login_required_json
|
||||
from ox.django.shortcuts import render_to_json_response, get_object_or_404_json, json_response
|
||||
|
||||
from api.actions import actions
|
||||
import models
|
||||
|
||||
|
||||
@login_required_json
|
||||
def addClip(request):
|
||||
'''
|
||||
param data
|
||||
{timeline: timelineId,
|
||||
item: itemId,
|
||||
start: float,
|
||||
end: float,
|
||||
}
|
||||
return {'status': {'code': int, 'text': string},
|
||||
'data': {}}
|
||||
'''
|
||||
data = json.loads(request.POST['data'])
|
||||
list = get_object_or_404_json(models.Timeline, pk=data['list'])
|
||||
if 'item' in data:
|
||||
item = get_object_or_404_json(models.Item, pk=data['item'])
|
||||
if list.editable(request.user):
|
||||
list.add(item)
|
||||
response = json_response(status=200, text='item added')
|
||||
else:
|
||||
response = json_response(status=403, text='not allowed')
|
||||
elif 'query' in data:
|
||||
response = json_response(status=501, text='not implemented')
|
||||
|
||||
else:
|
||||
response = json_response(status=501, text='not implemented')
|
||||
return render_to_json_response(response)
|
||||
actions.register(addClip)
|
||||
|
||||
|
||||
@login_required_json
|
||||
def removeClip(request):
|
||||
'''
|
||||
param data
|
||||
{timeline: timelineId,
|
||||
clip: clipId,
|
||||
}
|
||||
return {'status': {'code': int, 'text': string},
|
||||
'data': {}}
|
||||
'''
|
||||
data = json.loads(request.POST['data'])
|
||||
list = get_object_or_404_json(models.Timeline, pk=data['list'])
|
||||
if 'item' in data:
|
||||
item = get_object_or_404_json(models.Item, pk=data['item'])
|
||||
if list.editable(request.user):
|
||||
list.remove(item)
|
||||
response = json_response(status=200, text='item removed')
|
||||
else:
|
||||
response = json_response(status=403, text='not allowed')
|
||||
elif 'query' in data:
|
||||
response = json_response(status=501, text='not implemented')
|
||||
|
||||
else:
|
||||
response = json_response(status=501, text='not implemented')
|
||||
return render_to_json_response(response)
|
||||
actions.register(removeClip)
|
||||
|
||||
|
||||
def getTimeline(request):
|
||||
'''
|
||||
param data
|
||||
{name: value, user: user}
|
||||
return {
|
||||
'status': {'code': int, 'text': string},
|
||||
'data': {
|
||||
fixme
|
||||
}
|
||||
}
|
||||
|
||||
could be
|
||||
timeline: {
|
||||
0: {
|
||||
itemId:, start, end
|
||||
},
|
||||
123: {
|
||||
itemId:, start, end
|
||||
}
|
||||
}
|
||||
or implicit timeline position
|
||||
timeline: [
|
||||
{
|
||||
itemId:, start, end
|
||||
},
|
||||
{
|
||||
itemId:, start, end
|
||||
}
|
||||
]
|
||||
|
||||
'''
|
||||
response = json_response(status=501, text='not implemented')
|
||||
return render_to_json_response(response)
|
||||
actions.register(getTimeline)
|
||||
|
||||
|
||||
@login_required_json
|
||||
def addTimeline(request):
|
||||
'''
|
||||
param data
|
||||
{name: value}
|
||||
return {'status': {'code': int, 'text': string},
|
||||
'data': {}}
|
||||
'''
|
||||
data = json.loads(request.POST['data'])
|
||||
if models.Timeline.filter(name=data['name'], user=request.user).count() == 0:
|
||||
list = models.Timeline(name=data['name'], user=request.user)
|
||||
list.save()
|
||||
response = json_response(status=200, text='created')
|
||||
else:
|
||||
response = json_response(status=200, text='list already exists')
|
||||
response['data']['errors'] = {
|
||||
'name': 'List already exists'
|
||||
}
|
||||
return render_to_json_response(response)
|
||||
actions.register(addTimeline)
|
||||
|
||||
|
||||
@login_required_json
|
||||
def editTimeline(request):
|
||||
'''
|
||||
param data
|
||||
{key: value}
|
||||
keys: name, public
|
||||
return {'status': {'code': int, 'text': string},
|
||||
'data': {}
|
||||
}
|
||||
'''
|
||||
data = json.loads(request.POST['data'])
|
||||
list = get_object_or_404_json(models.Timeline, pk=data['list'])
|
||||
if list.editable(request.user):
|
||||
for key in data:
|
||||
if key in ('name', 'public'):
|
||||
setattr(list, key, data['key'])
|
||||
else:
|
||||
response = json_response(status=403, text='not allowed')
|
||||
return render_to_json_response(response)
|
||||
actions.register(editTimeline)
|
||||
|
||||
|
||||
@login_required_json
|
||||
def removeTimeline(request):
|
||||
'''
|
||||
param data
|
||||
{key: value}
|
||||
return {'status': {'code': int, 'text': string},
|
||||
'data': {}}
|
||||
'''
|
||||
data = json.loads(request.POST['data'])
|
||||
list = get_object_or_404_json(models.Timeline, pk=data['list'])
|
||||
if list.editable(request.user):
|
||||
list.delete()
|
||||
else:
|
||||
response = json_response(status=403, text='not allowed')
|
||||
return render_to_json_response(response)
|
||||
actions.register(removeTimeline)
|
||||
Loading…
Add table
Add a link
Reference in a new issue