add a checkbox for free events
This commit is contained in:
18
dnscms/events/migrations/0029_eventpage_free.py
Normal file
18
dnscms/events/migrations/0029_eventpage_free.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.0.6 on 2024-06-05 22:35
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('events', '0028_eventpage_pig_alter_eventpage_body'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='eventpage',
|
||||
name='free',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
@ -192,21 +192,28 @@ class EventPage(Page):
|
||||
help_text="Lenke direkte til arrangementet på Facebook",
|
||||
)
|
||||
|
||||
free = models.BooleanField(null=False, default=False)
|
||||
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(
|
||||
FieldPanel("free", heading="Gratis", help_text="Er dette arrangementet gratis for alle?"),
|
||||
MultiFieldPanel(
|
||||
children=[
|
||||
FieldPanel("price_regular", heading="Ordinær pris"),
|
||||
FieldPanel("price_student", heading="Pris for studenter"),
|
||||
FieldPanel("price_member", heading="Pris for medlemmer av DNS"),
|
||||
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."),
|
||||
],
|
||||
help_text="",
|
||||
attrs={"id": "specific_pricing_panel"},
|
||||
),
|
||||
HelpPanel(content="La alle prisfeltene stå tomme om arrangementet er gratis."),
|
||||
FieldPanel("ticket_url", heading="Billettkjøpslenke"),
|
||||
]
|
||||
|
||||
content_panels = Page.content_panels + [
|
||||
@ -220,10 +227,7 @@ class EventPage(Page):
|
||||
heading="Facebook-lenke",
|
||||
help_text="Lenke direkte til arrangementet på Facebook.",
|
||||
),
|
||||
MultiFieldPanel(
|
||||
heading="Priser og billettkjøp",
|
||||
children=ticket_panels,
|
||||
),
|
||||
MultiFieldPanel(heading="Priser og billettkjøp", children=ticket_panels),
|
||||
MultiFieldPanel(
|
||||
children=[
|
||||
HelpPanel(
|
||||
@ -233,7 +237,7 @@ class EventPage(Page):
|
||||
"legg inn hver dag som en egen forekomst."
|
||||
),
|
||||
),
|
||||
InlinePanel("occurrences", min_num=1),
|
||||
InlinePanel("occurrences", min_num=1, label="Forekomst"),
|
||||
]
|
||||
),
|
||||
]
|
||||
@ -244,6 +248,7 @@ class EventPage(Page):
|
||||
GraphQLString("pig"),
|
||||
GraphQLString("ticket_url"),
|
||||
GraphQLString("facebook_url"),
|
||||
GraphQLBoolean("free"),
|
||||
GraphQLInt("price_regular"),
|
||||
GraphQLInt("price_student"),
|
||||
GraphQLInt("price_member"),
|
||||
@ -270,6 +275,15 @@ class EventPage(Page):
|
||||
),
|
||||
]
|
||||
|
||||
def clean(self):
|
||||
super().clean()
|
||||
|
||||
# if the event is free, all specific pricing is unset
|
||||
if self.free:
|
||||
self.price_regular = None
|
||||
self.price_student = None
|
||||
self.price_member = None
|
||||
|
||||
|
||||
class EventOccurrence(Orderable):
|
||||
event = ParentalKey(EventPage, on_delete=models.CASCADE, related_name="occurrences")
|
||||
|
Reference in New Issue
Block a user