dnscms: improve associations app
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from wagtail.admin.ui.tables import Column, DateColumn
|
||||
from wagtail.admin.ui.tables.pages import PageStatusColumn, PageTitleColumn
|
||||
from wagtail.admin.viewsets.pages import PageListingViewSet
|
||||
|
||||
from associations.models import AssociationPage
|
||||
from dnscms.admin import ListingRedirectChooseParentView
|
||||
|
||||
|
||||
class AssociationTypeColumn(Column):
|
||||
def get_value(self, instance):
|
||||
return instance.get_association_type_display()
|
||||
|
||||
|
||||
class AssociationChooseParentView(ListingRedirectChooseParentView):
|
||||
listing_url_name = "associations:index"
|
||||
|
||||
|
||||
class AssociationPageListingViewSet(PageListingViewSet):
|
||||
model = AssociationPage
|
||||
choose_parent_view_class = AssociationChooseParentView
|
||||
icon = "group"
|
||||
menu_label = _("Associations")
|
||||
menu_order = 2
|
||||
add_to_admin_menu = True
|
||||
ordering = "title"
|
||||
|
||||
columns = [
|
||||
PageTitleColumn("title", label=_("Title"), sort_key="title", classname="title"),
|
||||
AssociationTypeColumn(
|
||||
"association_type",
|
||||
label=_("Type"),
|
||||
sort_key="association_type",
|
||||
width="15%",
|
||||
),
|
||||
DateColumn(
|
||||
"latest_revision_created_at",
|
||||
label=_("Updated"),
|
||||
sort_key="latest_revision_created_at",
|
||||
width="10%",
|
||||
),
|
||||
PageStatusColumn("status", label=_("Status"), sort_key="live", width="10%"),
|
||||
]
|
||||
|
||||
|
||||
association_page_listing_viewset = AssociationPageListingViewSet("associations")
|
||||
@@ -0,0 +1,26 @@
|
||||
# Generated by Django 6.0.5 on 2026-05-19 19:36
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('associations', '0025_associationpage_lead'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='associationindex',
|
||||
options={'verbose_name': 'association index', 'verbose_name_plural': 'association indexes'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='associationpage',
|
||||
options={'verbose_name': 'association', 'verbose_name_plural': 'associations'},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='associationpage',
|
||||
name='association_type',
|
||||
field=models.CharField(choices=[('forening', 'Association'), ('utvalg', 'Committee')], default='forening', max_length=64),
|
||||
),
|
||||
]
|
||||
@@ -1,4 +1,5 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from grapple.helpers import register_singular_query_field
|
||||
from grapple.models import (
|
||||
GraphQLImage,
|
||||
@@ -26,8 +27,8 @@ class AssociationIndex(HeadlessMixin, Page):
|
||||
body = CommonStreamField
|
||||
|
||||
content_panels = Page.content_panels + [
|
||||
FieldPanel("lead", heading="Ingress"),
|
||||
FieldPanel("body", heading="Innhold"),
|
||||
FieldPanel("lead", heading=_("Lead")),
|
||||
FieldPanel("body", heading=_("Content")),
|
||||
]
|
||||
|
||||
graphql_fields = [
|
||||
@@ -37,6 +38,10 @@ class AssociationIndex(HeadlessMixin, Page):
|
||||
|
||||
search_fields = Page.search_fields
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("association index")
|
||||
verbose_name_plural = _("association indexes")
|
||||
|
||||
|
||||
class AssociationPage(HeadlessMixin, WPImportedPageMixin, Page):
|
||||
subpage_types = []
|
||||
@@ -44,8 +49,8 @@ class AssociationPage(HeadlessMixin, WPImportedPageMixin, Page):
|
||||
show_in_menus = False
|
||||
|
||||
class AssociationType(models.TextChoices):
|
||||
FORENING = "forening", "Forening"
|
||||
UTVALG = "utvalg", "Utvalg"
|
||||
FORENING = "forening", _("Association")
|
||||
UTVALG = "utvalg", _("Committee")
|
||||
|
||||
excerpt = models.TextField(max_length=512, blank=False)
|
||||
lead = RichTextField(features=["italic", "link"], blank=True)
|
||||
@@ -65,14 +70,14 @@ class AssociationPage(HeadlessMixin, WPImportedPageMixin, Page):
|
||||
content_panels = Page.content_panels + [
|
||||
FieldPanel(
|
||||
"excerpt",
|
||||
heading="Utdrag",
|
||||
help_text="En veldig kort oppsummering av innholdet nedenfor. Brukes i listevisninger.",
|
||||
heading=_("Excerpt"),
|
||||
help_text=_("A very short summary of the content below. Used in listing views."),
|
||||
),
|
||||
FieldPanel("lead", heading="Ingress"),
|
||||
FieldPanel("body", heading="Innhold"),
|
||||
FieldPanel("lead", heading=_("Lead")),
|
||||
FieldPanel("body", heading=_("Content")),
|
||||
FieldPanel("logo"),
|
||||
FieldPanel("association_type", heading="Type"),
|
||||
FieldPanel("website_url", heading="Nettside"),
|
||||
FieldPanel("association_type", heading=_("Type")),
|
||||
FieldPanel("website_url", heading=_("Website")),
|
||||
]
|
||||
|
||||
graphql_fields = [
|
||||
@@ -89,6 +94,10 @@ class AssociationPage(HeadlessMixin, WPImportedPageMixin, Page):
|
||||
index.SearchField("body"),
|
||||
]
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("association")
|
||||
verbose_name_plural = _("associations")
|
||||
|
||||
def import_wordpress_data(self, data):
|
||||
import html
|
||||
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from wagtail.admin.viewsets.chooser import ChooserViewSet
|
||||
|
||||
|
||||
class AssociationChooserViewSet(ChooserViewSet):
|
||||
model = "associations.AssociationPage"
|
||||
icon = "group"
|
||||
choose_one_text = "Choose an association"
|
||||
choose_another_text = "Choose another association"
|
||||
edit_item_text = "Edit this association"
|
||||
choose_one_text = _("Choose an association")
|
||||
choose_another_text = _("Choose another association")
|
||||
edit_item_text = _("Edit this association")
|
||||
# form_fields = ["name"]
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
from wagtail import hooks
|
||||
|
||||
from .admin import association_page_listing_viewset
|
||||
from .views import association_chooser_viewset
|
||||
|
||||
|
||||
@hooks.register("register_admin_viewset")
|
||||
def register_viewset():
|
||||
return association_chooser_viewset
|
||||
|
||||
|
||||
@hooks.register("register_admin_viewset")
|
||||
def register_association_page_listing_viewset():
|
||||
return association_page_listing_viewset
|
||||
|
||||
Reference in New Issue
Block a user