Show
Ignore:
Timestamp:
07/28/03 11:11:12 (21 years ago)
Author:
jalet
Message:

PyKota now tries to add its attributes intelligently in existing LDAP
directories.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/pykota/storages/ldapstorage.py

    r1099 r1105  
    2121# 
    2222# $Log$ 
     23# Revision 1.21  2003/07/28 09:11:12  jalet 
     24# PyKota now tries to add its attributes intelligently in existing LDAP 
     25# directories. 
     26# 
    2327# Revision 1.20  2003/07/25 10:41:30  jalet 
    2428# Better documentation. 
     
    468472    def addUser(self, user) :         
    469473        """Adds a user to the quota storage, returns it.""" 
    470         fields = { self.info["userrdn"] : user.Name, 
    471                    "objectClass" : ["pykotaObject", "pykotaAccount", "pykotaAccountBalance"], 
    472                    "cn" : user.Name, 
    473                    "pykotaUserName" : user.Name, 
    474                    "pykotaLimitBY" : (user.LimitBy or "quota"), 
    475                    "pykotaBalance" : str(user.AccountBalance or 0.0), 
    476                    "pykotaLifeTimePaid" : str(user.LifeTimePaid or 0.0), 
    477                  }  
    478         dn = "%s=%s,%s" % (self.info["userrdn"], user.Name, self.info["userbase"]) 
    479         self.doAdd(dn, fields) 
     474        newfields = { 
     475                       "pykotaUserName" : user.Name, 
     476                       "pykotaLimitBY" : (user.LimitBy or "quota"), 
     477                       "pykotaBalance" : str(user.AccountBalance or 0.0), 
     478                       "pykotaLifeTimePaid" : str(user.LifeTimePaid or 0.0), 
     479                    }    
     480        mustadd = 1 
     481        if self.info["newuser"].lower() != 'below' : 
     482            result = self.doSearch("(&(objectClass=%s)(%s=%s))" % (self.info["newuser"], self.info["userrdn"], user.Name), None, base=self.info["userbase"]) 
     483            if result : 
     484                (dn, fields) = result[0] 
     485                fields["objectClass"].extend(["pykotaAccount", "pykotaAccountBalance"]) 
     486                fields.update(newfields) 
     487                self.doModify(dn, fields) 
     488                mustadd = 0 
     489                 
     490        if mustadd : 
     491            fields = { self.info["userrdn"] : user.Name, 
     492                       "objectClass" : ["pykotaObject", "pykotaAccount", "pykotaAccountBalance"], 
     493                       "cn" : user.Name, 
     494                     }  
     495            fields.update(newfields)          
     496            dn = "%s=%s,%s" % (self.info["userrdn"], user.Name, self.info["userbase"]) 
     497            self.doAdd(dn, fields) 
    480498        return self.getUser(user.Name) 
    481499         
    482500    def addGroup(self, group) :         
    483501        """Adds a group to the quota storage, returns it.""" 
    484         fields = { self.info["grouprdn"] : group.Name, 
    485                    "objectClass" : ["pykotaObject", "pykotaGroup"], 
    486                    "cn" : group.Name, 
    487                    "pykotaGroupName" : group.Name, 
    488                    "pykotaLimitBY" : (group.LimitBy or "quota"), 
    489                  }  
    490         dn = "%s=%s,%s" % (self.info["grouprdn"], group.Name, self.info["groupbase"]) 
    491         self.doAdd(dn, fields) 
     502        newfields = {  
     503                      "pykotaGroupName" : group.Name, 
     504                      "pykotaLimitBY" : (group.LimitBy or "quota"), 
     505                    }  
     506        mustadd = 1 
     507        if self.info["newgroup"].lower() != 'below' : 
     508            result = self.doSearch("(&(objectClass=%s)(%s=%s))" % (self.info["newgroup"], self.info["grouprdn"], group.Name), None, base=self.info["groupbase"]) 
     509            if result : 
     510                (dn, fields) = result[0] 
     511                fields["objectClass"].extend(["pykotaGroup"]) 
     512                fields.update(newfields) 
     513                self.doModify(dn, fields) 
     514                mustadd = 0 
     515                 
     516        if mustadd : 
     517            fields = { self.info["grouprdn"] : group.Name, 
     518                       "objectClass" : ["pykotaObject", "pykotaGroup"], 
     519                       "cn" : group.Name, 
     520                     }  
     521            fields.update(newfields)          
     522            dn = "%s=%s,%s" % (self.info["grouprdn"], group.Name, self.info["groupbase"]) 
     523            self.doAdd(dn, fields) 
    492524        return self.getGroup(group.Name) 
    493525