summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorMaksim A. Boyko <maksim.a.boyko@gmail.com>2012-08-16 08:53:27 -0400
committerMaksim A. Boyko <maksim.a.boyko@gmail.com>2012-08-16 08:53:27 -0400
commitfc8c1894ad2189e75f0c6069f8bdd59786e88f67 (patch)
tree478bd84d760ef344011a533260ea368dc4c75319 /backend
parentd5e9f15999aeca7e97b3c8d38d956e0d4494c087 (diff)
Backend: Add api_user_settings view
Diffstat (limited to 'backend')
-rw-r--r--backend/models.py3
-rw-r--r--backend/views.py40
2 files changed, 36 insertions, 7 deletions
diff --git a/backend/models.py b/backend/models.py
index 9d970c5..39bedd2 100644
--- a/backend/models.py
+++ b/backend/models.py
@@ -19,7 +19,7 @@ class SJSettingsModel(models.Model):
def settings(self):
if not self.settings_text:
return dict()
- return json.loads(self.settings_text, encoding='utf8', parse_float=True, parse_int=True)
+ return json.loads(self.settings_text)
@settings.setter
def settings(self, settings):
@@ -53,6 +53,7 @@ class SJUserProfileAdmin(admin.ModelAdmin):
'score',
'access',
'bio',
+ 'settings_text',
)
class SJUserActivity(models.Model):
diff --git a/backend/views.py b/backend/views.py
index e084325..5323490 100644
--- a/backend/views.py
+++ b/backend/views.py
@@ -12,6 +12,7 @@ from django.db.models import Q
from datetime import datetime
import sha
+import time
from backend.models import SJLike
from backend.models import SJRoom
@@ -19,8 +20,10 @@ from backend.models import SJContent
from backend.models import SJUserProfile
API_HEADER = '#@scanjam 0.3b\n'
-
ROOM_VIDEO_LOG_SIZE = 50
+ACCESS_USER = 0
+ACCESS_MODERATOR = 1
+ACCESS_ADMIN = 9
#
# Common funtions
@@ -83,6 +86,21 @@ 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 thraw(settings_text):
+ settings = dict()
+ if settings_text:
+ for line in settings_text.split('\n'):
+ column = line.split('\t')
+ if len(column) == 2:
+ settings[column[0]] = column[1]
+ return settings
+
+def freeze(settings):
+ return '\n'.join(['%s\t%s' % (str(key), str(value)) for key, value in settings.iteritems()])
+
+def now_timestamp():
+ return int(time.mktime(time.localtime()))
+
#
# AUTH API
#
@@ -218,7 +236,7 @@ def api_auth_password(request):
@require_POST
def api_user_videos(request):
- """ Get list of user videos. Public API
+ """ View list of user videos. Public API
"""
form_fields = ['user']
response = check_form_fields(request, form_fields)
@@ -255,7 +273,7 @@ def api_user_videos(request):
@require_POST
def api_user_likes(request):
- """ Get list of liked videos. Public API
+ """ View list of liked videos. Public API
"""
form_fields = ['user']
response = check_form_fields(request, form_fields)
@@ -294,13 +312,23 @@ def api_user_top(request):
@require_POST
def api_user_settings(request):
- """ Private API
+ """ Update user settings. Private API
"""
- form_fields = ['user', 'bio', 'settings']
+ user = request.user
+ if not user.is_authenticated():
+ return response_error('no logged in')
+ user_profile = user.get_profile()
+ form_fields = ['userid', 'bio', 'settings']
response = check_form_fields(request, form_fields)
if response:
return response
- return HttpResponse('Not implemented yet!\n')
+ if (user.id != int(request.POST['userid'])) and (user_profile.access < ACCESS_ADMIN):
+ return response_error('you can only edit yourself man')
+ settings = user_profile.settings
+ settings.update(thraw(request.POST['settings']))
+ user_profile.settings = settings
+ user_profile.save()
+ return response_success()
#
# ROOM API