diff options
author | Prabhu Ramachandran | 2017-08-24 19:55:26 +0530 |
---|---|---|
committer | GitHub | 2017-08-24 19:55:25 +0530 |
commit | 9d5c4a01fd7856f1ef8793b75a9734324c254344 (patch) | |
tree | e54640073944ea6e69eabf165f3ac5964efbddcd /yaksh/decorators.py | |
parent | b18d7303e15d747229734eff8c1f1bd6d550efd2 (diff) | |
parent | 281e28819d4ab62cc01722d90dd4951e417e16cb (diff) | |
download | online_test-9d5c4a01fd7856f1ef8793b75a9734324c254344.tar.gz online_test-9d5c4a01fd7856f1ef8793b75a9734324c254344.tar.bz2 online_test-9d5c4a01fd7856f1ef8793b75a9734324c254344.zip |
Merge pull request #305 from ankitjavalkar/has-profile-fix
Add a has_profile decorator
Diffstat (limited to 'yaksh/decorators.py')
-rw-r--r-- | yaksh/decorators.py | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/yaksh/decorators.py b/yaksh/decorators.py index f0d354c..9e9bc6d 100644 --- a/yaksh/decorators.py +++ b/yaksh/decorators.py @@ -1,12 +1,42 @@ -from django.shortcuts import render_to_response +from django.shortcuts import render_to_response, redirect from django.conf import settings from django.template import RequestContext +# Local imports +from yaksh.forms import ProfileForm + + +def user_has_profile(user): + return hasattr(user, 'profile') + + +def has_profile(func): + """ + This decorator is used to check if the user account has a profile. + If the user does not have a profile then redirect the user to + profile edit page. + """ + + def _wrapped_view(request, *args, **kwargs): + if user_has_profile(request.user): + return func(request, *args, **kwargs) + ci = RequestContext(request) + if request.user.groups.filter(name='moderator').exists(): + template = 'manage.html' + else: + template = 'user.html' + form = ProfileForm(user=request.user, instance=None) + context = {'template': template, 'form': form} + return render_to_response('yaksh/editprofile.html', context, + context_instance=ci) + return _wrapped_view + def email_verified(func): - """ This decorator is used to check if email is verified. - If email is not verified then redirect user for email - verification + """ + This decorator is used to check if email is verified. + If email is not verified then redirect user for email + verification. """ def is_email_verified(request, *args, **kwargs): @@ -14,7 +44,7 @@ def email_verified(func): user = request.user context = {} if not settings.IS_DEVELOPMENT: - if user.is_authenticated() and hasattr(user, 'profile'): + if user.is_authenticated() and user_has_profile(user): if not user.profile.is_email_verified: context['success'] = False context['msg'] = "Your account is not verified. \ |