diff options
author | prathamesh | 2017-09-01 17:22:29 +0530 |
---|---|---|
committer | prathamesh | 2017-09-01 17:22:29 +0530 |
commit | 1e3bb9e325214be0105f8b907badc84b2dbbeb91 (patch) | |
tree | 3327924e1879524909d5f1603dfe7d3dbda4c05a /yaksh/decorators.py | |
parent | e2c65655dcdc5558cfb4ab668c3012024d27ac75 (diff) | |
parent | 9e0f737c25a5156aa884d27357af0aef1145c4b7 (diff) | |
download | online_test-1e3bb9e325214be0105f8b907badc84b2dbbeb91.tar.gz online_test-1e3bb9e325214be0105f8b907badc84b2dbbeb91.tar.bz2 online_test-1e3bb9e325214be0105f8b907badc84b2dbbeb91.zip |
Merge branch 'master' of https://github.com/FOSSEE/online_test into improve-code-server
Conflicts Resolved:
yaksh/templates/yaksh/question.html
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. \ |