add support for featuring events

This commit is contained in:
2024-05-15 00:26:14 +02:00
parent 8409fc042c
commit 4555479fea
8 changed files with 195 additions and 7 deletions

View File

@ -34,6 +34,7 @@ INSTALLED_APPS = [
"graphene_django",
"wagtail.contrib.forms",
"wagtail.contrib.redirects",
"wagtail.contrib.settings",
"wagtail.embeds",
"wagtail.sites",
"wagtail.users",

View File

@ -0,0 +1,38 @@
# Generated by Django 5.0.6 on 2024-05-14 22:01
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('events', '0019_alter_eventorganizer_options_eventpage_organizers'),
('wagtailcore', '0093_uploadedfile'),
]
operations = [
migrations.CreateModel(
name='EventPromoSettings',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('site', models.OneToOneField(editable=False, on_delete=django.db.models.deletion.CASCADE, to='wagtailcore.site')),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='FeaturedEventsOrderble',
fields=[
('id', models.BigAutoField(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')),
('event_promo_settings', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='featured_events', to='events.eventpromosettings')),
],
options={
'ordering': ['sort_order'],
'abstract': False,
},
),
]

View File

@ -0,0 +1,17 @@
# Generated by Django 5.0.6 on 2024-05-14 22:03
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('events', '0020_eventpromosettings_featuredeventsorderble'),
]
operations = [
migrations.RenameModel(
old_name='FeaturedEventsOrderble',
new_name='FeaturedEventsOrderable',
),
]

View File

@ -0,0 +1,28 @@
# Generated by Django 5.0.6 on 2024-05-14 22:05
import django.db.models.deletion
import modelcluster.fields
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('events', '0021_rename_featuredeventsorderble_featuredeventsorderable'),
]
operations = [
migrations.AlterModelOptions(
name='featuredeventsorderable',
options={},
),
migrations.RemoveField(
model_name='featuredeventsorderable',
name='sort_order',
),
migrations.AlterField(
model_name='featuredeventsorderable',
name='event_promo_settings',
field=modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='featured_events', to='events.eventpromosettings'),
),
]

View File

@ -23,6 +23,10 @@ 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
@ -109,6 +113,35 @@ 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 = []