Ignore:
Timestamp:
05/01/10 15:46:19 (10 years ago)
Author:
pjkersha
Message:
 
File:
1 moved

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/NDGSecurity/python/ndg_security_server/ndg/security/server/wsgi/authz/result_handler/genshi/__init__.py

    r6267 r6268  
    2222class GenshiPEPResultHandlerMiddleware(SessionMiddlewareBase): 
    2323    """Genshi based PEP result handler 
    24     """ 
    25     PROPERTY_NAMES = ( 
    26         'messageTemplate', 
    27         'templateName', 
    28         'templateRootDir' 
    29     ) 
    30     __slots__ = PROPERTY_NAMES 
    31          
     24    """        
    3225    DEFAULT_TMPL_NAME = 'accessdenied.html' 
    3326    DEFAULT_TMPL_DIR = path.join(path.dirname(__file__), 'templates') 
     27    DEFAULT_STATIC_CONTENT_DIR = path.join(path.dirname(__file__), 'layout') 
    3428     
    3529    MSG_TMPL = ( 
     
    3933        "access privileges." 
    4034    ) 
     35     
     36    PROPERTY_DEFAULTS = { 
     37        'messageTemplate': MSG_TMPL, 
     38        'templateName': DEFAULT_TMPL_NAME, 
     39        'templateRootDir': DEFAULT_TMPL_DIR, 
     40        'staticContentRootDir': DEFAULT_STATIC_CONTENT_DIR, 
     41        'heading': '', 
     42        'leftLogo': '', 
     43        'leftAlt': '', 
     44        'leftLink': '', 
     45        'leftImage': '', 
     46        'footerText': 'Test deployment only', 
     47        'rightLink': '', 
     48        'rightImage': '', 
     49        'rightAlt': '', 
     50        'helpIcon': '' 
     51    } 
     52    __slots__ = PROPERTY_DEFAULTS 
    4153     
    4254    def __init__(self, app, global_conf, prefix='', **app_conf): 
     
    5870                
    5971        # Initialise attributes 
    60         for i in GenshiRendering.PROPERTY_NAMES: 
    61             setattr(self, i, '') 
     72        for k, v in GenshiPEPResultHandlerMiddleware.PROPERTY_DEFAULTS.items(): 
     73            setattr(self, k, v) 
    6274          
    6375        # Update from keywords    
    6476        for i in app_conf: 
    6577            setattr(self, i, app_conf[i]) 
    66  
    67         if not self.templateRootDir: 
    68             self.templateRootDir = \ 
    69                             GenshiPEPResultHandlerMiddleware.DEFAULT_TMPL_DIR 
    70           
    71         if not self.messageTemplate: 
    72             self.messageTemplate = GenshiPEPResultHandlerMiddleware.MSG_TMPL 
    73              
    74         if not self.templateName: 
    75             self.templateName = \ 
    76                 GenshiPEPResultHandlerMiddleware.DEFAULT_TMPL_NAME 
    7778             
    7879        self.__loader = TemplateLoader(self.templateRootDir, auto_reload=True) 
     
    8081    @NDGSecurityMiddlewareBase.initCall 
    8182    def __call__(self, environ, start_response): 
     83        """Render access denied message or else if user is not authenticated, 
     84        set HTTP 401 response 
    8285         
     86        @type environ: dict 
     87        @param environ: WSGI environment variables dictionary 
     88        @type start_response: function 
     89        @param start_response: standard WSGI start response function 
     90        @rtype: iterable 
     91        @return: response 
     92        """  
    8393        if not self.isAuthenticated: 
    8494            # sets 401 response to be trapped by authentication handler 
     
    105115    def __setattr__(self, name, value): 
    106116        """Apply some generic type checking""" 
    107         if name in GenshiRendering.PROPERTY_NAMES: 
     117        if name in GenshiPEPResultHandlerMiddleware.PROPERTY_DEFAULTS: 
    108118            if not isinstance(value, basestring): 
    109119                raise TypeError('Expecting string type for %r attribute; got ' 
     
    124134                      doc="Genshi TemplateLoader instance")   
    125135           
    126     def _render(self, **kw): 
     136    def _render(self, c=None, **kw): 
    127137        '''Wrapper for Genshi template rendering 
     138         
     139        @type c: None/object 
     140        @param c: reference to object to pass into template - defaults to self 
    128141        @type kw: dict 
    129142        @param kw: keywords to pass to template 
    130143        @rtype: string 
    131144        @return: rendered template 
    132         '''         
     145        '''     
     146        if c is None: 
     147            kw['c'] = self  
     148               
    133149        tmpl = self.loader.load(self.templateName) 
    134150        rendering = tmpl.generate(**kw).render('html', doctype='html') 
Note: See TracChangeset for help on using the changeset viewer.