src/p4l/decorators.py
changeset 145 7c6fe1dab213
equal deleted inserted replaced
144:8c32ea1310de 145:7c6fe1dab213
       
     1 # -*- coding: utf-8 -*-
       
     2 #
       
     3 # Copyright IRI (c) 2013
       
     4 #
       
     5 # contact@iri.centrepompidou.fr
       
     6 #
       
     7 # This software is governed by the CeCILL-B license under French law and
       
     8 # abiding by the rules of distribution of free software.  You can  use, 
       
     9 # modify and/ or redistribute the software under the terms of the CeCILL-B
       
    10 # license as circulated by CEA, CNRS and INRIA at the following URL
       
    11 # "http://www.cecill.info". 
       
    12 #
       
    13 # As a counterpart to the access to the source code and  rights to copy,
       
    14 # modify and redistribute granted by the license, users are provided only
       
    15 # with a limited warranty  and the software's author,  the holder of the
       
    16 # economic rights,  and the successive licensors  have only  limited
       
    17 # liability. 
       
    18 #
       
    19 # In this respect, the user's attention is drawn to the risks associated
       
    20 # with loading,  using,  modifying and/or developing or reproducing the
       
    21 # software by the user in light of its specific status of free software,
       
    22 # that may mean  that it is complicated to manipulate,  and  that  also
       
    23 # therefore means  that it is reserved for developers  and  experienced
       
    24 # professionals having in-depth computer knowledge. Users are therefore
       
    25 # encouraged to load and test the software's suitability as regards their
       
    26 # requirements in conditions enabling the security of their systems and/or 
       
    27 # data to be ensured and,  more generally, to use and operate it in the 
       
    28 # same conditions as regards security. 
       
    29 #
       
    30 # The fact that you are presently reading this means that you have had
       
    31 # knowledge of the CeCILL-B license and that you accept its terms.
       
    32 #
       
    33 from django.contrib.auth import REDIRECT_FIELD_NAME
       
    34 
       
    35 '''
       
    36 Created on Oct 10, 2013
       
    37 
       
    38 @author: ymh
       
    39 '''
       
    40 from django.contrib.auth.decorators import user_passes_test
       
    41 
       
    42 
       
    43 def is_staff(function=None, redirect_field_name=REDIRECT_FIELD_NAME, login_url=None):
       
    44     """
       
    45     Decorator for views that checks that the user is logged in, redirecting
       
    46     to the log-in page if necessary.
       
    47     """
       
    48     actual_decorator = user_passes_test(
       
    49         lambda u: u.is_staff,
       
    50         login_url=login_url,
       
    51         redirect_field_name=redirect_field_name
       
    52     )
       
    53     if function:
       
    54         return actual_decorator(function)
       
    55     return actual_decorator