Skip to content

Commit

Permalink
Merge pull request #308 from gitnnolabs/fix_related_articles
Browse files Browse the repository at this point in the history
Adiciona no recurso de descobertas dos artigos relacionados a capacidade de tratar mais um artigo com o mesmo DOI.
  • Loading branch information
gitnnolabs authored Nov 13, 2021
2 parents 1c3a8c0 + e3b88aa commit cbe5a9e
Showing 1 changed file with 22 additions and 9 deletions.
31 changes: 22 additions & 9 deletions airflow/dags/operations/sync_kernel_to_website_operations.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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):
Expand Down

0 comments on commit cbe5a9e

Please sign in to comment.