From f67749fa0ad754078d855b47bd8c4e4e6c6b75d4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20K=C3=B6gl?= Date: Wed, 27 Aug 2014 15:37:30 +0000 Subject: [PATCH] [Web] refactor / fix token handling --- mygpo/publisher/views.py | 4 ++-- mygpo/share/views.py | 39 +++++++++++++++------------------------ mygpo/users/models.py | 8 ++++++++ mygpo/web/views/settings.py | 22 +++++++--------------- 4 files changed, 32 insertions(+), 41 deletions(-) diff --git a/mygpo/publisher/views.py b/mygpo/publisher/views.py index f3060f42..ee93daff 100644 --- a/mygpo/publisher/views.py +++ b/mygpo/publisher/views.py @@ -159,8 +159,8 @@ def save_podcast(request, podcast): @never_cache @require_publisher def new_update_token(request, username): - request.user.create_new_token('publisher_update_token') - request.user.save() + request.user.profile.create_new_token('publisher_update_token') + request.user.profile.save() messages.success(request, _('Publisher token updated')) return HttpResponseRedirect(reverse('publisher')) diff --git a/mygpo/share/views.py b/mygpo/share/views.py index 042c5340..f4bb3204 100644 --- a/mygpo/share/views.py +++ b/mygpo/share/views.py @@ -192,12 +192,12 @@ class FavoritesPublic(View): def post(self, request): if self.public: - request.user.favorite_feeds_token = '' - request.user.save() + request.user.profile.favorite_feeds_token = '' + request.user.profile.save() else: - request.user.create_new_token('favorite_feeds_token', 8) - request.user.save() + request.user.profile.create_new_token('favorite_feeds_token', 8) + request.user.profile.save() token = request.user.favorite_feeds_token @@ -237,19 +237,14 @@ class PublicSubscriptions(View): @method_decorator(login_required) def post(self, request): - self.update(request.user) - - return HttpResponseRedirect(reverse('share')) - - - @repeat_on_conflict(['user']) - def update(self, user): if self.public: - user.subscriptions_token = '' + user.profile.subscriptions_token = '' else: - user.create_new_token('subscriptions_token') + user.profile.create_new_token('subscriptions_token') + + user.profile.save() - user.save() + return HttpResponseRedirect(reverse('share')) class FavoritesFeedCreateEntry(View): @@ -302,19 +297,15 @@ def overview(request): @login_required def set_token_public(request, token_name, public): + user = request.user + if public: - @repeat_on_conflict(['user']) - def _update(user): - setattr(user, token_name, '') - user.save() + setattr(user.profile, token_name, '') + user.profile.save() else: - @repeat_on_conflict(['user']) - def _update(user): - user.create_new_token(token_name) - user.save() - - _update(user=request.user) + user.profile.create_new_token(token_name) + user.profile.save() return HttpResponseRedirect(reverse('share')) diff --git a/mygpo/users/models.py b/mygpo/users/models.py index a386367d..364a5995 100644 --- a/mygpo/users/models.py +++ b/mygpo/users/models.py @@ -175,6 +175,14 @@ class UserProfile(TwitterModel, SettingsModel): return getattr(self, token_name) + def create_new_token(self, token_name): + """ resets a token """ + + if token_name not in TOKEN_NAMES: + raise TokenException('Invalid token name %s' % token_name) + + setattr(self, token_name, random_token()) + class Suggestions(Document, RatingMixin): user = StringProperty(required=True) diff --git a/mygpo/web/views/settings.py b/mygpo/web/views/settings.py index 6cede517..62a124ec 100644 --- a/mygpo/web/views/settings.py +++ b/mygpo/web/views/settings.py @@ -283,25 +283,17 @@ def privacy(request): def share(request): site = RequestSite(request) + user = request.user + if 'public_subscriptions' in request.GET: - @repeat_on_conflict(['user']) - def _update(user): - user.subscriptions_token = '' - user.save() + user.profile.subscriptions_token = '' + user.profile.save() elif 'private_subscriptions' in request.GET: - @repeat_on_conflict(['user']) - def _update(user): - user.create_new_token('subscriptions_token') - user.save() - - else: - _update = None - - if _update: - _update(user=request.user) + user.profile.create_new_token('subscriptions_token') + user.profile.save() - token = request.user.profile.get_token('subscriptions_token') + token = user.profile.get_token('subscriptions_token') return render(request, 'share.html', { 'site': site, -- 2.11.4.GIT