summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaksim A. Boyko <maksim.a.boyko@gmail.com>2012-08-17 05:37:22 -0400
committerMaksim A. Boyko <maksim.a.boyko@gmail.com>2012-08-17 05:37:22 -0400
commit72128ec57a147a35466e47008f90f8a7f7904e9b (patch)
tree74a308b5d3a14f7e4180b12c742be26a57412976
parentfc8c1894ad2189e75f0c6069f8bdd59786e88f67 (diff)
Backend: Add api_room_watch view
-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):