Changeset 49505

Show
Ignore:
Timestamp:
10/10/06 18:14:20 (3 years ago)
Author:
ogrisel
Message:

#1704 (related to): added two new properties to make special groups role:Authenticated and role:Anonymous optionaly behave as if they contain all the members of the portal instead of being empty by default.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • CPS3/products/CPSUserFolder/trunk/CHANGES

    r49342 r49505  
    44New features 
    55~~~~~~~~~~~~ 
    6 
     6- #1704 (related to): added two new properties to make special groups 
     7  role:Authenticated and role:Anonymous optionaly behave as if they contain all 
     8  the members of the portal instead of being empty by default. 
    79Bug fixes 
    810~~~~~~~~~ 
  • CPS3/products/CPSUserFolder/trunk/CPSUserFolder.py

    r46327 r49505  
    109109        {'id': 'roles_members_field', 'type': 'string', 'mode': 'w', 
    110110         'label': "Roles directory: members field"}, 
     111        {'id': 'is_role_authenticated_empty', 'type': 'boolean', 'mode': 'w', 
     112         'label': "Consider role:Authenticated as an empty group"}, 
     113        {'id': 'is_role_anonymous_empty', 'type': 'boolean', 'mode': 'w', 
     114         'label': "Consider role:Anonymous as an empty group"}, 
    111115        {'id': 'cache_timeout', 'type': 'int', 'mode': 'w', 
    112116         'label': "Cache timeout"}, 
     
    121125    groups_members_field  = 'members' 
    122126    roles_members_field = 'members' 
     127    is_role_authenticated_empty = True 
     128    is_role_anonymous_empty = True 
    123129    cache_timeout = 300 
    124130 
     
    542548                    raise KeyError, groupname 
    543549 
    544                 group_members = group_entry.get(self.groups_members_field, 
    545                                                     ()) 
    546                 return Group(groupname, group_members) 
     550                group_members = group_entry.get(self.groups_members_field, ()) 
     551 
    547552            else: 
    548                 # Backward compatibility with UserFolderWithGroups for 
    549                 # CPSSubscriptions.RecipientsRules (see ticket:890) 
    550                 return Group(groupname, ()) 
     553                # Special groups must be group instance so that CPSSubscriptions 
     554                # work properly (cf ticket #890). This groups are considered 
     555                # empty by default to avoid spamming a uge quantity of members 
     556                # by error 
     557 
     558                emptyness = { 
     559                    "role:Authenticated": self.is_role_authenticated_empty, 
     560                    "role:Anonymous": self.is_role_anonymous_empty, 
     561                } 
     562                if emptyness.get(groupname, True): 
     563                    group_members = () 
     564                else: 
     565                    group_members = self.getUserNames() 
     566 
     567 
     568            return Group(groupname, group_members) 
     569 
    551570        else: 
    552571            raise ValueError, "The directory %s doesn't exist" % self.groups_dir 
  • CPS3/products/CPSUserFolder/trunk/tests/testCPSUserFolder.py

    r48832 r49505  
    355355        portal = self.portal 
    356356        aclu = portal.aclu 
     357        mdir = portal.portal_directories.members 
    357358        gdir = portal.portal_directories.groups 
     359 
     360        # Create some members 
     361        mdir.createEntry({'uid': 'mickey'}) 
     362        mdir.createEntry({'uid': 'pluto'}) 
    358363 
    359364        # Create a new group using the directory. 
     
    373378 
    374379        # Backward compatibility with UserFolderWithGroups 
     380        self.failUnless(aclu.is_role_authenticated_empty) 
    375381        group = aclu.getGroupById('role:Authenticated') 
    376382        self.assertEquals(group.getUsers(), ()) 
     383 
     384        # now make role:Authenticated as a special group containing everybody 
     385        aclu.is_role_authenticated_empty = False 
     386        group = aclu.getGroupById('role:Authenticated') 
     387        self.assertEquals(group.getUsers(), ['mickey', 'pluto']) 
     388 
     389        # same behavior for role:Anonymous 
     390        self.failUnless(aclu.is_role_anonymous_empty) 
     391        group = aclu.getGroupById('role:Anonymous') 
     392        self.assertEquals(group.getUsers(), ()) 
     393 
     394        # now make role:Anonymous as a special group containing everybody 
     395        aclu.is_role_anonymous_empty = False 
     396        group = aclu.getGroupById('role:Anonymous') 
     397        self.assertEquals(group.getUsers(), ['mickey', 'pluto']) 
    377398 
    378399    def test_group_API_security(self):