move featured events from settings to home page

This commit is contained in:
2024-05-15 01:05:10 +02:00
parent c1e26b39ed
commit 469b4bd1e9
11 changed files with 197 additions and 108 deletions

View File

@ -0,0 +1,27 @@
# Generated by Django 5.0.6 on 2024-05-14 22:48
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('events', '0022_alter_featuredeventsorderable_options_and_more'),
]
operations = [
migrations.RemoveField(
model_name='featuredeventsorderable',
name='event_promo_settings',
),
migrations.RemoveField(
model_name='featuredeventsorderable',
name='event',
),
migrations.DeleteModel(
name='EventPromoSettings',
),
migrations.DeleteModel(
name='FeaturedEventsOrderable',
),
]

View File

@ -0,0 +1,26 @@
# Generated by Django 5.0.6 on 2024-05-14 22:49
import django.db.models.deletion
import modelcluster.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('events', '0023_remove_featuredeventsorderable_event_promo_settings_and_more'),
]
operations = [
migrations.CreateModel(
name='FeaturedEventsOrderable',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='events.eventpage')),
('parent', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='featured_events', to='events.eventindex')),
],
options={
'abstract': False,
},
),
]

View File

@ -0,0 +1,16 @@
# Generated by Django 5.0.6 on 2024-05-14 22:54
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('events', '0024_featuredeventsorderable'),
]
operations = [
migrations.DeleteModel(
name='FeaturedEventsOrderable',
),
]

View File

@ -23,10 +23,6 @@ from wagtail.admin.panels import (
PageChooserPanel,
TitleFieldPanel,
)
from wagtail.contrib.settings.models import (
BaseSiteSetting,
register_setting,
)
from wagtail.fields import StreamField
from wagtail.images.blocks import ImageChooserBlock
from wagtail.models import Orderable, Page
@ -39,7 +35,6 @@ class EventIndex(Page):
# there can only be one event index page
max_count = 1
subpage_types = ["events.EventPage"]
graphql_fields = []
@register_snippet
@ -113,35 +108,6 @@ class EventOrganizer(ClusterableModel):
return self.name
@register_setting
# @register_query_field("eventPromoSettings")
class EventPromoSettings(ClusterableModel, BaseSiteSetting):
panels = [InlinePanel("featured_events", heading="Fremhevede arrangementer")]
graphql_fields = [
GraphQLCollection(
GraphQLForeignKey,
"featured_events",
"events.EventPage",
source="featured_events.event",
required=True,
item_required=True,
),
]
class FeaturedEventsOrderable(ClusterableModel):
event_promo_settings = ParentalKey("events.EventPromoSettings", related_name="featured_events")
event = models.ForeignKey(
"events.EventPage",
on_delete=models.CASCADE,
)
panels = [
PageChooserPanel("event", "events.EventPage"),
]
class EventPage(Page):
# no children
subpage_types = []

6
dnscms/home/apps.py Normal file
View File

@ -0,0 +1,6 @@
from django.apps import AppConfig
class HomeConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "home"

View File

@ -0,0 +1,28 @@
# Generated by Django 5.0.6 on 2024-05-14 22:54
import django.db.models.deletion
import modelcluster.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('events', '0025_delete_featuredeventsorderable'),
('home', '0006_remove_event_page_ptr_delete_association_and_more'),
]
operations = [
migrations.CreateModel(
name='HomePageFeaturedEvents',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='events.eventpage')),
('parent', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='featured_events', to='home.homepage')),
],
options={
'abstract': False,
},
),
]

View File

@ -0,0 +1,18 @@
# Generated by Django 5.0.6 on 2024-05-14 22:55
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('home', '0007_homepagefeaturedevents'),
]
operations = [
migrations.AlterField(
model_name='homepagefeaturedevents',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
]

View File

@ -1,15 +1,44 @@
from django.db import models
from wagtail.models import Page
from wagtail.fields import StreamField
from wagtail import blocks
from wagtail.admin.panels import FieldPanel
from wagtail.images.blocks import ImageChooserBlock
# https://docs.wagtail.org/en/stable/topics/pages.html
# https://docs.wagtail.org/en/stable/reference/streamfield/blocks.html#wagtail.fields.StreamField
from grapple.models import (
GraphQLCollection,
GraphQLForeignKey,
)
from modelcluster.fields import ParentalKey
from modelcluster.models import ClusterableModel
from wagtail.admin.panels import (
InlinePanel,
PageChooserPanel,
)
from wagtail.models import Orderable, Page
class HomePage(Page):
pass
max_count = 1
subpage_types = []
content_panels = Page.content_panels + [
InlinePanel("featured_events", heading="Fremhevede arrangementer")
]
graphql_fields = [
GraphQLCollection(
GraphQLForeignKey,
"featured_events",
"events.EventPage",
source="featured_events.event",
required=True,
item_required=True,
),
]
class HomePageFeaturedEvents(ClusterableModel, Orderable):
parent = ParentalKey("home.HomePage", related_name="featured_events")
event = models.ForeignKey(
"events.EventPage",
on_delete=models.CASCADE,
)
panels = [
PageChooserPanel("event", "events.EventPage"),
]