# HG changeset patch # User Madhusudan.C.S # Date 1249587236 -19800 # Node ID aac4944aca52532e6589a5e8d9384a6c393baed4 # Parent dfc069c2d35d2637b5d2a5c27cb322006b3f9511 With ACL registers diff -r dfc069c2d35d -r aac4944aca52 app/projrev/views/base.py --- a/app/projrev/views/base.py Thu Aug 06 22:48:30 2009 +0530 +++ b/app/projrev/views/base.py Fri Aug 07 01:03:56 2009 +0530 @@ -9,6 +9,8 @@ from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect +from django.shortcuts import render_to_response +from django.template import RequestContext def home(request): @@ -22,4 +24,5 @@ else: return HttpResponseRedirect(reverse('app.projrev.views.proposal.submit')) else: - return HttpResponseRedirect(reverse('app.projrev.views.login.login_validate')) + template = 'projrev/home.html' + return render_to_response(template, RequestContext(request, {})) diff -r dfc069c2d35d -r aac4944aca52 app/projrev/views/helpers/access.py --- a/app/projrev/views/helpers/access.py Thu Aug 06 22:48:30 2009 +0530 +++ b/app/projrev/views/helpers/access.py Fri Aug 07 01:03:56 2009 +0530 @@ -12,9 +12,23 @@ from django.shortcuts import render_to_response from django.template import RequestContext - +# Dictionary containing access checks for views. +# Keys: View function name. +# Values: proposer or staff rights = {} -rights['getMicr'] = 'proposer' + +def register(access_type): + """Function to register access type for a View function + """ + + def wrapper(func): + """The decorator for registering access checks. + """ + + rights['%s.%s' % (func.__module__, func.__name__)] = access_type + return func + + return wrapper def checkAccess(func): """ To check the access of the user and then return the appropriate function @@ -26,14 +40,14 @@ """The decorator for access check. """ - user_kind = rights[func.__name__] + user_kind = rights['%s.%s' % (func.__module__, func.__name__)] user = request.user template = 'projrev/error.html' context = {} if user.is_authenticated(): - if user_kind == 'staff': + if user_kind == 'reviewer': if user.is_staff: return func(request, *args, **kwargs) else: diff -r dfc069c2d35d -r aac4944aca52 app/projrev/views/proposal.py --- a/app/projrev/views/proposal.py Thu Aug 06 22:48:30 2009 +0530 +++ b/app/projrev/views/proposal.py Fri Aug 07 01:03:56 2009 +0530 @@ -22,6 +22,7 @@ from projrev.views.helpers import forms as projrev_forms +@access.register('proposer') @access.checkAccess def getMicr(request): """View to get MICR Code from the user. @@ -62,7 +63,7 @@ return render_to_response(template, RequestContext(request, context)) - +@access.register('proposer') @access.checkAccess def submit(request, micr_code=None): """View for proposal submission. @@ -109,7 +110,8 @@ # Create a proposal for the project. proposal = project.proposal_set.create( - document=prop_form.cleaned_data['document'], rev_num = 0) + document=prop_form.cleaned_data['document'], + submitted_by=request.user, rev_num = 0) proposal.save() @@ -137,7 +139,8 @@ prop_form = projrev_forms.ProposalForm( initial=initial_vals, instance=project) - proposal_path = str(project.proposal_set.all()[0].document) + proposal_path = str( + project.proposal_set.all().order_by('-submitted_on')[0].document) proposal_name = proposal_path.split('/')[-1] @@ -164,6 +167,7 @@ return render_to_response(template, RequestContext(request, context)) +@access.register('proposer') @access.checkAccess def withdraw(request, micr_code=None): """View Method for withdrawal of proposal. @@ -182,6 +186,7 @@ return render_to_response(template, RequestContext(request, context)) +@access.register('reviewer') @access.checkAccess def review(request, micr_code=None): """View for reviewing the proposal. @@ -226,7 +231,8 @@ rev_form = projrev_forms.ReviewForm() proposal_path = str(Project.objects.get( - micr_code=micr_code).proposal_set.all()[0].document) + micr_code=micr_code).proposal_set.all().order_by( + '-submitted_on')[0].document) proposal_name = proposal_path.split('/')[-1] @@ -241,6 +247,7 @@ return render_to_response(template, RequestContext(request, context)) +@access.register('reviewer') @access.checkAccess def rank(request, micr_code=None): """ @@ -272,7 +279,8 @@ projects = Project.objects.get(micr_code=micr_code) - proposal_path = str(projects.proposal_set.all()[0].document) + proposal_path = str( + projects.proposal_set.all().order_by('-submitted_on')[0].document) proposal_name = proposal_path.split('/')[-1] diff -r dfc069c2d35d -r aac4944aca52 app/templates/projrev/base.html --- a/app/templates/projrev/base.html Thu Aug 06 22:48:30 2009 +0530 +++ b/app/templates/projrev/base.html Fri Aug 07 01:03:56 2009 +0530 @@ -65,11 +65,10 @@ @@ -87,39 +86,32 @@