Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 30 additions & 57 deletions article/wagtail_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,8 @@
from django.urls import include, path
from django.utils.translation import gettext_lazy as _
from wagtail import hooks
from wagtail_modeladmin.options import (
ModelAdmin,
ModelAdminGroup,
modeladmin_register,
)
from wagtail.snippets.models import register_snippet
from wagtail.snippets.views.snippets import SnippetViewSet, SnippetViewSetGroup

from article.views import (
ArticleAdminInspectView,
Expand All @@ -26,18 +23,18 @@
# from upload.tasks import get_or_create_package


class ArticleModelAdmin(ModelAdmin):
class ArticleSnippetViewSet(SnippetViewSet):
model = Article
menu_label = _("Tasks")
create_view_class = ArticleCreateView
button_helper_class = ArticleButtonHelper
permission_helper_class = ArticlePermissionHelper
inspect_view_enabled = True
menu_label = _("Articles")
Copy link

Copilot AI Oct 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The menu label has changed from 'Tasks' to 'Articles'. Ensure this change is intentional and consistent with the application's navigation structure.

Copilot uses AI. Check for mistakes.
# add_view_class = ArticleCreateView
# button_helper_class = ArticleButtonHelper # Precisa adaptar para SnippetViewSet
# permission_helper_class = ArticlePermissionHelper # Precisa adaptar para SnippetViewSet
# inspect_view_enabled = True # Habilitado por padrão em SnippetViewSet
inspect_view_class = ArticleAdminInspectView
menu_icon = "doc-full"
menu_order = get_menu_order("article")
add_to_settings_menu = False
exclude_from_explorer = False
# exclude_from_explorer = False # Não aplicável a SnippetViewSet
list_per_page = 20

list_display = (
Expand All @@ -52,7 +49,7 @@ class ArticleModelAdmin(ModelAdmin):
"updated",
# "updated_by",
)
list_filter = ("status",)
list_filter = ("status", "journal")
search_fields = (
"sps_pkg__sps_pkg_name",
"pid_v3",
Expand All @@ -62,35 +59,18 @@ class ArticleModelAdmin(ModelAdmin):
"journal__official_journal__issn_electronic",
"title_with_lang__text",
)
inspect_view_fields = (
"created",
"updated",
"creator",
"updated_by",
"pid_v3",
# "pid_v2",
# "aop_pid",
"doi_with_lang",
"article_type",
"status",
"issue",
# "author",
# "title_with_lang",
"elocation_id",
"fpage",
"lpage",
)
# inspect_view_fields não é usado em SnippetViewSet, use inspect_view_class customizada


class RelatedItemModelAdmin(ModelAdmin):
class RelatedItemSnippetViewSet(SnippetViewSet):
model = RelatedItem
menu_label = _("Related items")
create_view_class = RelatedItemCreateView
inspect_view_enabled = True
add_view_class = RelatedItemCreateView
# inspect_view_enabled = True # Habilitado por padrão
menu_icon = "doc-full"
menu_order = 200
add_to_settings_menu = False
exclude_from_explorer = False
# exclude_from_explorer = False # Não aplicável

list_display = (
"item_type",
Expand All @@ -105,27 +85,19 @@ class RelatedItemModelAdmin(ModelAdmin):
"target_article__issue",
)
search_fields = ("target_article__issue__journal_ISSNL",)
inspect_view_fields = (
"created",
"updated",
"creator",
"updated_by",
"item_type",
"source_article",
"target_article",
)
# inspect_view_fields não é usado em SnippetViewSet


class RequestArticleChangeModelAdmin(ModelAdmin):
class RequestArticleChangeSnippetViewSet(SnippetViewSet):
model = RequestArticleChange
menu_label = _("Changes request")
button_helper_class = RequestArticleChangeButtonHelper
create_view_class = RequestArticleChangeCreateView
permission_helper_class = ArticlePermissionHelper
# button_helper_class = RequestArticleChangeButtonHelper # Precisa adaptar
add_view_class = RequestArticleChangeCreateView
# permission_helper_class = ArticlePermissionHelper # Precisa adaptar
menu_icon = "doc-full"
menu_order = 200
add_to_settings_menu = False
exclude_from_explorer = False
# exclude_from_explorer = False # Não aplicável

list_display = (
"creator",
Expand All @@ -143,25 +115,26 @@ class RequestArticleChangeModelAdmin(ModelAdmin):
def get_queryset(self, request):
qs = super().get_queryset(request)

if self.permission_helper.user_can_make_article_change(request.user, None):
return qs
# Temporariamente comentado - precisa adaptar permission_helper para SnippetViewSet
# if self.permission_helper.user_can_make_article_change(request.user, None):
# return qs

return qs


class ArticleModelAdminGroup(ModelAdminGroup):
class ArticleSnippetViewSetGroup(SnippetViewSetGroup):
menu_label = _("Articles")
menu_icon = "folder-open-inverse"
menu_order = get_menu_order("article")
items = (
ArticleModelAdmin,
# RelatedItemModelAdmin,
# omitir temporariamente RequestArticleChangeModelAdmin,
# ApprovedArticleModelAdmin,
ArticleSnippetViewSet,
# RelatedItemSnippetViewSet,
# omitir temporariamente RequestArticleChangeSnippetViewSet,
# ApprovedArticleSnippetViewSet,
)


modeladmin_register(ArticleModelAdminGroup)
register_snippet(ArticleSnippetViewSetGroup)


@hooks.register("register_admin_urls")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{% load i18n wagtailadmin_tags %}

<li>
{% icon name="doc-full" %}
<a href="{% url 'article_article_modeladmin_index' %}">
{% icon name="folder-inverse" %}
<a href="{% url 'wagtailsnippets_article_article:list' %}">
{% blocktrans trimmed count counter=total_article with total_article|intcomma as total %}
<span>{{ total_article }}</span> Article
{% plural %}
<span>{{ total_article }}</span> Articles
{% endblocktrans %}
</a>
</li>
</li>
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

<li>
{% icon name="folder-inverse" %}
<a href="{% url 'journal_journal_modeladmin_index' %}">
<a href="{% url 'wagtailsnippets_journal_journal:list' %}">
{% blocktrans trimmed count counter=total_journal with total_journal|intcomma as total %}
<span>{{ total_journal }}</span> Journal
{% plural %}
<span>{{ total_journal }}</span> Journals
{% endblocktrans %}
</a>
</li>
</li>
108 changes: 68 additions & 40 deletions issue/wagtail_hooks.py
Original file line number Diff line number Diff line change
@@ -1,87 +1,115 @@
from django.utils.translation import gettext_lazy as _
from wagtail_modeladmin.options import (
ModelAdmin,
ModelAdminGroup,
modeladmin_register,
)
from wagtail.admin.panels import FieldPanel, InlinePanel, MultiFieldPanel
from wagtail.admin.ui.tables import UpdatedAtColumn
from wagtail.snippets.models import register_snippet
from wagtail.snippets.views.snippets import SnippetViewSet, SnippetViewSetGroup
from wagtail import hooks

from config.menu import get_menu_order
from issue.views import IssueCreateView, TOCEditView

from .models import TOC, Issue


class IssueAdmin(ModelAdmin):
class IssueSnippetViewSet(SnippetViewSet):
model = Issue
inspect_view_enabled = True
icon = "folder"
menu_label = _("Issues")
create_view_class = IssueCreateView
menu_icon = "folder"
menu_order = get_menu_order("issue")
add_to_settings_menu = False
exclude_from_explorer = False

list_display = (
add_to_admin_menu = False

# Views customizadas
create_view_class = IssueCreateView

# Configuração de listagem
list_display = [
"journal",
"publication_year",
"order",
"volume",
"number",
"supplement",
)
list_filter = ("publication_year",)
search_fields = (
UpdatedAtColumn(),
]

list_filter = ["publication_year", "journal"]

search_fields = [
"journal__journal_acron",
"journal__official_journal__title",
"journal__official_journal__issn_electronic",
"journal__official_journal__issn_print",
"publication_year",
"volume",
"number",
"supplement",
)

# def get_ordering(self, request):
# qs = super().get_queryset(request)
# # Only show people managed by the current user
# return qs.order_by("-updated")
]

# Paginação - máximo 50 por página
list_per_page = 50

# Ordenação padrão
ordering = ["-publication_year", "-updated"]

# Habilitar inspeção
inspect_view_enabled = True

# Configurações de exportação
list_export = ["csv", "xlsx"]
export_filename = "issues"


class TOCAdmin(ModelAdmin):
class TOCSnippetViewSet(SnippetViewSet):
model = TOC
inspect_view_enabled = True
icon = "folder"
menu_label = _("Table of contents sections")
edit_view_class = TOCEditView
menu_icon = "folder"
menu_order = get_menu_order("issue")
menu_order = get_menu_order("issue") + 1
add_to_settings_menu = False
exclude_from_explorer = False

list_display = (
add_to_admin_menu = False

# Configuração de listagem
list_display = [
"issue",
"creator",
"created",
"updated_by",
"updated",
)
list_filter = ("ordered",)
search_fields = (
]

list_filter = ["ordered", "created", "updated"]

search_fields = [
"issue__journal__title",
"issue__journal__official_journal__title",
"issue__volume",
"issue__number",
"issue__supplement",
"issue__publication_year",
)
]

# Paginação - máximo 50 por página
list_per_page = 50

# Ordenação padrão
ordering = ["-updated"]

# Habilitar inspeção
inspect_view_enabled = True

# Configurações de exportação
list_export = ["csv", "xlsx"]
export_filename = "table_of_contents"


class IssueModelAdminGroup(ModelAdminGroup):
# Grupo de Snippets para Issues
class IssueSnippetViewSetGroup(SnippetViewSetGroup):
menu_icon = "folder"
menu_label = _("Issues")
menu_order = get_menu_order("issue")
items = (
IssueAdmin,
TOCAdmin,
)

# Itens do grupo
items = (IssueSnippetViewSet, TOCSnippetViewSet)


modeladmin_register(IssueModelAdminGroup)
# Registrar o grupo
register_snippet(IssueSnippetViewSetGroup)
Loading