diff options
author | ankitjavalkar | 2017-07-21 17:07:24 +0530 |
---|---|---|
committer | ankitjavalkar | 2017-08-24 14:55:40 +0530 |
commit | ceb55baf69c2f5f7346855ee5a6e5e9f77456fcb (patch) | |
tree | 30caec50cdbbedca1907f2efa006b0850ef960ea /yaksh/decorators.py | |
parent | b18d7303e15d747229734eff8c1f1bd6d550efd2 (diff) | |
download | online_test-ceb55baf69c2f5f7346855ee5a6e5e9f77456fcb.tar.gz online_test-ceb55baf69c2f5f7346855ee5a6e5e9f77456fcb.tar.bz2 online_test-ceb55baf69c2f5f7346855ee5a6e5e9f77456fcb.zip |
Add a has_profile decorator
Diffstat (limited to 'yaksh/decorators.py')
-rw-r--r-- | yaksh/decorators.py | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/yaksh/decorators.py b/yaksh/decorators.py index f0d354c..8e5f879 100644 --- a/yaksh/decorators.py +++ b/yaksh/decorators.py @@ -1,12 +1,39 @@ -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) + template = 'manage.html' if 'moderator' in request.user.groups.all() else '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 +41,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. \ |