Changeset 1785 for ZMS/trunk


Ignore:
Timestamp:
04.01.2012 21:54:35 (5 months ago)
Author:
zmsdev
Message:

added support for purge of local-roles (requested by desy).

Location:
ZMS/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • ZMS/trunk/_accessmanager.py

    r1756 r1785  
    103103  return id 
    104104 
     105 
    105106# ------------------------------------------------------------------------------ 
    106107#  _accessmanager.deleteUser: 
    107108# ------------------------------------------------------------------------------ 
    108 def deleteUser(self, id, REQUEST): 
    109   userFldr = self.getUserFolder() 
     109def deleteUser(self, id): 
    110110   
    111111  # Delete local roles in node. 
    112   # --------------------------- 
    113112  nodes = self.getUserAttr(id,'nodes',{}) 
    114113  for node in nodes.keys(): 
     
    118117   
    119118  # Delete user from ZMS dictionary. 
    120   # -------------------------------- 
    121119  self.delUserAttr(id) 
    122120   
    123121  # Delete user from User-Folder. 
    124   # ----------------------------- 
     122  userFldr = self.getUserFolder() 
    125123  if userFldr.meta_type != 'LDAPUserFolder': 
    126124    userObj = userFldr.getUser(id) 
    127125    if userObj is not None: 
    128126      userFldr.userFolderDelUsers([id]) 
    129    
    130   id = '' 
    131   return id 
    132127 
    133128 
     
    629624    ############################################################################ 
    630625 
     626    # ------------------------------------------------------------------------------ 
     627    #  AccessManager.purgeLocalUsers 
     628    # ------------------------------------------------------------------------------ 
     629    def purgeLocalUsers(self, ob=None, valid_userids=[], invalid_userids=[]): 
     630      rtn = "" 
     631      if ob is None: ob = self 
     632       
     633      for local_role in ob.get_local_roles(): 
     634        delLocalRoles = False 
     635        userid = local_role[0] 
     636        userroles = local_role[1] 
     637        if 'Owner' not in userroles: 
     638          if userid not in valid_userids and userid not in invalid_userids: 
     639            userob = ob.findUser(userid) 
     640            if userob is None: 
     641              invalid_userids.append(userid) 
     642            else: 
     643              valid_userids.append(userid) 
     644          if userid in valid_userids: 
     645            nodes = self.getUserAttr(userid,'nodes',{}) 
     646            if len(filter(lambda x: (x=="{$}" and ob.id=="content") or x.endswith("/%s}"%ob.id),nodes.keys()))==0: 
     647              delLocalRoles = True 
     648          elif userid in invalid_userids: 
     649            delLocalRoles = True 
     650        if delLocalRoles: 
     651          rtn += ob.absolute_url()+ " " + userid + " " + str(userroles) + "<br/>" 
     652          ob.manage_delLocalRoles(userids=[userid]) 
     653       
     654      # Process subtree. 
     655      for subob in ob.objectValues(ob.dGlobalAttrs.keys()): 
     656        rtn += self.purgeLocalUsers(subob, valid_userids, invalid_userids) 
     657       
     658      return rtn 
     659 
     660 
    631661    # -------------------------------------------------------------------------- 
    632662    #  AccessManager.setLocalUser: 
    633663    # -------------------------------------------------------------------------- 
    634664    def setLocalUser(self, id, node, roles, langs): 
    635       #-- Insert node to user-properties. 
     665       
     666      # Insert node to user-properties. 
    636667      nodes = self.getUserAttr(id,'nodes',{}) 
    637668      nodes[node] = {'langs':langs,'roles':roles} 
     
    639670      self.setUserAttr(id,'nodes',nodes) 
    640671      roles = list(roles) 
    641       if 'ZMSAdministrator' in roles: roles.append('Manager') 
    642       #-- Set local roles in node. 
     672      if 'ZMSAdministrator' in roles: 
     673        roles.append('Manager') 
     674       
     675      # Set local roles in node. 
    643676      ob = self.getLinkObj(node,self.REQUEST) 
    644       try: 
     677      if ob is not None: 
    645678        ob.manage_setLocalRoles(id,roles) 
    646       except: 
    647         _globals.writeError(self,'[setLocalUser]: node=%s does not exist!'%node) 
    648679 
    649680 
     
    652683    # -------------------------------------------------------------------------- 
    653684    def delLocalUser(self, id, node): 
    654       #-- Delete node from user-properties. 
     685       
     686      # Delete node from user-properties. 
    655687      nodes = self.getUserAttr(id,'nodes',{}) 
    656688      if nodes.has_key(node): del nodes[node] 
    657689      nodes = nodes.copy() 
    658690      self.setUserAttr(id,'nodes',nodes) 
    659       #-- Delete local roles in node. 
     691       
     692      # Delete local roles in node. 
    660693      ob = self.getLinkObj(node,self.REQUEST) 
    661       try: 
     694      if ob is not None: 
    662695        ob.manage_delLocalRoles(userids=[id]) 
    663       except: 
    664         _globals.writeError(self,'[delLocalUser]: node=%s does not exist!'%node) 
    665696 
    666697 
     
    828859        if key=='obj': 
    829860          #-- Delete user. 
    830           id = deleteUser(self,id,REQUEST) 
     861          deleteUser(self,id) 
     862          id = '' 
    831863          #-- Assemble message. 
    832864          message = self.getZMILangStr('MSG_DELETED')%int(1) 
  • ZMS/trunk/dtml/ZMS/manage_customize.dtml

    r1755 r1785  
    1111</dtml-comment> 
    1212<dtml-if "REQUEST.get('key')=='Maintenance'"> 
    13         <dtml-if "REQUEST.get('btn','').startswith('Reindex')"> 
     13        <dtml-if "REQUEST.get('btn','').startswith('Purge')"> 
     14                <div id="system_msg" class="ui-state-highlight ui-corner-all"> 
     15                        <b>UserFolder:</b> 
     16                        Purge local users<br/><dtml-var "purgeLocalUsers()"> 
     17                        (<dtml-var "getLangFmtDate(ZopeTime())">) 
     18                </div> 
     19        <dtml-elif "REQUEST.get('btn','').startswith('Reindex')"> 
    1420                <div id="system_msg" class="ui-state-highlight ui-corner-all"> 
    1521                        <b>Catalog:</b> 
     
    420426</tr> 
    421427<tr valign="top" class="zmiNeutralColorLight0"> 
     428 <td class="form-small"><b>UserFolder</b></td> 
     429 <td class="form-small"></td> 
     430 <td class="form-small"></td> 
     431 <td class="form-small"><input type="submit" value="Purge &raquo; " name="btn" style="width:60px" /></td> 
     432</tr> 
     433<tr valign="top" class="zmiNeutralColorLight0"> 
    422434 <td class="form-small"><b>Catalog</b></td> 
    423435 <td class="form-small"><input type="checkbox" value="1" id="catalog_awareness_active" name="catalog_awareness_active:int" class="form-checkbox" <dtml-if "getConfProperty('ZMS.CatalogAwareness.active',1)==1">checked="checked"</dtml-if>/>&nbsp;<label for="catalog_awareness_active">Awareness</label></td> 
Note: See TracChangeset for help on using the changeset viewer.