Source code for eucrim.issue.wagtail_hooks

# SPDX-FileCopyrightText: Thomas Breitner <t.breitner@csl.mpg.de>
#
# SPDX-License-Identifier: EUPL-1.2

from django.urls import path
from django.urls import reverse
from django.http import HttpResponse

from wagtail import hooks
from wagtail.admin import widgets as wagtailadmin_widgets

from .models import IssuePage
from .views import (
    issue_page_listing_viewset,
    export_issue_content,
    export_issue_articles,
)


[docs] @hooks.register("register_admin_viewset") def register_viewset(): return issue_page_listing_viewset
# @hooks.register('insert_editor_js') # def editor_js(): # js_files = [ # 'issue/js/slug_from_issue.js', # ] # js_includes = format_html_join( # '\n', # '<script src="{0}"></script>', # ((static(filename),) for filename in js_files) # ) # return js_includes + mark_safe( # """ # <script> # console.log("insert_editor_js") # </script> # """ # )
[docs] @hooks.register("before_publish_page") def before_issue_publish_page(request, page): # Test if trying to publish an IssuePage without attached pdf # eg. a proposed IssuePage if page.specific_class == IssuePage: if not page.pdf: return HttpResponse( f"An issue PDF file must be set to publish this the page `{page.title}`. Go back and add the PDF file or save this page as draft.", content_type="text/plain", ) else: return page
[docs] @hooks.register("register_admin_urls") def register_export_issue_content_url(): return [ path( "export-issue-content/<int:issue_page_pk>/articles/", export_issue_articles, name="export_issue_articles", ), path( "export-issue-content/<int:issue_page_pk>", export_issue_content, name="export_issue_content", ), ]
[docs] @hooks.register("register_page_header_buttons") def page_header_buttons(page, user, view_name, next_url=None): if page.specific_class == IssuePage: yield wagtailadmin_widgets.Button( "Export issue content", reverse("export_issue_content", args=[page.pk]), priority=900, ) yield wagtailadmin_widgets.Button( "Export issue articles (docx)", reverse("export_issue_articles", args=[page.pk]), priority=910, )