app/projrev/views/helpers/access.py
author Madhusudan.C.S <madhusudancs@gmail.com>
Thu, 06 Aug 2009 22:48:30 +0530
changeset 11 dfc069c2d35d
parent 8 294ff7ac9cb6
child 12 aac4944aca52
permissions -rw-r--r--
Added home.html

"""This module contains the access checks
"""


__authors__ = [
  '"Madhusudan.C.S" <madhusudancs@gmail.com>',
]


from functools import wraps

from django.shortcuts import render_to_response
from django.template import RequestContext


rights = {}
rights['getMicr'] = 'proposer'

def checkAccess(func):
  """ To check the access of the user and then return the appropriate function 
  object.
 """

  @wraps(func)
  def wrapper(request, *args, **kwargs):
    """The decorator for access check.
    """

    user_kind = rights[func.__name__]
    user = request.user

    template = 'projrev/error.html'
    context = {}

    if user.is_authenticated():
      if user_kind == 'staff':
        if user.is_staff:
          return func(request, *args, **kwargs)
        else:
          context['not_staff'] = True 
          return render_to_response(template, RequestContext(request, context)) 

      if user_kind == 'proposer':
        if not user.is_staff:
          return func(request, *args, **kwargs)
        else:
          context['not_proposer'] = True
          return render_to_response(template, RequestContext(request, context))
    else:
      context['not_authenticated'] = True
      return render_to_response(template, RequestContext(request, context))

  return wrapper