add wip event occurrences
This commit is contained in:
@ -0,0 +1,32 @@
|
||||
# Generated by Django 5.0.6 on 2024-05-10 21:40
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('events', '0007_alter_eventpage_body'),
|
||||
('venues', '0002_venueindex'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='eventoccurrence',
|
||||
name='end',
|
||||
field=models.DateTimeField(null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='eventoccurrence',
|
||||
name='start',
|
||||
field=models.DateTimeField(default=None),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='eventoccurrence',
|
||||
name='venue',
|
||||
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.PROTECT, related_name='event_occurrences', to='venues.venuepage'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
@ -0,0 +1,29 @@
|
||||
# Generated by Django 5.0.6 on 2024-05-10 21:43
|
||||
|
||||
import django.db.models.deletion
|
||||
import modelcluster.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('events', '0008_eventoccurrence_end_eventoccurrence_start_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='eventoccurrence',
|
||||
options={'ordering': ['sort_order']},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='eventoccurrence',
|
||||
name='sort_order',
|
||||
field=models.IntegerField(blank=True, editable=False, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='eventoccurrence',
|
||||
name='event',
|
||||
field=modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='occurrences', to='events.eventpage'),
|
||||
),
|
||||
]
|
@ -0,0 +1,17 @@
|
||||
# Generated by Django 5.0.6 on 2024-05-10 21:54
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('events', '0009_alter_eventoccurrence_options_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='eventoccurrence',
|
||||
options={'verbose_name': 'Forekomst', 'verbose_name_plural': 'Forekomster'},
|
||||
),
|
||||
]
|
18
dnscms/events/migrations/0011_alter_eventoccurrence_end.py
Normal file
18
dnscms/events/migrations/0011_alter_eventoccurrence_end.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.0.6 on 2024-05-10 22:05
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('events', '0010_alter_eventoccurrence_options'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='eventoccurrence',
|
||||
name='end',
|
||||
field=models.DateTimeField(blank=True, null=True),
|
||||
),
|
||||
]
|
@ -0,0 +1,17 @@
|
||||
# Generated by Django 5.0.6 on 2024-05-10 22:32
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('events', '0011_alter_eventoccurrence_end'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='eventoccurrence',
|
||||
options={'ordering': ['sort_order']},
|
||||
),
|
||||
]
|
@ -0,0 +1,17 @@
|
||||
# Generated by Django 5.0.6 on 2024-05-10 22:51
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('events', '0012_alter_eventoccurrence_options'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='eventoccurrence',
|
||||
options={'verbose_name': 'Forekomst', 'verbose_name_plural': 'Forekomster'},
|
||||
),
|
||||
]
|
@ -1,10 +1,20 @@
|
||||
from django.db import models
|
||||
from grapple.models import GraphQLImage, GraphQLInt, GraphQLStreamfield, GraphQLString
|
||||
from grapple.models import (
|
||||
GraphQLCollection,
|
||||
GraphQLForeignKey,
|
||||
GraphQLImage,
|
||||
GraphQLInt,
|
||||
GraphQLStreamfield,
|
||||
GraphQLString,
|
||||
)
|
||||
from modelcluster.fields import ParentalKey
|
||||
from wagtail import blocks
|
||||
from wagtail.admin.panels import FieldPanel, FieldRowPanel, HelpPanel, MultiFieldPanel
|
||||
from wagtail.admin.panels import FieldPanel, FieldRowPanel, HelpPanel, InlinePanel, MultiFieldPanel
|
||||
from wagtail.fields import StreamField
|
||||
from wagtail.images.blocks import ImageChooserBlock
|
||||
from wagtail.models import Page
|
||||
from wagtail.models import Orderable, Page
|
||||
|
||||
from venues.models import VenuePage
|
||||
|
||||
|
||||
class EventIndex(Page):
|
||||
@ -17,6 +27,7 @@ class EventIndex(Page):
|
||||
class EventPage(Page):
|
||||
# no children
|
||||
subpage_types = []
|
||||
parent_page_types = ["events.EventIndex"]
|
||||
# should not be able to be shown in menus
|
||||
show_in_menus = False
|
||||
|
||||
@ -93,6 +104,18 @@ class EventPage(Page):
|
||||
heading="Priser og billettkjøp",
|
||||
children=ticket_panels,
|
||||
),
|
||||
MultiFieldPanel(
|
||||
children=[
|
||||
HelpPanel(
|
||||
heading="Forekomster",
|
||||
content=(
|
||||
"Om arrangementet går over flere dager, "
|
||||
"legg inn hver dag som en egen forekomst."
|
||||
),
|
||||
),
|
||||
InlinePanel("occurrences", min_num=1),
|
||||
]
|
||||
),
|
||||
]
|
||||
|
||||
graphql_fields = [
|
||||
@ -103,11 +126,40 @@ class EventPage(Page):
|
||||
GraphQLInt("price_regular"),
|
||||
GraphQLInt("price_student"),
|
||||
GraphQLInt("price_member"),
|
||||
GraphQLCollection(GraphQLForeignKey, "occurrences", "events.EventOccurrence"),
|
||||
]
|
||||
|
||||
|
||||
class EventOccurrence(models.Model):
|
||||
event = models.ForeignKey(EventPage, on_delete=models.CASCADE, related_name="occurrences")
|
||||
class EventOccurrence(Orderable):
|
||||
event = ParentalKey(EventPage, on_delete=models.CASCADE, related_name="occurrences")
|
||||
start = models.DateTimeField()
|
||||
end = models.DateTimeField(null=True, blank=True)
|
||||
venue = models.ForeignKey(
|
||||
VenuePage, on_delete=models.PROTECT, related_name="event_occurrences"
|
||||
)
|
||||
|
||||
panels = [
|
||||
FieldRowPanel(
|
||||
children=[
|
||||
FieldPanel("start", heading="Start"),
|
||||
FieldPanel("end", heading="Slutt"),
|
||||
],
|
||||
),
|
||||
FieldPanel("venue", heading="Lokale"),
|
||||
]
|
||||
|
||||
graphql_fields = [
|
||||
GraphQLString("start"),
|
||||
GraphQLString("end"),
|
||||
GraphQLForeignKey("venue", "venues.VenuePage"),
|
||||
]
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.start}--{self.end}"
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Forekomst"
|
||||
verbose_name_plural = "Forekomster"
|
||||
|
||||
|
||||
sample_legacy_event_json = """
|
||||
|
Reference in New Issue
Block a user