add a checkbox for free events

This commit is contained in:
2024-06-06 01:32:36 +02:00
parent 980e191c9f
commit a3c8095ed0
8 changed files with 103 additions and 32 deletions

View File

@ -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")