Ignore:
Timestamp:
Jan 5, 2012 12:12:37 PM (12 years ago)
Author:
kroman0
Message:

Excluded/required roles in Static Stylish portlet

File:
1 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.portlet.static/trunk/quintagroup/portlet/static/staticstylishportlet.py

    r3282 r3336  
    2424    """ 
    2525 
    26     anonymous_only = schema.Bool( 
    27         title=_(u"Anonymous only"), 
    28         description=_(u"Check this to hide the portlet for logged-in users."), 
     26    roles_excluded = schema.Tuple( 
     27        title=_(u"Roles excluded"), 
     28        description=_(u"Select excluded user roles."), 
     29        value_type=schema.Choice( 
     30            vocabulary="quintagroup.portlet.static.vocabularies.GlobalRoles" 
     31            ), 
    2932        required=False, 
    30         default=False, 
     33        ) 
     34 
     35    roles_required = schema.Tuple( 
     36        title=_(u"Roles required"), 
     37        description=_(u"Select required user roles."), 
     38        value_type=schema.Choice( 
     39            vocabulary="quintagroup.portlet.static.vocabularies.GlobalRoles" 
     40            ), 
     41        required=False, 
    3142        ) 
    3243 
     
    5061    styling = '' 
    5162 
    52     anonymous_only = False 
     63    roles_excluded = () 
     64 
     65    roles_required = () 
    5366 
    5467    def __init__(self, header=u"", text=u"", omit_border=False, footer=u"", 
    55                  more_url='', hide=False, styling='', anonymous_only=False): 
     68                 more_url='', hide=False, styling='', 
     69                 roles_excluded=(), roles_required=()): 
    5670        super(Assignment, self).__init__(header=header, text=text, omit_border=omit_border, footer=footer, 
    5771                                         more_url=more_url) 
    5872 
    5973        self.styling = styling 
    60         self.anonymous_only = anonymous_only 
     74        self.roles_excluded = roles_excluded 
     75        self.roles_required = roles_required 
     76 
    6177 
    6278class Renderer(static.Renderer): 
     
    7288    @property 
    7389    def available(self): 
    74         if self.data.anonymous_only: 
     90        if self.data.roles_excluded or self.data.roles_required: 
    7591            context = aq_inner(self.context) 
    7692            mtool = getToolByName(context, 'portal_membership') 
    77             return mtool.isAnonymousUser() 
     93 
     94            # Determine roles 
     95            if not mtool.isAnonymousUser(): 
     96                member = mtool.getAuthenticatedMember() 
     97                user = member.getUser() 
     98                roles = user.getRoles() 
     99            else: 
     100                roles = () 
     101 
     102            roles = frozenset(roles) 
     103 
     104            # Test excluded roles 
     105            if roles & set(self.data.roles_excluded): 
     106                return False 
     107 
     108            # Test required roles 
     109            if not set(self.data.roles_required) <= roles: 
     110                return False 
    78111 
    79112        return True 
Note: See TracChangeset for help on using the changeset viewer.