Skip to content

Commit

Permalink
Atualiza main_ingress com main (#424)
Browse files Browse the repository at this point in the history
* Corrige Institution.__str__, adiciona atributos de autocomplete e altera InstitutionHistory.panels de FieldPanel para Autocomplete (#401)

* Faz correções na app journal: adiciona Journal.title, wagtail_hooks.JournalCreateView, etc  (#402)

* Adiciona Journal.title

* Modifica os atributos de journal.models.Owner e Publisher

* Cria journal.wagtail.JournalCreateView para adicionar o usuário como creator

* Adiciona migrações de banco de dados relacionados a journal

* Refatora upload parte 3 - agrupa em uma tarefa as validações: assets, renditions, conteúdo do XML (#398)

* Cria a tarefa upload.tasks.task_validate_original_zip_file

* Cria upload.tasks.task_validate_xml_content

* Cria upload.xml_validation

* Anota TODO para inserir parâmetros para as validações

* Atualiza packtools para a versão 3.3.4 que contempla mais validações

* Remove package.tasks

* Adiciona importações faltantes

* Refatora upload parte 3 - agrupa em uma tarefa as validações: assets, renditions, conteúdo do XML (#399)

* Cria a tarefa upload.tasks.task_validate_original_zip_file

* Cria upload.tasks.task_validate_xml_content

* Cria upload.xml_validation

* Anota TODO para inserir parâmetros para as validações

* Atualiza packtools para a versão 3.3.4 que contempla mais validações

* Remove package.tasks

* Adiciona importações faltantes

* Refatora upload parte 2 - Adiciona funções em upload.controller para avaliar o pacote recém recebido (#400)

* Cria os upload.choices.VE_UNEXPECTED_ERROR e VE_FORBIDDEN_UPDATE_ERROR

* Cria/Edita Package.get, create_or_update, _add_validation_result

* Cria funções para avaliar o XML recém-recebido (é esperado? os dados de journal e issue estão corretos?)

* Cria testes para upload.controller.*

* Adiciona a migração de banco de dados por criar novos valores de choices

* Corrige ausência de definição de variáveis

* Adiciona filtros de journal_acron e publication_year para migrar dados de artigos (#403)

* Adiciona filtros de journal_acron e publication_year para migrar dados de artigos, criando uma amostragem de migração

* Adiciona os parâmetros journal_acron e publication_year

* Garante que no XML migrado (seja nativo ou gerado a partir do HTML) tenha o PID v2 e o order (article-id other) (#405)

* Corrige ou adiciona ao XML o elemento pid-v2 usando como valor o pid do artigo do site clássico

* Atualiza packtools versão 3.4.0 para ter XMLWithPre.order
Corrige ou adiciona ao XML o elemento article-id (other/order) usando como valor os últimos 5 dígitos do pid do artigo do site clássico

* Atualiza a versão da biblioteca scielo_classic_website para 1.6.4 para corrigir a obtenção de registros de artigos em serial xml

* Evita guardar versões anteriores dos arquivos

* Cria o procedimento de corrigir o valor do Pid v2 (#410)

* Cria PidProviderXML.fix_pid_v2

* Cria FixPidV2 para controlar o que foi corrigido no upload e no core

* Cria FixPidV2ModelAdmin

* Adiciona PidProviderAPIClient.fix_pid_v2, fix_pid_v2_url. Refatora PidProviderAPIClient.enabled

* Cria APIPidProviderFixPidV2Error

* Cria provider.requester.PidRequester.fix_pid_v2

* Cria SPSPkg.fix_pid_v2

* Cria ArticleProc.fix_pid_v2 e adiciona a chamada no procedimento de generate_sps_package

* Cria tarefas para corriger o valor de pid v2 em PidProviderXML a partir de ArticleProc.pid

* Cria provider.provider.PidProvider com os métodos fix_pid_v2, get_sps_pkg_name, get_xmltree

* Adiciona a migração correspondente ao modelo FixPidV2

* Corrige ausencia de pid v3 no xml submetido do upload para o core (#411)

* Atualiza a versão de packtools 4.1.1 para usar XMLWithPre.data e .files

* Modifica PidProviderXML.is_registered para atualizar os pids de xml_with_pre com os valores registrados, além disso, era necessário retornar se está registrado e igual ou registrado e diferente ou não registrado

* Distingue status de demanda de registro e status do registro

* Modifica PidProviderAPIClient._process_post_xml_response para atualizar ou não os valores dos pids de  xml_with_pre com os valores fornecidos pelo Core

* Adiciona registered_in_core como filtro de PidProviderXMLModelAdmin

* Atualiza dependencias base.txt e production.txt (#409)

* Comenta app captcha

* Atualiza dependencias

---------

Co-authored-by: Roberta Takenaka <[email protected]>

* Modifica comportamento de Pid provider, que passa a aceitar mudanças de pids (#415)

* Cria PidProviderXML.complete_pids, que completa pids com registrados ou inéditos

* Cria PidProviderXML._check_pids, que valida pid do XML é inédito e/ou registrado e/ou pertencente a outro documento

* Cria PidProviderXML.get_pids, que retorna todos os pids vigentes e outros

* Corrige PidProviderXML._is_registered_pid, adicionando a verificação em OtherPid

* Corrige PidProviderXML._get_unique_v3, que usa _is_registered_pid e agora não precisa verificar OtherPid

* Ajusta PidProviderXML._add_other_pid

* Remove PidProviderXML._complete_pids excedente

* Corrige PidProvider._add_pid_v3 e _add_pid_v2

* Corrige PidProviderXML.is_registered

* Ajusta PidProviderXML._save, removendo _add_other_pid e removendo change_pids

* Modifica PidProviderXML.register

* Melhora XMLVersion.__str__, mostrando nome do arquivo + data no lugar de pid v3

* Melhora _process_post_xml_response

* Para PidProvider.provide_pid_for_xml_with_pre, adiciona parâmetro caller, completa XML com pids registrados se ausentes no XML, adiciona xml_changed ao retorno

* Adiciona comando para completar XML com pids registrados antes de solicitar pid para Core

* Cria meio de configurar / habilitar / desabilitar fix_pid_v2 do Core (#416)

* Cria a classe PidProviderEndpoint, inline de PidProviderConfig

* Modifica o modo de obter fix_pid_v2_url

* Adiciona modelo PidProviderEndpoint

* Adiciona 'fixed_in_core': False ao retorno de fix_pid_v2 (#417)

* Evita que SPSPkg armazene arquivos em excesso (#418)

* Verifica se xml registrado e xml recebido são iguais, somente após completar XML com os pids registrados (#419)

* Compara se xml_with_pre é igual ao registrado somente após adicionar os pids registrados se aplicável

* Adiciona a funcionalidade de forçar o registro no Core mesmo que o registro está indicando que já está sincronizado

* Melhora ordem dos itens do menu (#408)

* Refatora a funcionalidade da ordem do menu

* Reordena menu itens padrao do wagtail e remove algum deless

* Insere funcao get_menu_order em menu_order

* Altera a ordem dos app

* Move as operações anteriores de ArticleProc, IssueProc, JournalProc para um arquivo (#420)

* Cria o modelo ArticleProcReport e ArticleProcReportModelAdmin

* Cria o modelo ProcReport para armazenar processamentos anteriores, mantendo apenas o vigente nos respectivos ArticleProc, IssueProc, JournalProc

* Adiciona as migrações de banco de dados

* Melhora o registro das operações das tarefas relacionadas à migração e publicação (#422)

* Melhora os rótulos, deixa todos os campos não editáveis, apresenta os eventos do mais recente para o mais antigo

* Adiciona Article.data, Issue.data, Journal.data

* Adiciona retorno às função que criam instâncias de Article, Issue e Journal

* Adiciona Article.data, Issue.data, Journal.data nos detalhes das operações de entrada de dados

* Aplica black

* Adiciona

* Adiciona mais detalhes ao registro da tarefa de gerar o XML a partir do HTML

* Adiciona mais detalhes ao registro da tarefa de gerar o pacote SPS

* Corrige o valor de 'completed' dos resultados das operações de solicitação de pid v3

* Adiciona o parâmetro compression em ZipFile

* Modifica o sps_pkg_status para PENDING se o pacote não tem todos os texts

* Modifica o sps_pkg_status para DONE se o pacote não tem todos os texts

* Modifica o sps_pkg_status para PENDING se o pacote não tem todos os texts

* Corrige ausência de importação de ZIP_DEFLATED

* Adiciona o atributo order para a listagem dos itens na área administrativa

* Adiciona as migrações de banco de dados

* Adiciona detalhes do processamento da adição de arquivos no minio

---------

Co-authored-by: Samuel Veiga Rangel <[email protected]>
  • Loading branch information
robertatakenaka and samuelveigarangel authored Mar 31, 2024
1 parent db61eb5 commit 8ea1fc2
Show file tree
Hide file tree
Showing 43 changed files with 1,834 additions and 279 deletions.
18 changes: 15 additions & 3 deletions article/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,13 +117,25 @@ class Meta:

base_form_class = ArticleForm

autocomplete_search_field = "pid_v3"
autocomplete_search_field = "sps_pkg__sps_pkg_name"

def autocomplete_label(self):
return self.pid_v3
return self.sps_pkg.sps_pkg_name

def __str__(self):
return f"{self.pid_v3}"
return f"{self.sps_pkg.sps_pkg_name}"

@property
def data(self):
# TODO completar com itens que identifique o artigo
return dict(
xml=self.sps_pkg and self.sps_pkg.xml_uri,
issue=self.issue.data,
journal=self.journal.data,
pid_v3=self.pid_v3,
created=created.isoformat(),
updated=updated.isoformat(),
)

@classmethod
def get(cls, pid_v3):
Expand Down
2 changes: 1 addition & 1 deletion article/wagtail_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ class ArticleModelAdmin(ModelAdmin):
inspect_view_enabled = True
inspect_view_class = ArticleAdminInspectView
menu_icon = "doc-full"
menu_order = 200
menu_order = get_menu_order("article")
add_to_settings_menu = False
exclude_from_explorer = False

Expand Down
4 changes: 4 additions & 0 deletions bigbang/tasks_scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,8 @@ def _schedule_migrate_document_files_and_records(username, enabled):
name="task_migrate_document_files",
kwargs=dict(
username=username,
journal_acron=None,
publication_year=None,
force_update=False,
),
description=_("Migra arquivos dos documentos"),
Expand All @@ -266,6 +268,8 @@ def _schedule_migrate_document_files_and_records(username, enabled):
name="task_migrate_document_records",
kwargs=dict(
username=username,
journal_acron=None,
publication_year=None,
force_update=False,
),
description=_("Migra registros dos documentos"),
Expand Down
4 changes: 2 additions & 2 deletions collection/wagtail_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,8 @@ class ClassicWebsiteConfigurationModelAdmin(ModelAdmin):
class CollectionModelAdminGroup(ModelAdminGroup):
menu_label = _("Collections")
menu_icon = "folder-open-inverse"
# menu_order = get_menu_order("collection")
menu_order = 100
menu_order = get_menu_order("collection")
# menu_order = 100
items = (
CollectionModelAdmin,
WebSiteConfigurationModelAdmin,
Expand Down
35 changes: 24 additions & 11 deletions config/menu.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,27 @@
WAGTAIL_MENU_APPS_ORDER = {
"collection": 400,
"journal": 500,
"issue": 510,
"article": 520,
"upload": 700,
"migration": 710,
"location": 800,
"institution": 810,
}

WAGTAIL_MENU_APPS_ORDER = [
"Tarefas",
"unexpected-error",
"processing",
"migration",
"journal",
"issue",
"article",
"institution",
"location",
"researcher",
"collection",
"pid_provider",
"Configurações",
"Relatórios",
"Images",
"Documentos",
"Ajuda",
]

def get_menu_order(app_name):
return WAGTAIL_MENU_APPS_ORDER.get(app_name) or 100
try:
return WAGTAIL_MENU_APPS_ORDER.index(app_name) + 1
except:
return 9000

2 changes: 1 addition & 1 deletion config/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@
"allauth.account",
"allauth.socialaccount",
"django_celery_beat",
"captcha",
# "captcha",
"wagtailcaptcha",
"wagtailmenus",
"rest_framework",
Expand Down
15 changes: 14 additions & 1 deletion core/wagtail_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from collection.models import Collection
from article.models import Article
from wagtail.admin.navigation import get_site_for_user

from config.menu import get_menu_order, WAGTAIL_MENU_APPS_ORDER

# @hooks.register("insert_global_admin_css", order=100)
# def global_admin_css():
Expand Down Expand Up @@ -77,3 +77,16 @@ def add_items_summary_items(request, items):
items.append(CollectionSummaryItem(request))
items.append(JournalSummaryItem(request))
items.append(ArticleSummaryItem(request))


@hooks.register('construct_main_menu')
def reorder_menu_items(request, menu_items):
for item in menu_items:
if item.label in WAGTAIL_MENU_APPS_ORDER:
item.order = get_menu_order(item.label)


@hooks.register('construct_main_menu')
def remove_menu_items(request, menu_items):
if not request.user.is_superuser:
menu_items[:] = [item for item in menu_items if item.name not in ['documents', 'explorer', 'reports']]
16 changes: 16 additions & 0 deletions htmlxml/migrations/0002_alter_htmlxml_options.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Generated by Django 5.0.3 on 2024-03-29 17:32

from django.db import migrations


class Migration(migrations.Migration):
dependencies = [
("htmlxml", "0001_initial"),
]

operations = [
migrations.AlterModelOptions(
name="htmlxml",
options={"ordering": ["-updated"]},
),
]
48 changes: 38 additions & 10 deletions htmlxml/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
from core.models import CommonControlField
from package.models import BasicXMLFile
from migration.models import MigratedArticle

# from tracker.models import EventLogger
from tracker import choices as tracker_choices

Expand Down Expand Up @@ -84,6 +85,7 @@ class BodyAndBackFile(BasicXMLFile, Orderable):
]

class Meta:

indexes = [
models.Index(fields=["version"]),
]
Expand Down Expand Up @@ -133,9 +135,9 @@ def create_or_update(cls, user, bb_parent, version, file_content, pkg_name):
return obj
except Exception as e:
raise exceptions.CreateOrUpdateBodyAndBackFileError(
_(
"Unable to create_or_update_body and back file {} {} {} {}"
).format(bb_parent, version, type(e), e)
_("Unable to create_or_update_body and back file {} {} {} {}").format(
bb_parent, version, type(e), e
)
)


Expand Down Expand Up @@ -214,6 +216,7 @@ def data(self):
]

class Meta:

indexes = [
models.Index(fields=["attention_demands"]),
]
Expand Down Expand Up @@ -491,6 +494,8 @@ def autocomplete_label(self):
return self.migrated_article

class Meta:
ordering = ['-updated']

indexes = [
models.Index(fields=["html2xml_status"]),
models.Index(fields=["quality"]),
Expand Down Expand Up @@ -561,14 +566,25 @@ def html_to_xml(
):
try:
self.html2xml_status = tracker_choices.PROGRESS_STATUS_DOING
self.html_translation_langs = "-".join(sorted(article_proc.translations.keys()))
self.pdf_langs = "-".join(sorted([item.lang or article_proc.main_lang for item in article_proc.renditions]))
self.html_translation_langs = "-".join(
sorted(article_proc.translations.keys())
)
self.pdf_langs = "-".join(
sorted(
[
item.lang or article_proc.main_lang
for item in article_proc.renditions
]
)
)
self.save()

document = Document(article_proc.migrated_data.data)
document._translated_html_by_lang = article_proc.translations

body_and_back = self._generate_xml_body_and_back(user, article_proc, document)
body_and_back = self._generate_xml_body_and_back(
user, article_proc, document
)
xml_content = self._generate_xml_from_html(user, article_proc, document)

if xml_content and body_and_back:
Expand Down Expand Up @@ -615,7 +631,14 @@ def generate_report(self, user, article_proc):
else:
self.quality = choices.HTML2XML_QA_NOT_EVALUATED
self.save()
op.finish(user, completed=True)
op.finish(
user,
completed=True,
detail={
"attention_demands": self.attention_demands,
"quality": self.quality,
},
)
except Exception as e:
op.finish(user, completed=False, detail={"error": str(e)})

Expand All @@ -625,9 +648,12 @@ def _generate_xml_body_and_back(self, user, article_proc, document):
"""
done = False
operation = article_proc.start(user, "generate xml body and back")

languages = document._translated_html_by_lang
detail = {}
detail.update(languages)
try:
document.generate_body_and_back_from_html(document._translated_html_by_lang)
document.generate_body_and_back_from_html(languages)
done = True
except GenerateBodyAndBackFromHTMLError as e:
# cria xml_body_and_back padrão
Expand All @@ -645,7 +671,7 @@ def _generate_xml_body_and_back(self, user, article_proc, document):
file_content=xml_body_and_back,
pkg_name=article_proc.pkg_name,
)

detail["xml_to_html_steps"] = i
operation.finish(user, done, detail=detail)
return done

Expand All @@ -655,7 +681,9 @@ def _generate_xml_from_html(self, user, article_proc, document):
detail = {}
try:
xml_content = document.generate_full_xml(None).decode("utf-8")
self.save_file(article_proc.pkg_name + ".xml", xml_content)
xml_file = article_proc.pkg_name + ".xml"
self.save_file(xml_file, xml_content)
detail["xml"] = xml_file
except Exception as e:
detail = {"error": str(e)}
operation.finish(user, bool(xml_content), detail=detail)
Expand Down
12 changes: 9 additions & 3 deletions institution/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from django.utils.translation import gettext as _
from modelcluster.models import ClusterableModel
from wagtail.admin.panels import FieldPanel, InlinePanel
from wagtailautocomplete.edit_handlers import AutocompletePanel

from core.models import CommonControlField
from location.models import Location
Expand Down Expand Up @@ -48,8 +49,13 @@ class Institution(CommonControlField, ClusterableModel):
FieldPanel("logo"),
]

autocomplete_search_field = "name"

def autocomplete_label(self):
return str(self)

def __unicode__(self):
return "%s | %s | %s | %s | %s" % (
return "%s | %s | %s | %s | %s | %s" % (
self.name,
self.acronym,
self.level_1,
Expand All @@ -59,7 +65,7 @@ def __unicode__(self):
)

def __str__(self):
return "%s | %s | %s | %s | %s" % (
return "%s | %s | %s | %s | %s | %s" % (
self.name,
self.acronym,
self.level_1,
Expand Down Expand Up @@ -133,7 +139,7 @@ class InstitutionHistory(models.Model):
final_date = models.DateField(_("Final Date"), null=True, blank=True)

panels = [
FieldPanel("institution", heading=_("Institution")),
AutocompletePanel("institution", heading=_("Institution")),
FieldPanel("initial_date"),
FieldPanel("final_date"),
]
19 changes: 18 additions & 1 deletion issue/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,18 @@ def __str__(self):
supplement = models.CharField(_("Supplement"), max_length=16, null=True, blank=True)
publication_year = models.CharField(_("Year"), max_length=4, null=True, blank=True)

@property
def data(self):
return dict(
journal=self.journal.data,
volume=self.volume,
number=self.number,
supplement=self.supplement,
publication_year=self.publication_year,
created=created.isoformat(),
updated=updated.isoformat(),
)

@staticmethod
def autocomplete_custom_queryset_filter(search_term):
parts = search_term.split()
Expand All @@ -60,7 +72,12 @@ def autocomplete_custom_queryset_filter(search_term):
)

def autocomplete_label(self):
return f"{self.journal.title} {self.volume or self.number}"
return "%s %s%s%s" % (
self.journal,
self.volume and f"v{self.volume}",
self.number and f"n{self.number}",
self.supplement and f"s{self.supplement}",
)

panels = [
AutocompletePanel("journal"),
Expand Down
4 changes: 1 addition & 3 deletions issue/wagtail_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ class IssueAdmin(ModelAdmin):
menu_label = _("Issues")
create_view_class = IssueCreateView
menu_icon = "folder"
# menu_order = get_menu_order("issue")
menu_order = 300
menu_order = get_menu_order("issue")
add_to_settings_menu = False
exclude_from_explorer = False

Expand Down Expand Up @@ -63,7 +62,6 @@ class IssueModelAdminGroup(ModelAdminGroup):
IssueAdmin,
# IssueProcAdmin,
)
menu_order = get_menu_order("journal")


# modeladmin_register(IssueModelAdminGroup)
Expand Down
Loading

0 comments on commit 8ea1fc2

Please sign in to comment.