|
Lines 1507-1529
class simpleLdap(object):
Link Here
|
| 1507 |
self.call_udm_property_hook('hook_ldap_pre_remove', self) |
1507 |
self.call_udm_property_hook('hook_ldap_pre_remove', self) |
| 1508 |
|
1508 |
|
| 1509 |
if remove_childs: |
1509 |
if remove_childs: |
| 1510 |
subelements = [] # type: List[Tuple[str, Dict[str, List[str]]]] |
1510 |
# remove twice: after the first removal some objects may be left over |
| 1511 |
if 'FALSE' not in self.lo.getAttr(self.dn, 'hasSubordinates'): |
1511 |
# a primary group can only be removed if all its members have been removed. |
| 1512 |
ud.debug(ud.ADMIN, ud.INFO, 'handlers/__init__._remove() children of base dn %s' % (self.dn,)) |
1512 |
self._remove_subtree() |
| 1513 |
subelements = self.lo.search(base=self.dn, scope='one', attr=[]) |
1513 |
self._remove_subtree() |
| 1514 |
|
|
|
| 1515 |
for subolddn, suboldattrs in subelements: |
| 1516 |
ud.debug(ud.ADMIN, ud.INFO, 'remove: subelement %s' % (subolddn,)) |
| 1517 |
for submodule in univention.admin.modules.identify(subolddn, suboldattrs): |
| 1518 |
subobject = submodule.object(None, self.lo, None, dn=subolddn, attributes=suboldattrs) |
| 1519 |
subobject.open() |
| 1520 |
try: |
| 1521 |
subobject.remove(remove_childs) |
| 1522 |
except univention.admin.uexceptions.base as exc: |
| 1523 |
ud.debug(ud.ADMIN, ud.ERROR, 'remove: could not remove %r: %s: %s' % (subolddn, type(exc).__name__, exc)) |
| 1524 |
break |
| 1525 |
else: |
| 1526 |
ud.debug(ud.ADMIN, ud.WARN, 'remove: could not identify UDM module of %r' % (subolddn,)) |
| 1527 |
|
1514 |
|
| 1528 |
self.lo.delete(self.dn) |
1515 |
self.lo.delete(self.dn) |
| 1529 |
self._exists = False |
1516 |
self._exists = False |
|
Lines 1535-1540
class simpleLdap(object):
Link Here
|
| 1535 |
self._write_admin_diary_remove() |
1522 |
self._write_admin_diary_remove() |
| 1536 |
self.save() |
1523 |
self.save() |
| 1537 |
|
1524 |
|
|
|
1525 |
def _remove_subtree(self): |
| 1526 |
subelements = [] # type: List[Tuple[str, Dict[str, List[str]]]] |
| 1527 |
if 'FALSE' not in self.lo.getAttr(self.dn, 'hasSubordinates'): |
| 1528 |
ud.debug(ud.ADMIN, ud.INFO, 'handlers/__init__._remove() children of base dn %s' % (self.dn,)) |
| 1529 |
subelements = self.lo.search(base=self.dn, scope='one', attr=[]) |
| 1530 |
|
| 1531 |
for subolddn, suboldattrs in subelements: |
| 1532 |
ud.debug(ud.ADMIN, ud.INFO, 'remove: subelement %s' % (subolddn,)) |
| 1533 |
for submodule in univention.admin.modules.identify(subolddn, suboldattrs): |
| 1534 |
subobject = submodule.object(None, self.lo, None, dn=subolddn, attributes=suboldattrs) |
| 1535 |
subobject.open() |
| 1536 |
try: |
| 1537 |
subobject.remove(remove_childs=True) |
| 1538 |
except univention.admin.uexceptions.base as exc: |
| 1539 |
ud.debug(ud.ADMIN, ud.ERROR, 'remove: could not remove %r: %s: %s' % (subolddn, type(exc).__name__, exc)) |
| 1540 |
break |
| 1541 |
else: |
| 1542 |
ud.debug(ud.ADMIN, ud.WARN, 'remove: could not identify UDM module of %r' % (subolddn,)) |
| 1543 |
|
| 1538 |
def _write_admin_diary_remove(self): |
1544 |
def _write_admin_diary_remove(self): |
| 1539 |
self._write_admin_diary_event('REMOVED') |
1545 |
self._write_admin_diary_event('REMOVED') |
| 1540 |
|
1546 |
|