diff options
Diffstat (limited to 'backend')
| -rw-r--r-- | backend/views.py | 53 |
1 files changed, 38 insertions, 15 deletions
diff --git a/backend/views.py b/backend/views.py index f87c9b6..82dcee2 100644 --- a/backend/views.py +++ b/backend/views.py @@ -14,6 +14,7 @@ from datetime import timedelta import sha import time +import cStringIO from backend.models import SJLike from backend.models import SJRoom @@ -21,6 +22,7 @@ from backend.models import SJContent from backend.models import SJUserProfile API_HEADER = '#@scanjam 0.3b\n' +ROOM_CHAT_LOG_SIZE = 50 ROOM_VIDEO_LOG_SIZE = 50 ACCESS_USER = 0 ACCESS_MODERATOR = 1 @@ -87,6 +89,23 @@ def user_response_str(request, user=None): user_access = 0 return '%d\t%s\t%s\t%d\n' % (user_id, username, session_id, user_access) +def video_response_str(videos): + """ Return string with list of videos + """ + strio = cStringIO.StringIO() + for v in videos: + s = v.settings + strio.write('VIDEO\t') + strio.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 strio.getvalue() + def thraw(settings_text): settings = dict() if settings_text: @@ -359,17 +378,7 @@ def api_room_watch(request): 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'], - ])) + response.write(video_response_str(videos)) return response @require_POST @@ -391,7 +400,7 @@ def api_room_list(request): @require_POST def api_room_view(request): - """ Private API + """ View room's video, settings and chats. Private API """ user = request.user if not user.is_authenticated(): @@ -405,9 +414,23 @@ def api_room_view(request): room = SJRoom.objects.get(name=request.POST['room']) except: return response_error('no room') - - # user. - return HttpResponse('Not implemented yet!\n') + user_profile.lastseen_chat = datetime.now() + user_profile.save() + response = response_success('\t'.join([u.username for u in room.users.all()])) + videos = SJContent.objects.filter(room=room, content_type='video').order_by('-datetime') + response.write(video_response_str(videos)) + for key, value in room.settings.iteritems(): + response.write('%s\n' % '\t'.join(['ROOM', key, value])) + for text in SJContent.objects.filter(room=room, content_type='text').order_by('-datetime').distinct()[0:ROOM_CHAT_LOG_SIZE]: + response.write('%d\t%s\t%d\t%d\t%s\t%s\n' % ( + text.id, + datetime_to_timestamp(text.datetime), + text.user.id, + room.id, + text.user.username, + text.settings.get('text', '') + )) + return response @require_POST def api_room_join(request): |
