diff --git a/sapl/legacy/migration.py b/sapl/legacy/migration.py index 6075dccee..7c1311362 100644 --- a/sapl/legacy/migration.py +++ b/sapl/legacy/migration.py @@ -552,16 +552,16 @@ class DataMigrator: new = model() try: self.populate_renamed_fields(new, old) + if ajuste_antes_salvar: + ajuste_antes_salvar(new, old) + save(new, old) except ForeignKeyFaltando: # tentamos preencher uma FK e o ojeto relacionado não existe # então este é um objeo órfão: simplesmente ignoramos continue - - if ajuste_antes_salvar: - ajuste_antes_salvar(new, old) - save(new, old) if ajuste_depois_salvar: ajuste_depois_salvar(new, old) + if self.data_mudada: with reversion.create_revision(): save_relation(**self.data_mudada) @@ -820,32 +820,32 @@ def adjust_autor(new, old): if old.cod_parlamentar: try: new.autor_related = Parlamentar.objects.get(pk=old.cod_parlamentar) - except Exception: - with reversion.create_revision(): - msg = 'Um parlamentar relacionado de PK [%s] não existia' \ - % old.cod_parlamentar - reversion.set_comment('Stub criado pela migração') - value = make_stub(Parlamentar, old.cod_parlamentar) - descricao = 'stub criado para entrada orfã!' - warn(msg + ' => ' + descricao) - save_relation(value, [], msg, descricao, - eh_stub=True) - new.autor_related = value - new.nome = new.autor_related.nome_parlamentar + except ObjectDoesNotExist: + # ignoramos o autor órfão + raise ForeignKeyFaltando('Parlamentar inexiste para autor') + else: + new.nome = new.autor_related.nome_parlamentar elif old.cod_comissao: - new.autor_related = Comissao.objects.get(pk=old.cod_comissao) - new.nome = new.autor_related.nome + try: + new.autor_related = Comissao.objects.get(pk=old.cod_comissao) + except ObjectDoesNotExist: + # ignoramos o autor órfão + raise ForeignKeyFaltando('Comissao inexiste para autor') + else: + new.nome = new.autor_related.nome if old.col_username: - if not get_user_model().objects.filter( - username=old.col_username).exists(): - user = get_user_model()(username=old.col_username) + user_model = get_user_model() + if not user_model.objects.filter(username=old.col_username).exists(): + # cria um novo ususaŕio para o autor + user = user_model(username=old.col_username) user.set_password(12345) with reversion.create_revision(): user.save() - reversion.set_comment('Objeto criado pela migração') - + reversion.set_comment( + 'Usuário criado pela migração para o autor {}'.format( + old.cod_autor)) grupo_autor = Group.objects.get(name="Autor") user.groups.add(grupo_autor)