diff options
| -rw-r--r-- | backend/models.py | 7 | ||||
| -rw-r--r-- | backend/views.py | 147 |
2 files changed, 145 insertions, 9 deletions
diff --git a/backend/models.py b/backend/models.py index 844f029..d3964af 100644 --- a/backend/models.py +++ b/backend/models.py @@ -10,7 +10,8 @@ class SJUserProfile(models.Model): """ ScannerJammer user model """ user = models.OneToOneField(auth.models.User) nickname = models.CharField(max_length=32, blank=True) - score = models.IntegerField(default=0) + score = models.IntegerField(default=0, blank=True) + access = models.IntegerField(default=0, blank=True) bio = models.TextField(blank=True) settings = models.TextField(blank=True) # Backward compatibility fields @@ -23,7 +24,9 @@ class SJUserProfile(models.Model): verbose_name = "SJ User Profile" def __unicode__(self): - return "%s(%s)" % (self.username or self.user.username, self.nickname) + if self.nickname: + return "%s (%s)" % (self.username or self.user.username, self.nickname) + return "%s" % (self.username or self.user.username) class SJRoom(models.Model): """ ScannerJammer room model """ diff --git a/backend/views.py b/backend/views.py index 110aa7b..73dcd17 100644 --- a/backend/views.py +++ b/backend/views.py @@ -11,14 +11,55 @@ from django.conf import settings from datetime import datetime -API_HEADER = '#@scanjam 0.2\n' +from backend.models import SJUserProfile -def add_cors_headers(response): +API_HEADER = '#@scanjam 0.3b\n' + +# +# Common funtions +# + +def set_cors_headers(response): """ Setup additional headers for response """ response['Access-Control-Allow-Origin'] = '*' response['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS' response['Access-Control-Allow-Headers'] = 'x-requested-with' response['Access-Control-Max-Age'] = '3628800' + response['Content-type'] = 'text/plain; charset=UTF-8' + +def api_error(error, response=None): + """ Add API error name to response """ + if not response: + response = HttpResponse() + response.write(API_HEADER) + response.write('0\t%s\n' % error) + return response + +def api_error_headers(error, response=None): + """ Add API error name with setup headers to response """ + if not response: + response = HttpResponse() + set_cors_headers(response) + return api_error(error, response) + +def api_ok_headers(response=None): + """ Add API OK with setup headers to response """ + if not response: + response = HttpResponse() + set_cors_headers(response) + response.write(API_HEADER) + response.write('OK\n') + return response + +def check_form_fields(request, form_fields): + """ Check form fields presence """ + for field, value in request.POST.iteritems(): + print field, '= "%s"' % value + for field in form_fields: + if field not in request.POST: + return api_error_headers('incomplete form') + if not request.POST[field]: + return api_error_headers('no %s' % field) # # AUTH API @@ -28,6 +69,9 @@ def add_cors_headers(response): def api_auth_login(request): """""" form_fields = ['username', 'password'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST @@ -39,19 +83,51 @@ def api_auth_logout(request): def api_auth_sneakin(request): """""" form_fields = ['userid', 'username'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_auth_register(request): - """""" + """ Register new user """ form_fields = ['username', 'password'] - return HttpResponse('Not implemented yet!\n') + response = check_form_fields(request, form_fields) + if response: + return response + if auth.models.User.objects.filter(username=request.POST['username']): + return api_error_headers('user exists') + user = auth.models.User.objects.create_user(username=request.POST['username'], + email='default@noemail.com', + password=request.POST['password']) + user.is_active = True + try: + user.save() + except: + return api_error_headers('problem storing user') + user_profile = SJUserProfile(user=user, + username=request.POST['username'], + password=request.POST['password'], + joindate=user.date_joined, + seendate=user.date_joined) + try: + user_profile.save() + except: + return api_error_headers('problem storing user profile') + response = api_ok_headers() + response.write('%d\t%s\t%d' % (user.id, user.username, user_profile.access)) + return response @require_POST def api_auth_available(request): - """""" + """ Check if user exists""" form_fields = ['username'] - return HttpResponse('Not implemented yet!\n') + response = check_form_fields(request, form_fields) + if response: + return response + if auth.models.User.objects.filter(username=request.POST['username']): + return api_error_headers('user exists') + return api_ok_headers() @require_POST def api_auth_checkin(request): @@ -62,6 +138,9 @@ def api_auth_checkin(request): def api_auth_password(request): """""" form_fields = ['username', 'password'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') # @@ -72,24 +151,36 @@ def api_auth_password(request): def api_user_videos(request): """""" form_fields = ['user', 'start'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_user_likes(request): """""" form_fields = ['user', 'start'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_user_top(request): """""" form_fields = ['user'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_user_settings(request): """""" form_fields = ['user', 'bio', 'settings'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') # @@ -100,6 +191,9 @@ def api_user_settings(request): def api_room_watch(request): """""" form_fields = ['room', 'last'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST @@ -111,42 +205,63 @@ def api_room_list(request): def api_room_view(request): """""" form_fields = ['room', 'last'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_join(request): """""" form_fields = ['room', 'enqueue'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_read(request): """""" form_fields = ['room', 'enqueue'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_poll(request): """""" form_fields = ['room', 'last', 'cam'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_settings(request): """""" form_fields = ['room', 'settings'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_say(request): """""" form_fields = ['room', 'msg'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_video(request): """""" form_fields = ['room', 'msg'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') # @@ -157,40 +272,58 @@ def api_room_video(request): def api_video_date(request): """""" form_fields = ['day', 'month', 'year'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_view(request): """""" form_fields = ['video'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_like(request): """""" form_fields = ['video'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_unlike(request): """""" form_fields = ['video'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_remove(request): """""" form_fields = ['video', 'room'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_search(request): """""" form_fields = ['q', 'start', 'limit'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') # -# +# Common views # def stats(request): |
