diff --git a/config/menu.py b/config/menu.py index 80d992c..04b4fda 100644 --- a/config/menu.py +++ b/config/menu.py @@ -1,7 +1,7 @@ WAGTAIL_MENU_APPS_ORDER = [ + "sps_package_validation", "markup_doc", - "xml_manager", - "reference", + "scielo", "tracker", "model_ai", "django_celery_beat", diff --git a/core/wagtail_hooks.py b/core/wagtail_hooks.py index 385612f..df63ea1 100644 --- a/core/wagtail_hooks.py +++ b/core/wagtail_hooks.py @@ -1,6 +1,10 @@ import os from django.db.models.signals import pre_save +from django.urls import reverse +from django.utils.translation import gettext_lazy as _ +from wagtail import hooks +from wagtail.admin.menu import Menu, MenuItem, SubmenuMenuItem from wagtail.images import get_image_model @@ -14,3 +18,70 @@ def ensure_image_title(sender, instance, **kwargs): pre_save.connect(ensure_image_title, sender=get_image_model()) + + +@hooks.register("construct_main_menu") +def group_wagtail_cms_menu_items(request, menu_items): + cms_item_names = {"explorer", "images", "documents", "xml_sps"} + menu_items[:] = [item for item in menu_items if item.name not in cms_item_names] + cms_menu = Menu( + items=[ + MenuItem( + _("Páginas"), + reverse("wagtailadmin_explore_root"), + name="cms_pages", + icon_name="doc-empty-inverse", + order=100, + ), + MenuItem( + _("Imagens"), + reverse("wagtailimages:index"), + name="cms_images", + icon_name="image", + order=200, + ), + MenuItem( + _("Documentos"), + reverse("wagtaildocs:index"), + name="cms_documents", + icon_name="doc-full-inverse", + order=300, + ), + ] + ) + menu_items.append( + SubmenuMenuItem( + _("Wagtail CMS"), + cms_menu, + icon_name="folder-open-inverse", + name="wagtail_cms", + order=800, + ) + ) + settings_index = next( + (index for index, item in enumerate(menu_items) if item.name == "settings"), + None, + ) + report_index = next( + (index for index, item in enumerate(menu_items) if item.name == "reports"), + None, + ) + if settings_index is not None and report_index is not None: + reports_item = menu_items.pop(report_index) + if report_index < settings_index: + settings_index -= 1 + menu_items.insert(settings_index + 1, reports_item) + + +@hooks.register("construct_help_menu") +def replace_help_menu_items(request, help_menu_items): + help_menu_items[:] = [ + MenuItem( + _("Wiki do projeto"), + "https://github.com/scieloorg/markapi/wiki", + name="project_wiki", + icon_name="link-external", + attrs={"target": "_blank", "rel": "noopener noreferrer"}, + order=100, + ) + ] diff --git a/core_settings/static/core_settings/css/admin_logo.css b/core_settings/static/core_settings/css/admin_logo.css index ed825d5..3b39249 100644 --- a/core_settings/static/core_settings/css/admin_logo.css +++ b/core_settings/static/core_settings/css/admin_logo.css @@ -1,12 +1,12 @@ .custom-admin-logo { display: block; - max-height: 2.5rem; + max-height: 4rem; max-width: 100%; width: auto; height: auto; } .custom-admin-logo--login { - max-height: 4rem; + max-height: 5rem; margin: 0 auto; } diff --git a/core_settings/static/core_settings/img/favicon.ico b/core_settings/static/core_settings/img/favicon.ico new file mode 100644 index 0000000..409a122 Binary files /dev/null and b/core_settings/static/core_settings/img/favicon.ico differ diff --git a/core_settings/wagtail_hooks.py b/core_settings/wagtail_hooks.py index 04b82de..4afa96c 100644 --- a/core_settings/wagtail_hooks.py +++ b/core_settings/wagtail_hooks.py @@ -6,6 +6,7 @@ @hooks.register("insert_global_admin_css") def admin_logo_css(): return format_html( - '', + '', static("core_settings/css/admin_logo.css"), + static("core_settings/img/favicon.ico"), ) diff --git a/django_celery_beat/wagtail_hooks.py b/django_celery_beat/wagtail_hooks.py index 429a804..6fa0c62 100644 --- a/django_celery_beat/wagtail_hooks.py +++ b/django_celery_beat/wagtail_hooks.py @@ -190,6 +190,8 @@ class TasksModelsAdminGroup(ModelAdminGroup): menu_label = _("Tarefas agendadas") menu_icon = "time" menu_order = get_menu_order("django_celery_beat") + add_to_admin_menu = False + add_to_settings_menu = True items = ( PeriodicTaskAdmin, CrontabScheduleAdmin, diff --git a/markup_doc/wagtail_hooks.py b/markup_doc/wagtail_hooks.py index 6ecb304..4eb729b 100644 --- a/markup_doc/wagtail_hooks.py +++ b/markup_doc/wagtail_hooks.py @@ -7,7 +7,6 @@ from django.utils.translation import gettext_lazy as _ from wagtail import hooks from wagtail.admin import messages -from wagtail_modeladmin.options import ModelAdmin from wagtail.snippets.models import register_snippet from wagtail.snippets.views.snippets import ( CreateView, @@ -15,6 +14,7 @@ SnippetViewSet, SnippetViewSetGroup, ) +from wagtail_modeladmin.options import ModelAdmin from config.menu import get_menu_order from markup_doc import views @@ -25,10 +25,13 @@ ProcessStatus, UploadDocx, ) - -from markup_doc import views from markup_doc.sync_api import sync_collection_from_api from markup_doc.tasks import get_labels, task_sync_journals_from_api, update_xml +from reference.wagtail_hooks import ReferenceModelViewSet +from xml_manager.wagtail_hooks import ( + XMLDocumentHTMLSnippetViewSet, + XMLDocumentPDFSnippetViewSet, +) @hooks.register("register_admin_urls") @@ -181,17 +184,39 @@ def index_view(self, request): return response +class XMLSPSSnippetViewSetGroup(SnippetViewSetGroup): + menu_name = "xml_sps" + menu_label = _("XML SPS") + menu_icon = "code" + items = ( + MarkupXMLViewSet, + XMLDocumentPDFSnippetViewSet, + XMLDocumentHTMLSnippetViewSet, + ReferenceModelViewSet, + ) + + +class ScieloSnippetViewSetGroup(SnippetViewSetGroup): + menu_name = "scielo" + menu_label = _("SciELO") + menu_icon = "folder-open-inverse" + menu_order = get_menu_order("scielo") + items = ( + CollectionModelViewSet, + JournalModelViewSet, + ) + + class MarkupSnippetViewSetGroup(SnippetViewSetGroup): menu_name = "markup_doc" - menu_label = _("Marcação editorial") + menu_label = _("Marcação") menu_icon = "edit" menu_order = get_menu_order("markup_doc") items = ( - CollectionModelViewSet, - JournalModelViewSet, UploadDocxViewSet, - MarkupXMLViewSet, + XMLSPSSnippetViewSetGroup, ) +register_snippet(ScieloSnippetViewSetGroup) register_snippet(MarkupSnippetViewSetGroup) diff --git a/model_ai/wagtail_hooks.py b/model_ai/wagtail_hooks.py index f0476c3..0200ccf 100644 --- a/model_ai/wagtail_hooks.py +++ b/model_ai/wagtail_hooks.py @@ -92,7 +92,8 @@ class LlamaModelViewSet(SnippetViewSet): menu_icon = "cog" menu_order = get_menu_order("model_ai") exclude_from_explorer = False - add_to_admin_menu = True + add_to_admin_menu = False + add_to_settings_menu = True list_per_page = 20 list_display = ("display_name_model", "get_download_status_display") diff --git a/reference/wagtail_hooks.py b/reference/wagtail_hooks.py index 1f770fb..872c34f 100644 --- a/reference/wagtail_hooks.py +++ b/reference/wagtail_hooks.py @@ -1,7 +1,6 @@ # Third-party imports from django.http import HttpResponseRedirect from django.utils.translation import gettext_lazy as _ -from wagtail.snippets.models import register_snippet from wagtail.snippets.views.snippets import CreateView, SnippetViewSet # Local application imports @@ -41,7 +40,4 @@ class ReferenceModelViewSet(SnippetViewSet): menu_order = get_menu_order("reference") exclude_from_explorer = False list_per_page = 20 - add_to_admin_menu = True - - -register_snippet(ReferenceModelViewSet) + add_to_admin_menu = False diff --git a/tracker/wagtail_hooks.py b/tracker/wagtail_hooks.py index fbca31e..0e366e8 100644 --- a/tracker/wagtail_hooks.py +++ b/tracker/wagtail_hooks.py @@ -78,6 +78,8 @@ class EventModelAdminGroup(ModelAdminGroup): menu_icon = "history" menu_label = _("Rastreio de eventos") menu_order = get_menu_order("tracker") + add_to_admin_menu = False + add_to_settings_menu = True items = (GeneralEventModelAdmin, XMLDocumentEventModelAdmin) diff --git a/xml_manager/wagtail_hooks.py b/xml_manager/wagtail_hooks.py index 9406bca..cc484f0 100644 --- a/xml_manager/wagtail_hooks.py +++ b/xml_manager/wagtail_hooks.py @@ -10,12 +10,7 @@ from wagtail.admin.ui.tables import Column from wagtail.admin.widgets.button import Button from wagtail.snippets.models import register_snippet -from wagtail.snippets.views.snippets import ( - CreateView, - EditView, - SnippetViewSet, - SnippetViewSetGroup, -) +from wagtail.snippets.views.snippets import CreateView, EditView, SnippetViewSet from config.menu import get_menu_order @@ -161,7 +156,7 @@ class XMLDocumentPDFSnippetViewSet(SnippetViewSet): verbose_name_plural = _("XML Document PDFs") icon = "doc-full" menu_name = "xml_manager" - menu_label = _("PDF derivados") + menu_label = _("PDFs derivados") menu_icon = "doc-full" add_to_admin_menu = False @@ -182,7 +177,7 @@ class XMLDocumentHTMLSnippetViewSet(SnippetViewSet): verbose_name_plural = _("XML Document HTMLs") icon = "doc-full" menu_name = "xml_manager" - menu_label = _("HTML derivados") + menu_label = _("HTMLs derivados") menu_icon = "doc-full-inverse" add_to_admin_menu = False @@ -202,12 +197,13 @@ class SPSPackageValidationSnippetViewSet(SnippetViewSet): edit_view_class = SPSPackageValidationEditView copy_view_enabled = False verbose_name = _("SPS package validation") - verbose_name_plural = _("Validar pacote SPS") + verbose_name_plural = _("Validar SPS") icon = "sps-package-validation" menu_name = "sps_package_validation" - menu_label = _("Validar pacote SPS") + menu_label = _("Validar SPS") menu_icon = "sps-package-validation" - add_to_admin_menu = False + add_to_admin_menu = True + menu_order = get_menu_order("sps_package_validation") list_display = ( "__str__", @@ -224,20 +220,7 @@ class SPSPackageValidationSnippetViewSet(SnippetViewSet): search_fields = ("package_document__title",) -class XMLDocumentSnippetViewSetGroup(SnippetViewSetGroup): - menu_name = "xml_manager" - menu_label = _("Gestão de XML") - menu_icon = "code" - menu_order = get_menu_order("xml_manager") - items = ( - XMLDocumentSnippetViewSet, - XMLDocumentPDFSnippetViewSet, - XMLDocumentHTMLSnippetViewSet, - SPSPackageValidationSnippetViewSet, - ) - - -register_snippet(XMLDocumentSnippetViewSetGroup) +register_snippet(SPSPackageValidationSnippetViewSet) @hooks.register("register_icons")