summaryrefslogtreecommitdiff
path: root/backend/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'backend/views.py')
-rw-r--r--backend/views.py32
1 files changed, 28 insertions, 4 deletions
diff --git a/backend/views.py b/backend/views.py
index 5323490..91972c9 100644
--- a/backend/views.py
+++ b/backend/views.py
@@ -48,14 +48,14 @@ def response_error(error, response=None):
response.write('0\t%s\n' % error)
return response
-def response_success(response=None):
+def response_success(message='OK', response=None):
""" Add API OK with setup headers to response
"""
if not response:
response = HttpResponse()
headers(response)
response.write(API_HEADER)
- response.write('OK\n')
+ response.write(message + '\n')
return response
def check_form_fields(request, form_fields):
@@ -101,6 +101,9 @@ def freeze(settings):
def now_timestamp():
return int(time.mktime(time.localtime()))
+def datetime_to_timestamp(dt):
+ return int(time.mktime(dt.timetuple()))
+
#
# AUTH API
#
@@ -338,11 +341,32 @@ def api_user_settings(request):
def api_room_watch(request):
""" Public API
"""
- form_fields = ['room', 'last']
+ form_fields = ['room']
response = check_form_fields(request, form_fields)
if response:
return response
- return HttpResponse('Not implemented yet!\n')
+ try:
+ room = SJRoom.objects.get(name=request.POST['room'])
+ except:
+ return response_error('no room')
+ response = response_success(str(now_timestamp()))
+ last = 0
+ if 'last' in request.POST:
+ last =int(request.POST['last']) - 1
+ videos = SJContent.objects.filter(room=room, content_type='video').order_by('-datetime')
+ if videos and last <= datetime_to_timestamp(videos[0].datetime):
+ for v in videos:
+ s = v.settings
+ response.write('VIDEO\t')
+ response.write('%s\n' % '\t'.join([
+ str(v.id),
+ str(datetime_to_timestamp(v.datetime)),
+ str(v.user.id),
+ v.user.username,
+ s['url'],
+ s['title'],
+ ]))
+ return response
@require_POST
def api_room_list(request):