~oubiwann/adytum-collection/Projects

« back to all changes in this revision

Viewing changes to MacGregorSite/cms/security.py

  • Committer: oubiwann
  • Date: 2009-03-20 04:32:44 UTC
  • Revision ID: svn-v4:a5ecbb21-ded8-0310-8b19-a7ee6de54fb5:Projects:880
* Moved admin security code into a security module.
* Moved response and page not found into new view publisher module.
* Moved edit_instance and edit_updated_page into admin module.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import functools
 
2
 
 
3
from views import publisher
 
4
 
 
5
 
 
6
def forbidden(request, error_message=None):
 
7
  """Returns a 403 response based on a template.
 
8
 
 
9
  Args:
 
10
    request: the http request that was forbidden
 
11
    error_message: a message to display that will override the default message
 
12
 
 
13
  Returns:
 
14
    A http response with the status code of 403
 
15
 
 
16
  """
 
17
  response = publisher.respond(request, '403', {'error_message': error_message})
 
18
  response.status_code = 403
 
19
  return response
 
20
 
 
21
 
 
22
def admin_required(func):
 
23
  """Ensure that the logged in user is an administrator."""
 
24
 
 
25
  @functools.wraps(func)
 
26
  def __wrapper(request, *args, **kwds):
 
27
    """Makes it possible for admin_required to be used as a decorator."""
 
28
    if request.user_is_admin:
 
29
      return func(request, *args, **kwds)  # pylint: disable-msg=W0142
 
30
    else:
 
31
      return forbidden(
 
32
          request,
 
33
          error_message='You must be an administrator to view this page.')
 
34
 
 
35
  return __wrapper
 
36
 
 
37
 
 
38
def super_user_required(func):
 
39
  """Ensure that the logged in user has editing privileges."""
 
40
 
 
41
  @functools.wraps(func)
 
42
  def __wrapper(request, *args, **kwds):
 
43
    """Makes it possible for super_user_required to be used as a decorator."""
 
44
    if request.profile.is_superuser:
 
45
      return func(request, *args, **kwds)  # pylint: disable-msg=W0142
 
46
    else:
 
47
      return forbidden(
 
48
          request,
 
49
          error_message='You must be a superuser to view this page.')
 
50
 
 
51
  return __wrapper