| Lines 686-704
          def recode_attribs(attribs):
      
      
        Link Here | 
        
          | 686 | 		# we should delete this object | 686 | 		# we should delete this object | 
        
          | 687 | 		ignore_subtree_match = False | 687 | 		ignore_subtree_match = False | 
        
          | 688 |  | 688 |  | 
          
            
              | 689 | 		if not new: | 689 | 		_attr = new or old | 
            
              | 690 | 			change_type = "delete" | 690 | 		for k in self.property.keys(): | 
            
              | 691 | 			ud.debug(ud.LDAP, ud.INFO, "__sync_file_from_ucs: objected was deleted") | 691 | 			if self.modules[k].identify(unicode(dn, 'utf8'), _attr): | 
            
              | 692 | 			for k in self.property.keys(): | 692 | 				key = k | 
            
              | 693 | 				if self.modules[k].identify(unicode(dn, 'utf8'), old): | 693 | 				break | 
            
              | 694 | 					key = k |  |  | 
            
              | 695 | 					break | 
            
              | 696 | 		else: | 
            
              | 697 | 			for k in self.property.keys(): | 
            
              | 698 | 				if self.modules[k].identify(unicode(dn, 'utf8'), new): | 
            
              | 699 | 					key = k | 
            
              | 700 | 					break | 
        
          | 701 |  | 694 |  | 
            
              |  |  | 695 | 		if new: | 
        
          | 702 | 			entryUUID = new.get('entryUUID', [None])[0] | 696 | 			entryUUID = new.get('entryUUID', [None])[0] | 
        
          | 703 | 			if entryUUID: | 697 | 			if entryUUID: | 
        
          | 704 | 				if self.was_entryUUID_deleted(entryUUID): | 698 | 				if self.was_entryUUID_deleted(entryUUID): | 
  
    | Lines 761-766
          def recode_attribs(attribs):
      
      
        Link Here | 
        
          | 761 | 					old_dn = ''  # there may be an old_dn if object was moved from ignored container | 755 | 					old_dn = ''  # there may be an old_dn if object was moved from ignored container | 
        
          | 762 | 					ud.debug(ud.LDAP, ud.INFO, "__sync_file_from_ucs: objected was added") | 756 | 					ud.debug(ud.LDAP, ud.INFO, "__sync_file_from_ucs: objected was added") | 
        
          | 763 |  | 757 |  | 
            
              |  |  | 758 | 		if not new: | 
            
              | 759 | 			change_type = "delete" | 
            
              | 760 | 			ud.debug(ud.LDAP, ud.INFO, "__sync_file_from_ucs: objected was deleted") | 
            
              | 761 |  | 
        
          | 764 | 		if key: | 762 | 		if key: | 
        
          | 765 | 			if change_type == 'delete': | 763 | 			if change_type == 'delete': | 
        
          | 766 | 				if old_dn: | 764 | 				if old_dn: | 
  
    | Lines 816-831
          def get_ucs_ldap_object(self, dn):
      
      
        Link Here | 
        
          | 816 | 	def get_ucs_object(self, property_type, dn): | 814 | 	def get_ucs_object(self, property_type, dn): | 
        
          | 817 | 		_d = ud.function('ldap.get_ucs_object') | 815 | 		_d = ud.function('ldap.get_ucs_object') | 
        
          | 818 | 		ucs_object = None | 816 | 		ucs_object = None | 
          
            
              | 819 | 		if isinstance(dn, type(u'')): | 817 | 		if isinstance(dn, unicode): | 
        
          | 820 | 			searchdn = dn | 818 | 			searchdn = dn | 
        
          | 821 | 		else: | 819 | 		else: | 
        
          | 822 | 			searchdn = unicode(dn) | 820 | 			searchdn = unicode(dn) | 
        
          | 823 | 		try: | 821 | 		try: | 
          
            
              | 824 | 			if not self.get_ucs_ldap_object(searchdn):  # fails if object doesn't exist | 822 | 			attr = self.get_ucs_ldap_object(searchdn) | 
            
              |  |  | 823 | 			if not attr: | 
        
          | 825 | 				ud.debug(ud.LDAP, ud.INFO, "get_ucs_object: object not found: %s" % searchdn) | 824 | 				ud.debug(ud.LDAP, ud.INFO, "get_ucs_object: object not found: %s" % searchdn) | 
        
          | 826 | 				return None | 825 | 				return None | 
          
            
              | 827 | 			module = self.modules[property_type] | 826 | 			module = self.modules[property_type]  # old default | 
            
              | 828 | 			ucs_object = univention.admin.objects.get(module, co='', lo=self.lo, position='', dn=searchdn)  # does not fail if object doesn't exist | 827 | 			if not module.identify(searchdn, attr): | 
            
              |  |  | 828 | 				for m in self.modules_others.get(property_type, []): | 
            
              | 829 | 					if m and m.identify(searchdn, attr): | 
            
              | 830 | 						module = m | 
            
              | 831 | 						break | 
            
              | 832 | 				else: | 
            
              | 833 | 					ud.debug(ud.LDAP, ud.ERROR, "get_ucs_object: could not identify UDM object type: %s" % searchdn) | 
            
              | 834 | 					ud.debug(ud.LDAP, ud.PROCESS, "get_ucs_object: using default: %s" % module.module) | 
            
              | 835 |  | 
            
              | 836 | 			ucs_object = univention.admin.objects.get(module, co=None, lo=self.lo, position='', dn=searchdn) | 
        
          | 829 | 			ud.debug(ud.LDAP, ud.INFO, "get_ucs_object: object found: %s" % searchdn) | 837 | 			ud.debug(ud.LDAP, ud.INFO, "get_ucs_object: object found: %s" % searchdn) | 
        
          | 830 | 		except (ldap.SERVER_DOWN, SystemExit): | 838 | 		except (ldap.SERVER_DOWN, SystemExit): | 
        
          | 831 | 			raise | 839 | 			raise | 
  
    | Lines 1179-1185
          def add_in_ucs(self, property_type, object, module, position):
      
      
        Link Here | 
        
          | 1179 |  | 1187 |  | 
        
          | 1180 | 	def modify_in_ucs(self, property_type, object, module, position): | 1188 | 	def modify_in_ucs(self, property_type, object, module, position): | 
        
          | 1181 | 		_d = ud.function('ldap.modify_in_ucs') | 1189 | 		_d = ud.function('ldap.modify_in_ucs') | 
            
              | 1182 | 		module = self.modules[property_type] |  |  | 
        
          | 1183 | 		if 'olddn' in object: | 1190 | 		if 'olddn' in object: | 
        
          | 1184 | 			ucs_object = univention.admin.objects.get(module, None, self.lo, dn=object['olddn'], position='') | 1191 | 			ucs_object = univention.admin.objects.get(module, None, self.lo, dn=object['olddn'], position='') | 
        
          | 1185 | 		else: | 1192 | 		else: | 
  
    | Lines 1189-1195
          def modify_in_ucs(self, property_type, object, module, position):
      
      
        Link Here | 
        
          | 1189 |  | 1196 |  | 
        
          | 1190 | 	def move_in_ucs(self, property_type, object, module, position): | 1197 | 	def move_in_ucs(self, property_type, object, module, position): | 
        
          | 1191 | 		_d = ud.function('ldap.move_in_ucs') | 1198 | 		_d = ud.function('ldap.move_in_ucs') | 
            
              | 1192 | 		module = self.modules[property_type] |  |  | 
        
          | 1193 | 		try: | 1199 | 		try: | 
        
          | 1194 | 			if object['olddn'].lower() == object['dn'].lower(): | 1200 | 			if object['olddn'].lower() == object['dn'].lower(): | 
        
          | 1195 | 				ud.debug(ud.LDAP, ud.WARN, "move_in_ucs: cancel move, old and new dn are the same ( %s to %s)" % (object['olddn'], object['dn'])) | 1201 | 				ud.debug(ud.LDAP, ud.WARN, "move_in_ucs: cancel move, old and new dn are the same ( %s to %s)" % (object['olddn'], object['dn'])) | 
  
    | Lines 1237-1243
          def was_entryUUID_deleted(self, entryUUID):
      
      
        Link Here | 
        
          | 1237 |  | 1243 |  | 
        
          | 1238 | 	def delete_in_ucs(self, property_type, object, module, position): | 1244 | 	def delete_in_ucs(self, property_type, object, module, position): | 
        
          | 1239 | 		_d = ud.function('ldap.delete_in_ucs') | 1245 | 		_d = ud.function('ldap.delete_in_ucs') | 
            
              | 1240 | 		module = self.modules[property_type] |  |  | 
        
          | 1241 | 		ucs_object = univention.admin.objects.get(module, None, self.lo, dn=object['dn'], position='') | 1246 | 		ucs_object = univention.admin.objects.get(module, None, self.lo, dn=object['dn'], position='') | 
        
          | 1242 |  | 1247 |  | 
        
          | 1243 | 		if object['attributes'].get('objectGUID'): | 1248 | 		if object['attributes'].get('objectGUID'): | 
  
    | Lines 1332-1338
          def sync_to_ucs(self, property_type, object, premapped_ad_dn, retry=True):
      
      
        Link Here | 
        
          | 1332 | 		except:  # FIXME: which exception is to be caught? | 1337 | 		except:  # FIXME: which exception is to be caught? | 
        
          | 1333 | 			ud.debug(ud.LDAP, ud.PROCESS, 'sync to ucs...') | 1338 | 			ud.debug(ud.LDAP, ud.PROCESS, 'sync to ucs...') | 
        
          | 1334 |  | 1339 |  | 
            
              | 1335 | 		module = self.modules[property_type] |  |  | 
        
          | 1336 | 		position = univention.admin.uldap.position(self.baseConfig['ldap/base']) | 1340 | 		position = univention.admin.uldap.position(self.baseConfig['ldap/base']) | 
        
          | 1337 |  | 1341 |  | 
        
          | 1338 | 		parent_dn = string.join(ldap.explode_dn(object['dn'])[1:], ",") | 1342 | 		parent_dn = string.join(ldap.explode_dn(object['dn'])[1:], ",") | 
  
    | Lines 1354-1359
          def sync_to_ucs(self, property_type, object, premapped_ad_dn, retry=True):
      
      
        Link Here | 
        
          | 1354 | 				ud.debug(ud.LDAP, ud.PROCESS, 'The object (%s) will be ignored because a valid match filter for this object was not found.' % old_ucs_ldap_object['dn']) | 1358 | 				ud.debug(ud.LDAP, ud.PROCESS, 'The object (%s) will be ignored because a valid match filter for this object was not found.' % old_ucs_ldap_object['dn']) | 
        
          | 1355 | 				return True | 1359 | 				return True | 
        
          | 1356 |  | 1360 |  | 
            
              |  |  | 1361 | 			module = self.modules[property_type] | 
            
              | 1362 | 			if old_object: | 
            
              | 1363 | 				module = univention.admin.modules.get(old_object.module) | 
            
              | 1364 |  | 
        
          | 1357 | 			if object['modtype'] == 'add': | 1365 | 			if object['modtype'] == 'add': | 
        
          | 1358 | 				result = self.add_in_ucs(property_type, object, module, position) | 1366 | 				result = self.add_in_ucs(property_type, object, module, position) | 
        
          | 1359 | 				self._check_dn_mapping(object['dn'], premapped_ad_dn) | 1367 | 				self._check_dn_mapping(object['dn'], premapped_ad_dn) |