from django.db import models from grapple.models import GraphQLBoolean, GraphQLImage, GraphQLStreamfield, GraphQLString from wagtail import blocks from wagtail.admin.panels import FieldPanel, FieldRowPanel, MultiFieldPanel from wagtail.fields import StreamField from wagtail.images.blocks import ImageChooserBlock from wagtail.models import Page class VenueIndex(Page): # there can only be one venue index page max_count = 1 subpage_types = ["venues.VenuePage"] graphql_fields = [] class VenuePage(Page): # no children subpage_types = [] parent_page_types = ["venues.VenueIndex"] # should not be able to be shown in menus show_in_menus = False featured_image = models.ForeignKey( "images.CustomImage", null=True, blank=True, on_delete=models.SET_NULL, related_name="+", help_text=("Bilde av lokalet"), ) body = StreamField( [ ("paragraph", blocks.RichTextBlock()), ("image", ImageChooserBlock()), ] ) show_as_bookable = models.BooleanField( default=True, help_text="Skal lokalet dukke i oversikten over lokaler som leies ut?" ) floor = models.CharField( blank=True, max_length=255, ) preposition = models.CharField( blank=True, max_length=255, help_text="Er man i eller på lokalet?" ) capability_audio = models.CharField(blank=True, max_length=255) capability_audio_video = models.CharField(blank=True, max_length=255) capability_bar = models.CharField(blank=True, max_length=255) capability_lighting = models.CharField(blank=True, max_length=255) capacity_legal = models.CharField(blank=True, max_length=255) capacity_standing = models.CharField(blank=True, max_length=255) capacity_sitting = models.CharField(blank=True, max_length=255) # "used_for": "Konsert, foredrag, fest, debatt, teater", capability_panels = [ FieldRowPanel( children=[ FieldPanel("capability_bar", heading="Bar"), FieldPanel("capability_audio", heading="Lyd"), FieldPanel("capability_lighting", heading="Lys"), FieldPanel("capability_audio_video", heading="A/V"), ], ), ] capacity_panels = [ FieldRowPanel( children=[ FieldPanel("capacity_legal", heading="Branntillatelse for"), FieldPanel("capacity_sitting", heading="Stående"), FieldPanel("capacity_standing", heading="Sittende"), ], ), ] content_panels = Page.content_panels + [ FieldPanel("featured_image"), FieldPanel("body"), FieldPanel("floor", heading="Etasje"), FieldPanel("preposition", heading="Preposisjon"), FieldPanel("show_as_bookable", heading="Vis på utleieside"), MultiFieldPanel( heading="Kapabiliteter", children=capability_panels, ), MultiFieldPanel( heading="Kapasitet", children=capacity_panels, ), ] graphql_fields = [ GraphQLImage("featured_image"), GraphQLStreamfield("body"), GraphQLString("floor"), GraphQLString("preposition"), GraphQLBoolean("show_as_bookable"), GraphQLString("capability_audio"), GraphQLString("capability_audio_video"), GraphQLString("capability_bar"), GraphQLString("capability_lighting"), GraphQLString("capacity_legal"), GraphQLString("capacity_standing"), GraphQLString("capacity_sitting"), ]