Lines 1239-1273
class simpleLdap(object):
|
Link Here
|
---|
|
1239 |
|
1239 |
|
1240 |
al = self._ldap_addlist() |
1240 |
al = self._ldap_addlist() |
1241 |
al.extend(self._ldap_modlist()) |
1241 |
al.extend(self._ldap_modlist()) |
1242 |
m = univention.admin.modules.get(self.module) |
1242 |
al = self._ldap_object_classes_add(al) |
1243 |
|
|
|
1244 |
# evaluate extended attributes |
1245 |
ocs = set() |
1246 |
for prop in getattr(m, 'extended_udm_attributes', []): |
1247 |
ud.debug(ud.ADMIN, ud.INFO, 'simpleLdap._create: info[%s]:%r = %r' % (prop.name, self.has_property(prop.name), self.info.get(prop.name))) |
1248 |
if prop.syntax == 'boolean' and self.info.get(prop.name) == '0': |
1249 |
continue |
1250 |
if self.has_property(prop.name) and self.info.get(prop.name): |
1251 |
ocs.add(prop.objClass) |
1252 |
|
1253 |
module_options = univention.admin.modules.options(self.module) |
1254 |
# add object classes of (especially extended) options |
1255 |
for option in ['default'] + self.options: |
1256 |
try: |
1257 |
opt = module_options[option] |
1258 |
except KeyError: |
1259 |
ud.debug(ud.ADMIN, ud.INFO, '%r does not specify option %r' % (m.module, option)) |
1260 |
continue |
1261 |
ocs |= set(opt.objectClasses) |
1262 |
|
1263 |
# remove duplicated object classes |
1264 |
for i in al: |
1265 |
key, val = i[0], i[-1] # might be a triple |
1266 |
if val and key.lower() == 'objectclass': |
1267 |
ocs -= set([val] if isinstance(val, basestring) else val) |
1268 |
if ocs: |
1269 |
al.append(('objectClass', list(ocs))) |
1270 |
|
1271 |
al = self.call_udm_property_hook('hook_ldap_addlist', self, al) |
1243 |
al = self.call_udm_property_hook('hook_ldap_addlist', self, al) |
1272 |
|
1244 |
|
1273 |
# ensure univentionObject is set |
1245 |
# ensure univentionObject is set |
Lines 1302-1307
class simpleLdap(object):
|
Link Here
|
---|
|
1302 |
self.save() |
1274 |
self.save() |
1303 |
return self.dn |
1275 |
return self.dn |
1304 |
|
1276 |
|
|
|
1277 |
def _ldap_object_classes_add(self, al): |
1278 |
m = univention.admin.modules.get(self.module) |
1279 |
# evaluate extended attributes |
1280 |
ocs = set() |
1281 |
for prop in getattr(m, 'extended_udm_attributes', []): |
1282 |
ud.debug(ud.ADMIN, ud.INFO, 'simpleLdap._create: info[%s]:%r = %r' % (prop.name, self.has_property(prop.name), self.info.get(prop.name))) |
1283 |
if prop.syntax == 'boolean' and self.info.get(prop.name) == '0': |
1284 |
continue |
1285 |
if self.has_property(prop.name) and self.info.get(prop.name): |
1286 |
ocs.add(prop.objClass) |
1287 |
|
1288 |
module_options = univention.admin.modules.options(self.module) |
1289 |
# add object classes of (especially extended) options |
1290 |
for option in ['default'] + self.options: |
1291 |
try: |
1292 |
opt = module_options[option] |
1293 |
except KeyError: |
1294 |
ud.debug(ud.ADMIN, ud.INFO, '%r does not specify option %r' % (m.module, option)) |
1295 |
continue |
1296 |
ocs |= set(opt.objectClasses) |
1297 |
|
1298 |
# remove duplicated object classes |
1299 |
for i in al: |
1300 |
key, val = i[0], i[-1] # might be a triple |
1301 |
if val and key.lower() == 'objectclass': |
1302 |
ocs -= set([val] if isinstance(val, basestring) else val) |
1303 |
if ocs: |
1304 |
al.append(('objectClass', list(ocs))) |
1305 |
|
1306 |
return al |
1307 |
|
1305 |
def _modify(self, modify_childs=1, ignore_license=0, response=None, serverctrls=None): |
1308 |
def _modify(self, modify_childs=1, ignore_license=0, response=None, serverctrls=None): |
1306 |
"""Modify the object. Should only be called by :func:`univention.admin.handlers.simpleLdap.modify`.""" |
1309 |
"""Modify the object. Should only be called by :func:`univention.admin.handlers.simpleLdap.modify`.""" |
1307 |
self.exceptions = [] |
1310 |
self.exceptions = [] |