dnscms: add some simple fields to events
This commit is contained in:
1
dnscms/.gitignore
vendored
1
dnscms/.gitignore
vendored
@ -6,3 +6,4 @@
|
|||||||
/.venv/
|
/.venv/
|
||||||
/static/
|
/static/
|
||||||
/media/
|
/media/
|
||||||
|
db.sqlite3
|
||||||
|
Binary file not shown.
20
dnscms/events/migrations/0004_eventpage_featured_image.py
Normal file
20
dnscms/events/migrations/0004_eventpage_featured_image.py
Normal 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'),
|
||||||
|
),
|
||||||
|
]
|
@ -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),
|
||||||
|
),
|
||||||
|
]
|
@ -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),
|
||||||
|
),
|
||||||
|
]
|
21
dnscms/events/migrations/0007_alter_eventpage_body.py
Normal file
21
dnscms/events/migrations/0007_alter_eventpage_body.py
Normal 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())]),
|
||||||
|
),
|
||||||
|
]
|
@ -1,7 +1,7 @@
|
|||||||
from django.db import models
|
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 import blocks
|
||||||
from wagtail.admin.panels import FieldPanel
|
from wagtail.admin.panels import FieldPanel, FieldRowPanel, HelpPanel, MultiFieldPanel
|
||||||
from wagtail.fields import StreamField
|
from wagtail.fields import StreamField
|
||||||
from wagtail.images.blocks import ImageChooserBlock
|
from wagtail.images.blocks import ImageChooserBlock
|
||||||
from wagtail.models import Page
|
from wagtail.models import Page
|
||||||
@ -17,28 +17,92 @@ class EventIndex(Page):
|
|||||||
class EventPage(Page):
|
class EventPage(Page):
|
||||||
# no children
|
# no children
|
||||||
subpage_types = []
|
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(
|
body = StreamField(
|
||||||
[
|
[
|
||||||
("heading", blocks.CharBlock(form_classname="title")),
|
|
||||||
("paragraph", blocks.RichTextBlock()),
|
("paragraph", blocks.RichTextBlock()),
|
||||||
("image", ImageChooserBlock()),
|
("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 + [
|
content_panels = Page.content_panels + [
|
||||||
# FieldPanel('author'),
|
FieldPanel("featured_image"),
|
||||||
# FieldPanel('date'),
|
|
||||||
FieldPanel("body"),
|
FieldPanel("body"),
|
||||||
|
MultiFieldPanel(
|
||||||
|
heading="Priser og billettkjøp",
|
||||||
|
children=ticket_panels,
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
graphql_fields = [
|
graphql_fields = [
|
||||||
GraphQLString("heading"),
|
GraphQLImage("featured_image"),
|
||||||
# GraphQLString("date"),
|
|
||||||
# GraphQLString("author"),
|
|
||||||
GraphQLStreamfield("body"),
|
GraphQLStreamfield("body"),
|
||||||
|
GraphQLString("ticket_url"),
|
||||||
|
GraphQLString("facebook_url"),
|
||||||
|
GraphQLInt("price_regular"),
|
||||||
|
GraphQLInt("price_student"),
|
||||||
|
GraphQLInt("price_member"),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user