summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
Diffstat (limited to 'backend')
-rw-r--r--backend/views.py53
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):