dnscms: add some simple fields to events

This commit is contained in:
2024-05-10 04:44:36 +02:00
parent ee339e9cac
commit 97cfb05710
7 changed files with 194 additions and 10 deletions

View File

@ -0,0 +1,20 @@
# Generated by Django 5.0.4 on 2024-05-09 20:36
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('events', '0003_rename_event_eventpage_eventoccurrence'),
('wagtailimages', '0026_delete_uploadedimage'),
]
operations = [
migrations.AddField(
model_name='eventpage',
name='featured_image',
field=models.ForeignKey(blank=True, help_text='Velg et bilde til bruk i programmet og andre visningsflater. Bør helst være et bilde eller en illustrasjon uten tekst.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image'),
),
]

View File

@ -0,0 +1,38 @@
# Generated by Django 5.0.4 on 2024-05-09 22:44
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('events', '0004_eventpage_featured_image'),
]
operations = [
migrations.AddField(
model_name='eventpage',
name='facebook_url',
field=models.URLField(blank=True, help_text='Lenke direkte til arrangementet på Facebook', max_length=512),
),
migrations.AddField(
model_name='eventpage',
name='price_member',
field=models.IntegerField(blank=True, help_text='Pris for medlemmer av DNS', null=True),
),
migrations.AddField(
model_name='eventpage',
name='price_regular',
field=models.IntegerField(blank=True, help_text='Ordinær pris', null=True),
),
migrations.AddField(
model_name='eventpage',
name='price_student',
field=models.IntegerField(blank=True, help_text='Pris for studenter', null=True),
),
migrations.AddField(
model_name='eventpage',
name='ticket_url',
field=models.URLField(blank=True, help_text='Lenke direkte til billettkjøp, f.eks. TicketCo eller TicketMaster', max_length=512),
),
]

View File

@ -0,0 +1,40 @@
# Generated by Django 5.0.4 on 2024-05-09 23:03
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('events', '0005_eventpage_facebook_url_eventpage_price_member_and_more'),
('wagtailimages', '0026_delete_uploadedimage'),
]
operations = [
migrations.AlterField(
model_name='eventpage',
name='featured_image',
field=models.ForeignKey(blank=True, help_text='Velg et bilde til bruk i programmet og andre visningsflater. Bør være et bilde eller en illustrasjon uten tekst ikke gjenbruk et Facebook-cover ukritisk!', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image'),
),
migrations.AlterField(
model_name='eventpage',
name='price_member',
field=models.IntegerField(blank=True, null=True),
),
migrations.AlterField(
model_name='eventpage',
name='price_regular',
field=models.IntegerField(blank=True, null=True),
),
migrations.AlterField(
model_name='eventpage',
name='price_student',
field=models.IntegerField(blank=True, null=True),
),
migrations.AlterField(
model_name='eventpage',
name='ticket_url',
field=models.URLField(blank=True, help_text='Lenke direkte til billettkjøp, f.eks. TicketCo eller Ticketmaster', max_length=512),
),
]

View File

@ -0,0 +1,21 @@
# Generated by Django 5.0.4 on 2024-05-09 23:09
import wagtail.blocks
import wagtail.fields
import wagtail.images.blocks
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('events', '0006_alter_eventpage_featured_image_and_more'),
]
operations = [
migrations.AlterField(
model_name='eventpage',
name='body',
field=wagtail.fields.StreamField([('paragraph', wagtail.blocks.RichTextBlock()), ('image', wagtail.images.blocks.ImageChooserBlock())]),
),
]

View File

@ -1,7 +1,7 @@
from django.db import models
from grapple.models import GraphQLStreamfield, GraphQLString
from grapple.models import GraphQLImage, GraphQLInt, GraphQLStreamfield, GraphQLString
from wagtail import blocks
from wagtail.admin.panels import FieldPanel
from wagtail.admin.panels import FieldPanel, FieldRowPanel, HelpPanel, MultiFieldPanel
from wagtail.fields import StreamField
from wagtail.images.blocks import ImageChooserBlock
from wagtail.models import Page
@ -17,28 +17,92 @@ class EventIndex(Page):
class EventPage(Page):
# no children
subpage_types = []
# should not be able to be shown in menus
show_in_menus = False
# inherited from Page:
# title = text
# slug = text (in promote panel)
# content_type = points to this model
# live = bool
# owner = page creator
# first_published_at = datetime
# last_published_at = datetime
# seo_title: text (in promote panel)
# search_description: text (in promote panel)
featured_image = models.ForeignKey(
"wagtailimages.Image",
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name="+",
help_text=(
"Velg et bilde til bruk i programmet og andre visningsflater. "
"Bør være et bilde eller en illustrasjon uten tekst "
" ikke gjenbruk et Facebook-cover ukritisk!"
),
)
# author = models.CharField(max_length=255)
# date = models.DateField("Post date")
body = StreamField(
[
("heading", blocks.CharBlock(form_classname="title")),
("paragraph", blocks.RichTextBlock()),
("image", ImageChooserBlock()),
]
)
ticket_url = models.URLField(
blank=True,
max_length=512,
help_text="Lenke direkte til billettkjøp, f.eks. TicketCo eller Ticketmaster",
)
facebook_url = models.URLField(
blank=True,
max_length=512,
help_text="Lenke direkte til arrangementet på Facebook",
)
# "event_types": [13],
# "event_organizers": [390, 322],
# "start_time": "2024-05-07T17:00:00+00:00",
# "end_time": "2024-05-07T20:00:00+00:00",
# "venue": "Glassbaren",
# "venue_id": "55063",
price_regular = models.IntegerField(null=True, blank=True)
price_student = models.IntegerField(null=True, blank=True)
price_member = models.IntegerField(null=True, blank=True)
ticket_panels = [
FieldPanel("ticket_url", heading="Billettkjøpslenke"),
FieldRowPanel(
children=[
FieldPanel("price_regular", heading="Ordinær pris"),
FieldPanel("price_student", heading="Pris for studenter"),
FieldPanel("price_member", heading="Pris for medlemmer av DNS"),
],
help_text="",
),
HelpPanel(content="La alle prisfeltene stå tomme om arrangementet er gratis."),
]
content_panels = Page.content_panels + [
# FieldPanel('author'),
# FieldPanel('date'),
FieldPanel("featured_image"),
FieldPanel("body"),
MultiFieldPanel(
heading="Priser og billettkjøp",
children=ticket_panels,
),
]
graphql_fields = [
GraphQLString("heading"),
# GraphQLString("date"),
# GraphQLString("author"),
GraphQLImage("featured_image"),
GraphQLStreamfield("body"),
GraphQLString("ticket_url"),
GraphQLString("facebook_url"),
GraphQLInt("price_regular"),
GraphQLInt("price_student"),
GraphQLInt("price_member"),
]