diff options
| author | Maksim A. Boyko <maksim.a.boyko@gmail.com> | 2012-08-16 08:53:27 -0400 |
|---|---|---|
| committer | Maksim A. Boyko <maksim.a.boyko@gmail.com> | 2012-08-16 08:53:27 -0400 |
| commit | fc8c1894ad2189e75f0c6069f8bdd59786e88f67 (patch) | |
| tree | 478bd84d760ef344011a533260ea368dc4c75319 | |
| parent | d5e9f15999aeca7e97b3c8d38d956e0d4494c087 (diff) | |
Backend: Add api_user_settings view
| -rw-r--r-- | backend/models.py | 3 | ||||
| -rw-r--r-- | backend/views.py | 40 |
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 |
