From e3b88aa471767f208b9c63c226010bf63db19402 Mon Sep 17 00:00:00 2001 From: gitnnolabs Date: Fri, 12 Nov 2021 09:14:55 -0300 Subject: [PATCH] =?UTF-8?q?Adiciona=20na=20recurso=20de=20descobertas=20do?= =?UTF-8?q?s=20artigos=20relacionados=20a=20capacidade=20de=20tratar=20mai?= =?UTF-8?q?s=20um=20artigo=20com=20o=20mesmo=20DOI,=20adiciona=20mensagens?= =?UTF-8?q?=20com=20os=20artigos=20encontrados=20e=20melhora=20a=20l=C3=B3?= =?UTF-8?q?gica=20de=20exibi=C3=A7=C3=A3o=20mensagens=20de=20forma=20corre?= =?UTF-8?q?ta=20quando=20encontrado=20e=20n=C3=A3o=20encontrado.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sync_kernel_to_website_operations.py | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/airflow/dags/operations/sync_kernel_to_website_operations.py b/airflow/dags/operations/sync_kernel_to_website_operations.py index 97b0d1cc..a98fa26d 100644 --- a/airflow/dags/operations/sync_kernel_to_website_operations.py +++ b/airflow/dags/operations/sync_kernel_to_website_operations.py @@ -390,9 +390,22 @@ def _update_related_articles(article, related_dict): if related_doi: try: - related_article = models.Article.objects.get(doi=related_doi) + related_article = models.Article.objects.get(doi=related_doi, is_public=True) + except models.Article.MultipleObjectsReturned as ex: + articles = models.Article.objects.filter( + doi=related_doi, is_public=True) + + logging.info("Foram encontrados na base de dados do site mais de 1 artigo com o DOI: %s. Lista de ID de artigos encontrados: %s" % ( + related_doi, [d.id for d in articles])) + + # Quando existe mais de um registro no relacionamento, consideramos o primeiro encontrado. + first_found = articles[0] + + logging.info("Para essa relação foi considerado o primeiro encontrado, artigo com id: %s" % first_found.id) + related_article = first_found except models.Article.DoesNotExist as ex: - logging.error("Não foi possível encontrar na base de dados do site o artigo com DOI: %s, portanto, não foi possível atualiza o related_articles do relacionado, com os dados: %s, erro: %s" % (article.doi, article_data, ex)) + logging.error("Não foi possível encontrar na base de dados do site o artigo com DOI: %s, portanto, não foi possível atualiza o related_articles do relacionado, com os dados: %s, erro: %s" % ( + related_doi, article_data, ex)) else: related_article_model = models.RelatedArticle(**article_data) @@ -406,14 +419,14 @@ def _update_related_articles(article, related_dict): # Atualiza a referência no ``ref_id`` no dicionário de ``related_article``` related_dict['ref_id'] = related_article._id - article_related_model = models.RelatedArticle( - **related_dict) + article_related_model = models.RelatedArticle( + **related_dict) - # Garante a unicidade da relação. - if article_related_model not in article.related_articles: - article.related_articles += [article_related_model] - logging.info("Relacionamento entre o documento processado: %s e seu relacionado: %s, realizado com sucesso. Tipo de relação entre os documentos: %s" % ( - article.doi, related_dict.get('doi'), related_dict.get('related_type'))) + # Garante a unicidade da relação. + if article_related_model not in article.related_articles: + article.related_articles += [article_related_model] + logging.info("Relacionamento entre o documento processado: %s e seu relacionado: %s, realizado com sucesso. Tipo de relação entre os documentos: %s" % ( + article.doi, related_dict.get('doi'), related_dict.get('related_type'))) def _get_related_articles(xml):