Remove node and its subtree. dn --- distinguished name of node.
(self, dn)
| 175 | self.add(new_dn) |
| 176 | |
| 177 | def remove(self, dn): |
| 178 | """Remove node and its subtree. |
| 179 | |
| 180 | dn --- distinguished name of node. |
| 181 | """ |
| 182 | |
| 183 | if dn not in self.dn_set: |
| 184 | raise ValueError('A record with dn=%s doesn\'t exists!' % dn) |
| 185 | |
| 186 | parent = self.get_parent_dn(dn) |
| 187 | fake_parent = self.get_fake_parent_dn(dn) |
| 188 | |
| 189 | if parent != fake_parent: |
| 190 | self.fake_parent[fake_parent].remove(dn) |
| 191 | |
| 192 | self.childs[parent].remove(dn) |
| 193 | |
| 194 | if dn in self.childs.keys(): |
| 195 | childs = tuple(self.childs[dn]) |
| 196 | for i in childs: |
| 197 | self.remove(i) |
| 198 | self.childs.pop(dn) |
| 199 | |
| 200 | self.parent.pop(dn) |
| 201 | self.dn_set.remove(dn) |
| 202 | |
| 203 | |
| 204 | if __name__ == '__main__': |
no test coverage detected