diff options
Diffstat (limited to 'backend/views.py')
| -rw-r--r-- | backend/views.py | 32 |
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): |
