|  | @ -121,7 +121,9 @@ def warn(msg): | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | class ForeignKeyFaltando(ObjectDoesNotExist): |  |  | class ForeignKeyFaltando(ObjectDoesNotExist): | 
			
		
	
		
		
			
				
					|  |  |     'Uma FK aponta para um registro inexistente' |  |  |     'Uma FK aponta para um registro inexistente' | 
			
		
	
		
		
			
				
					
					|  |  |     pass |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  |     def __init__(self, msg=''): | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         self.msg = msg | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | @lru_cache() |  |  | @lru_cache() | 
			
		
	
	
		
		
			
				
					|  | @ -697,10 +699,11 @@ class DataMigrator: | 
			
		
	
		
		
			
				
					|  |  |                     self.populate_renamed_fields(new, old) |  |  |                     self.populate_renamed_fields(new, old) | 
			
		
	
		
		
			
				
					|  |  |                     if ajuste_antes_salvar: |  |  |                     if ajuste_antes_salvar: | 
			
		
	
		
		
			
				
					|  |  |                         ajuste_antes_salvar(new, old) |  |  |                         ajuste_antes_salvar(new, old) | 
			
		
	
		
		
			
				
					
					|  |  |                 except ForeignKeyFaltando: |  |  |                 except ForeignKeyFaltando as e: | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |                     # tentamos preencher uma FK e o ojeto relacionado |  |  |                     # tentamos preencher uma FK e o ojeto relacionado | 
			
		
	
		
		
			
				
					|  |  |                     # não existe |  |  |                     # não existe | 
			
		
	
		
		
			
				
					|  |  |                     # então este é um objeo órfão: simplesmente ignoramos |  |  |                     # então este é um objeo órfão: simplesmente ignoramos | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     warn(e.msg) | 
			
		
	
		
		
			
				
					|  |  |                     continue |  |  |                     continue | 
			
		
	
		
		
			
				
					|  |  |                 else: |  |  |                 else: | 
			
		
	
		
		
			
				
					|  |  |                     if get_id_do_legado: |  |  |                     if get_id_do_legado: | 
			
		
	
	
		
		
			
				
					|  | @ -749,19 +752,21 @@ def adjust_documentoadministrativo(new, old): | 
			
		
	
		
		
			
				
					|  |  |         protocolo = Protocolo.objects.filter( |  |  |         protocolo = Protocolo.objects.filter( | 
			
		
	
		
		
			
				
					|  |  |             numero=old.num_protocolo, ano=new.ano) |  |  |             numero=old.num_protocolo, ano=new.ano) | 
			
		
	
		
		
			
				
					|  |  |         if not protocolo: |  |  |         if not protocolo: | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             # tentamos encontrar o protocolo no ano seguinte | 
			
		
	
		
		
			
				
					|  |  |             protocolo = Protocolo.objects.filter( |  |  |             protocolo = Protocolo.objects.filter( | 
			
		
	
		
		
			
				
					|  |  |                 numero=old.num_protocolo, ano=new.ano + 1) |  |  |                 numero=old.num_protocolo, ano=new.ano + 1) | 
			
		
	
		
		
			
				
					
					|  |  |             print('PROTOCOLO ENCONTRADO APENAS PARA O ANO SEGUINTE!!!!! ' |  |  |             if protocolo: | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                   'DocumentoAdministrativo: {}, numero_protocolo: {}, ' |  |  |                 print('PROTOCOLO ENCONTRADO APENAS PARA O ANO SEGUINTE!!!!! ' | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                   'ano doc adm: {}'.format( |  |  |                       'DocumentoAdministrativo: {}, numero_protocolo: {}, ' | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                       old.cod_documento, old.num_protocolo, new.ano)) |  |  |                       'ano doc adm: {}'.format( | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |         if not protocolo: |  |  |                           old.cod_documento, old.num_protocolo, new.ano)) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |             raise ForeignKeyFaltando( |  |  |             else: | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 'Protocolo {} faltando ' |  |  |                 warn('Protocolo {} faltando ' | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 '(referenciado no documento administrativo {}'.format( |  |  |                      '(referenciado no documento administrativo {}'.format( | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                     old.num_protocolo, old.cod_documento)) |  |  |                          old.num_protocolo, old.cod_documento)) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |         assert len(protocolo) == 1 |  |  |         if protocolo: | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |         new.protocolo = protocolo[0] |  |  |             assert len(protocolo) == 1, 'mais de um protocolo encontrado' | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  |             [new.protocolo] = protocolo | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | def adjust_mandato(new, old): |  |  | def adjust_mandato(new, old): | 
			
		
	
	
		
		
			
				
					|  | @ -954,8 +959,9 @@ def vincula_autor(new, old, model_relacionado, campo_relacionado, campo_nome): | 
			
		
	
		
		
			
				
					|  |  |             new.autor_related = model_relacionado.objects.get(pk=pk_rel) |  |  |             new.autor_related = model_relacionado.objects.get(pk=pk_rel) | 
			
		
	
		
		
			
				
					|  |  |         except ObjectDoesNotExist: |  |  |         except ObjectDoesNotExist: | 
			
		
	
		
		
			
				
					|  |  |             # ignoramos o autor órfão |  |  |             # ignoramos o autor órfão | 
			
		
	
		
		
			
				
					
					|  |  |             raise ForeignKeyFaltando('{} inexiste para autor'.format( |  |  |             raise ForeignKeyFaltando( | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 model_relacionado._meta.verbose_name)) |  |  |                 '{} [pk={}] inexistente para autor'.format( | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  |                     model_relacionado._meta.verbose_name, pk_rel)) | 
			
		
	
		
		
			
				
					|  |  |         else: |  |  |         else: | 
			
		
	
		
		
			
				
					|  |  |             new.nome = getattr(new.autor_related, campo_nome) |  |  |             new.nome = getattr(new.autor_related, campo_nome) | 
			
		
	
		
		
			
				
					|  |  |             return True |  |  |             return True | 
			
		
	
	
		
		
			
				
					|  | 
 |