Compare commits
47 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
2b8197e8a2
|
|||
|
3dd2c056b8
|
|||
| d0a886a4ae | |||
| cc5b53011d | |||
| f769898698 | |||
| e71db3a0cc | |||
| 355c0b38a5 | |||
| bba98fe868 | |||
| 978aae4fc3 | |||
| ffc3a583b2 | |||
| 12aea04779 | |||
|
6bcf9bbfbd
|
|||
|
2e4ca34f5c
|
|||
|
d76b16781d
|
|||
| 8942bcc9da | |||
| 196f000a2d | |||
| 4655f67a9e | |||
| 8506fd1c2d | |||
| ca341f5f22 | |||
| 1431b8d6ff | |||
| 3c225aa68a | |||
| 16629a2fc0 | |||
| b18f9ec54f | |||
| 2a00d21717 | |||
| 09e69a7093 | |||
| d3f8b8f0bb | |||
| fcd5231c28 | |||
| 1b25bad850 | |||
| c8b0c99d8d | |||
| 55d9bcbef8 | |||
| 1209562e0b | |||
| d5d3c6b936 | |||
| 87562b491d | |||
| c54196d487 | |||
| 37104e7a0c | |||
| ed3388e2bf | |||
| 8444bd018e | |||
| 1a3f031d5f | |||
| 8e8ca4f147 | |||
| 7d1836f973 | |||
| a7bbc0730d | |||
| 90f658a77e | |||
| 1da9b4dce8 | |||
| dfb61aa417 | |||
| 3b3ad6ecdc | |||
| 35e155ab14 | |||
| bc6b284140 |
@@ -9,6 +9,7 @@ __pycache__
|
||||
.DS_Store
|
||||
*.swp
|
||||
/venv/
|
||||
/.venv/
|
||||
/tmp/
|
||||
/.vagrant/
|
||||
/Vagrantfile.local
|
||||
|
||||
@@ -7,3 +7,4 @@
|
||||
/static/
|
||||
/media/
|
||||
db.sqlite3
|
||||
dnscms/settings/local.py
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
[tools]
|
||||
python = "3.12.4"
|
||||
poetry = "latest"
|
||||
+17
-18
@@ -1,11 +1,14 @@
|
||||
FROM python:3.12-slim-bullseye
|
||||
FROM python:3.14-slim-trixie
|
||||
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
||||
|
||||
RUN useradd wagtail
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
ENV PYTHONUNBUFFERED=1 \
|
||||
PORT=8000
|
||||
PORT=8000 \
|
||||
UV_COMPILE_BYTECODE=1 \
|
||||
UV_LINK_MODE=copy
|
||||
|
||||
RUN apt-get update --yes --quiet && apt-get install --yes --quiet --no-install-recommends \
|
||||
build-essential \
|
||||
@@ -13,29 +16,25 @@ RUN apt-get update --yes --quiet && apt-get install --yes --quiet --no-install-r
|
||||
libjpeg62-turbo-dev \
|
||||
zlib1g-dev \
|
||||
libwebp-dev \
|
||||
git \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
ENV POETRY_VERSION=""
|
||||
ENV POETRY_HOME="/opt/poetry"
|
||||
ENV PIP_NO_CACHE_DIR=1
|
||||
ENV POETRY_VIRTUALENVS_CREATE=false
|
||||
ENV POETRY_NO_INTERACTION=1
|
||||
ENV PATH="$POETRY_HOME/bin:$PATH"
|
||||
WORKDIR /app
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install --no-install-recommends --assume-yes curl
|
||||
|
||||
RUN curl -sSL https://install.python-poetry.org | python3 -
|
||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||
--mount=type=bind,source=uv.lock,target=uv.lock \
|
||||
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
|
||||
uv version && uv sync --locked --no-install-project
|
||||
|
||||
WORKDIR /app
|
||||
COPY pyproject.toml poetry.lock README.md /app/
|
||||
RUN pip install gunicorn
|
||||
RUN poetry install --without=dev
|
||||
COPY . /app
|
||||
ADD . /app
|
||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||
uv sync --locked --no-dev
|
||||
|
||||
RUN chown wagtail:wagtail /app
|
||||
COPY --chown=wagtail:wagtail . .
|
||||
USER wagtail
|
||||
|
||||
ENV PATH="/app/.venv/bin:$PATH"
|
||||
RUN python manage.py collectstatic --noinput --clear
|
||||
|
||||
CMD set -xe; python manage.py migrate --noinput && gunicorn dnscms.wsgi:application
|
||||
CMD ["sh", "-c", "set -xe; python manage.py migrate --noinput && gunicorn dnscms.wsgi:application --workers 3"]
|
||||
|
||||
@@ -0,0 +1,492 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-15 20:21
|
||||
|
||||
import wagtail.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("associations", "0025_associationpage_lead"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="associationindex",
|
||||
name="body",
|
||||
field=wagtail.fields.StreamField(
|
||||
[
|
||||
("paragraph", 0),
|
||||
("image", 4),
|
||||
("image_slider", 8),
|
||||
("horizontal_rule", 10),
|
||||
("featured", 18),
|
||||
("page_section_navigation", 19),
|
||||
("accordion", 23),
|
||||
("fact_box", 26),
|
||||
("photo_sphere", 29),
|
||||
("embed", 30),
|
||||
("raw_html", 31),
|
||||
],
|
||||
block_lookup={
|
||||
0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rik tekst"}),
|
||||
1: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
2: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("fullwidth", "Fullbredde"),
|
||||
("bleed", "Utfallende"),
|
||||
("original", "Uendret størrelse"),
|
||||
],
|
||||
"icon": "cup",
|
||||
"label": "Bildeformat",
|
||||
},
|
||||
),
|
||||
3: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Bildetekst", "max_length": 512, "required": False},
|
||||
),
|
||||
4: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{},
|
||||
),
|
||||
5: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tekst", "max_length": 512, "required": False},
|
||||
),
|
||||
6: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("text", 5)]],
|
||||
{},
|
||||
),
|
||||
7: (
|
||||
"wagtail.blocks.ListBlock",
|
||||
(6,),
|
||||
{"label": "Bilder", "min_num": 1},
|
||||
),
|
||||
8: ("wagtail.blocks.StructBlock", [[("images", 7)]], {}),
|
||||
9: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Farge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
10: ("wagtail.blocks.StructBlock", [[("color", 9)]], {}),
|
||||
11: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tittel", "max_length": 64, "required": True},
|
||||
),
|
||||
12: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": ["bold", "italic", "link"],
|
||||
"label": "Tekst",
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
13: (
|
||||
"wagtail.blocks.PageChooserBlock",
|
||||
(),
|
||||
{"header": "Fremhevet side", "required": True},
|
||||
),
|
||||
14: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"default": "Les mer",
|
||||
"help_text": 'Lenketeksten som tar deg videre til siden. Tips: Ikke start med "Trykk her"',
|
||||
"label": "Lenketekst",
|
||||
"max_length": 64,
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
15: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
},
|
||||
),
|
||||
16: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [("left", "Venstre"), ("right", "Høyre")],
|
||||
"label": "Bildeplassering",
|
||||
},
|
||||
),
|
||||
17: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{
|
||||
"header": "Overstyr bilde",
|
||||
"help_text": "Bildet som er tilknyttet undersiden du vil fremheve, vil automatisk brukes. Om det mangler eller du vil overstyre hvilket bilde som et brukes, kan du velge et her.",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
18: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[
|
||||
[
|
||||
("title", 11),
|
||||
("text", 12),
|
||||
("featured_page", 13),
|
||||
("link_text", 14),
|
||||
("background_color", 15),
|
||||
("image_position", 16),
|
||||
("featured_image_override", 17),
|
||||
]
|
||||
],
|
||||
{},
|
||||
),
|
||||
19: ("dnscms.blocks.PageSectionNavigationBlock", (), {}),
|
||||
20: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Overskrift", "max_length": 64, "required": True},
|
||||
),
|
||||
21: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
22: (
|
||||
"wagtail.blocks.StreamBlock",
|
||||
[[("paragraph", 0), ("image", 21)]],
|
||||
{},
|
||||
),
|
||||
23: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("heading", 20), ("body", 22)]],
|
||||
{},
|
||||
),
|
||||
24: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
25: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": [
|
||||
"bold",
|
||||
"italic",
|
||||
"link",
|
||||
"ol",
|
||||
"ul",
|
||||
"h2",
|
||||
"h3",
|
||||
],
|
||||
"label": "Innhold",
|
||||
},
|
||||
),
|
||||
26: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("background_color", 24), ("body", 25)]],
|
||||
{},
|
||||
),
|
||||
27: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "360°-bilde"},
|
||||
),
|
||||
28: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"help_text": "Beskrivende tittel på bildet (vises også til skjermlesere)",
|
||||
"label": "Tittel",
|
||||
"max_length": 256,
|
||||
},
|
||||
),
|
||||
29: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 27), ("title", 28)]],
|
||||
{},
|
||||
),
|
||||
30: ("wagtail.embeds.blocks.EmbedBlock", (), {}),
|
||||
31: ("wagtail.blocks.RawHTMLBlock", (), {}),
|
||||
},
|
||||
default=[("paragraph", "")],
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="associationpage",
|
||||
name="body",
|
||||
field=wagtail.fields.StreamField(
|
||||
[
|
||||
("paragraph", 0),
|
||||
("image", 4),
|
||||
("image_slider", 8),
|
||||
("horizontal_rule", 10),
|
||||
("featured", 18),
|
||||
("page_section_navigation", 19),
|
||||
("accordion", 23),
|
||||
("fact_box", 26),
|
||||
("photo_sphere", 29),
|
||||
("embed", 30),
|
||||
("raw_html", 31),
|
||||
],
|
||||
block_lookup={
|
||||
0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rik tekst"}),
|
||||
1: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
2: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("fullwidth", "Fullbredde"),
|
||||
("bleed", "Utfallende"),
|
||||
("original", "Uendret størrelse"),
|
||||
],
|
||||
"icon": "cup",
|
||||
"label": "Bildeformat",
|
||||
},
|
||||
),
|
||||
3: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Bildetekst", "max_length": 512, "required": False},
|
||||
),
|
||||
4: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{},
|
||||
),
|
||||
5: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tekst", "max_length": 512, "required": False},
|
||||
),
|
||||
6: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("text", 5)]],
|
||||
{},
|
||||
),
|
||||
7: (
|
||||
"wagtail.blocks.ListBlock",
|
||||
(6,),
|
||||
{"label": "Bilder", "min_num": 1},
|
||||
),
|
||||
8: ("wagtail.blocks.StructBlock", [[("images", 7)]], {}),
|
||||
9: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Farge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
10: ("wagtail.blocks.StructBlock", [[("color", 9)]], {}),
|
||||
11: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tittel", "max_length": 64, "required": True},
|
||||
),
|
||||
12: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": ["bold", "italic", "link"],
|
||||
"label": "Tekst",
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
13: (
|
||||
"wagtail.blocks.PageChooserBlock",
|
||||
(),
|
||||
{"header": "Fremhevet side", "required": True},
|
||||
),
|
||||
14: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"default": "Les mer",
|
||||
"help_text": 'Lenketeksten som tar deg videre til siden. Tips: Ikke start med "Trykk her"',
|
||||
"label": "Lenketekst",
|
||||
"max_length": 64,
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
15: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
},
|
||||
),
|
||||
16: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [("left", "Venstre"), ("right", "Høyre")],
|
||||
"label": "Bildeplassering",
|
||||
},
|
||||
),
|
||||
17: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{
|
||||
"header": "Overstyr bilde",
|
||||
"help_text": "Bildet som er tilknyttet undersiden du vil fremheve, vil automatisk brukes. Om det mangler eller du vil overstyre hvilket bilde som et brukes, kan du velge et her.",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
18: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[
|
||||
[
|
||||
("title", 11),
|
||||
("text", 12),
|
||||
("featured_page", 13),
|
||||
("link_text", 14),
|
||||
("background_color", 15),
|
||||
("image_position", 16),
|
||||
("featured_image_override", 17),
|
||||
]
|
||||
],
|
||||
{},
|
||||
),
|
||||
19: ("dnscms.blocks.PageSectionNavigationBlock", (), {}),
|
||||
20: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Overskrift", "max_length": 64, "required": True},
|
||||
),
|
||||
21: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
22: (
|
||||
"wagtail.blocks.StreamBlock",
|
||||
[[("paragraph", 0), ("image", 21)]],
|
||||
{},
|
||||
),
|
||||
23: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("heading", 20), ("body", 22)]],
|
||||
{},
|
||||
),
|
||||
24: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
25: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": [
|
||||
"bold",
|
||||
"italic",
|
||||
"link",
|
||||
"ol",
|
||||
"ul",
|
||||
"h2",
|
||||
"h3",
|
||||
],
|
||||
"label": "Innhold",
|
||||
},
|
||||
),
|
||||
26: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("background_color", 24), ("body", 25)]],
|
||||
{},
|
||||
),
|
||||
27: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "360°-bilde"},
|
||||
),
|
||||
28: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"help_text": "Beskrivende tittel på bildet (vises også til skjermlesere)",
|
||||
"label": "Tittel",
|
||||
"max_length": 256,
|
||||
},
|
||||
),
|
||||
29: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 27), ("title", 28)]],
|
||||
{},
|
||||
),
|
||||
30: ("wagtail.embeds.blocks.EmbedBlock", (), {}),
|
||||
31: ("wagtail.blocks.RawHTMLBlock", (), {}),
|
||||
},
|
||||
default=[("paragraph", "")],
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -10,9 +10,9 @@ from wagtail.admin.panels import FieldPanel
|
||||
from wagtail.fields import RichTextField
|
||||
from wagtail.models import Page
|
||||
from wagtail.search import index
|
||||
from wagtail_wordpress_import.models import WPImportedPageMixin
|
||||
|
||||
from dnscms.fields import CommonStreamField
|
||||
from dnscms.wordpress.models import WPImportedPageMixin
|
||||
|
||||
|
||||
@register_singular_query_field("associationIndex")
|
||||
@@ -88,8 +88,6 @@ class AssociationPage(WPImportedPageMixin, Page):
|
||||
index.SearchField("body"),
|
||||
]
|
||||
|
||||
settings_panels = Page.settings_panels + WPImportedPageMixin.wordpress_panels
|
||||
|
||||
def import_wordpress_data(self, data):
|
||||
import html
|
||||
|
||||
|
||||
@@ -0,0 +1,289 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-15 20:21
|
||||
|
||||
import wagtail.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("contacts", "0017_alter_contactindex_body"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="contactindex",
|
||||
name="body",
|
||||
field=wagtail.fields.StreamField(
|
||||
[
|
||||
("paragraph", 0),
|
||||
("image", 4),
|
||||
("image_slider", 8),
|
||||
("horizontal_rule", 10),
|
||||
("featured", 18),
|
||||
("page_section_navigation", 19),
|
||||
("accordion", 23),
|
||||
("fact_box", 26),
|
||||
("photo_sphere", 29),
|
||||
("embed", 30),
|
||||
("raw_html", 31),
|
||||
("contact_section", 39),
|
||||
],
|
||||
block_lookup={
|
||||
0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rik tekst"}),
|
||||
1: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
2: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("fullwidth", "Fullbredde"),
|
||||
("bleed", "Utfallende"),
|
||||
("original", "Uendret størrelse"),
|
||||
],
|
||||
"icon": "cup",
|
||||
"label": "Bildeformat",
|
||||
},
|
||||
),
|
||||
3: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Bildetekst", "max_length": 512, "required": False},
|
||||
),
|
||||
4: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{},
|
||||
),
|
||||
5: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tekst", "max_length": 512, "required": False},
|
||||
),
|
||||
6: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("text", 5)]],
|
||||
{},
|
||||
),
|
||||
7: (
|
||||
"wagtail.blocks.ListBlock",
|
||||
(6,),
|
||||
{"label": "Bilder", "min_num": 1},
|
||||
),
|
||||
8: ("wagtail.blocks.StructBlock", [[("images", 7)]], {}),
|
||||
9: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Farge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
10: ("wagtail.blocks.StructBlock", [[("color", 9)]], {}),
|
||||
11: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tittel", "max_length": 64, "required": True},
|
||||
),
|
||||
12: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": ["bold", "italic", "link"],
|
||||
"label": "Tekst",
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
13: (
|
||||
"wagtail.blocks.PageChooserBlock",
|
||||
(),
|
||||
{"header": "Fremhevet side", "required": True},
|
||||
),
|
||||
14: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"default": "Les mer",
|
||||
"help_text": 'Lenketeksten som tar deg videre til siden. Tips: Ikke start med "Trykk her"',
|
||||
"label": "Lenketekst",
|
||||
"max_length": 64,
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
15: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
},
|
||||
),
|
||||
16: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [("left", "Venstre"), ("right", "Høyre")],
|
||||
"label": "Bildeplassering",
|
||||
},
|
||||
),
|
||||
17: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{
|
||||
"header": "Overstyr bilde",
|
||||
"help_text": "Bildet som er tilknyttet undersiden du vil fremheve, vil automatisk brukes. Om det mangler eller du vil overstyre hvilket bilde som et brukes, kan du velge et her.",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
18: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[
|
||||
[
|
||||
("title", 11),
|
||||
("text", 12),
|
||||
("featured_page", 13),
|
||||
("link_text", 14),
|
||||
("background_color", 15),
|
||||
("image_position", 16),
|
||||
("featured_image_override", 17),
|
||||
]
|
||||
],
|
||||
{},
|
||||
),
|
||||
19: ("dnscms.blocks.PageSectionNavigationBlock", (), {}),
|
||||
20: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Overskrift", "max_length": 64, "required": True},
|
||||
),
|
||||
21: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
22: (
|
||||
"wagtail.blocks.StreamBlock",
|
||||
[[("paragraph", 0), ("image", 21)]],
|
||||
{},
|
||||
),
|
||||
23: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("heading", 20), ("body", 22)]],
|
||||
{},
|
||||
),
|
||||
24: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
25: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": [
|
||||
"bold",
|
||||
"italic",
|
||||
"link",
|
||||
"ol",
|
||||
"ul",
|
||||
"h2",
|
||||
"h3",
|
||||
],
|
||||
"label": "Innhold",
|
||||
},
|
||||
),
|
||||
26: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("background_color", 24), ("body", 25)]],
|
||||
{},
|
||||
),
|
||||
27: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "360°-bilde"},
|
||||
),
|
||||
28: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"help_text": "Beskrivende tittel på bildet (vises også til skjermlesere)",
|
||||
"label": "Tittel",
|
||||
"max_length": 256,
|
||||
},
|
||||
),
|
||||
29: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 27), ("title", 28)]],
|
||||
{},
|
||||
),
|
||||
30: ("wagtail.embeds.blocks.EmbedBlock", (), {}),
|
||||
31: ("wagtail.blocks.RawHTMLBlock", (), {}),
|
||||
32: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{"features": ["bold", "italic", "link"]},
|
||||
),
|
||||
33: (
|
||||
"wagtail.snippets.blocks.SnippetChooserBlock",
|
||||
("contacts.ContactEntity",),
|
||||
{},
|
||||
),
|
||||
34: ("wagtail.blocks.StructBlock", [[("contact_entity", 33)]], {}),
|
||||
35: (
|
||||
"contacts.blocks.ContactListBlock",
|
||||
(34,),
|
||||
{"label": "Liste med kontaktpunkter"},
|
||||
),
|
||||
36: (
|
||||
"wagtail.blocks.StreamBlock",
|
||||
[[("contact_entity_list", 35)]],
|
||||
{"required": False},
|
||||
),
|
||||
37: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("title", 11), ("text", 32), ("blocks", 36)]],
|
||||
{"label": "Kontaktunderseksjon"},
|
||||
),
|
||||
38: (
|
||||
"wagtail.blocks.StreamBlock",
|
||||
[[("contact_entity_list", 35), ("contact_subsection", 37)]],
|
||||
{"required": False},
|
||||
),
|
||||
39: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("title", 11), ("text", 32), ("blocks", 38)]],
|
||||
{"label": "Kontaktseksjon"},
|
||||
),
|
||||
},
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -203,6 +203,25 @@ class AccordionBlock(blocks.StructBlock):
|
||||
label = "Trekkspill"
|
||||
|
||||
|
||||
@register_streamfield_block
|
||||
class PhotoSphereBlock(blocks.StructBlock):
|
||||
image = ImageChooserBlock(label="360°-bilde")
|
||||
title = blocks.CharBlock(
|
||||
max_length=512,
|
||||
label="Bildetekst",
|
||||
required=False,
|
||||
)
|
||||
|
||||
graphql_fields = [
|
||||
GraphQLImage("image", required=True),
|
||||
GraphQLString("title", required=False),
|
||||
]
|
||||
|
||||
class Meta:
|
||||
icon = "globe"
|
||||
label = "360°-bilde"
|
||||
|
||||
|
||||
@register_streamfield_block
|
||||
class FactBoxBlock(blocks.StructBlock):
|
||||
background_color = blocks.ChoiceBlock(
|
||||
@@ -234,6 +253,7 @@ BASE_BLOCKS = [
|
||||
("page_section_navigation", PageSectionNavigationBlock()),
|
||||
("accordion", AccordionBlock()),
|
||||
("fact_box", FactBoxBlock()),
|
||||
("photo_sphere", PhotoSphereBlock()),
|
||||
("embed", EmbedBlock()),
|
||||
("raw_html", blocks.RawHTMLBlock()),
|
||||
]
|
||||
|
||||
@@ -36,8 +36,8 @@ INSTALLED_APPS = [
|
||||
"venues",
|
||||
"news",
|
||||
"openinghours",
|
||||
"sponsors",
|
||||
# end cms apps
|
||||
"wagtail_wordpress_import",
|
||||
"grapple",
|
||||
"graphene_django",
|
||||
"wagtail.contrib.forms",
|
||||
@@ -61,6 +61,7 @@ INSTALLED_APPS = [
|
||||
"django.contrib.sessions",
|
||||
"django.contrib.messages",
|
||||
"django.contrib.staticfiles",
|
||||
"django.contrib.postgres",
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
@@ -188,6 +189,9 @@ WAGTAILADMIN_BASE_URL = "http://example.com"
|
||||
# Required by wagtail-grapple to make image URLs absolute
|
||||
BASE_URL = "http://example.com"
|
||||
|
||||
# https://docs.wagtail.org/en/latest/releases/6.4.html#data-upload-max-number-fields-update
|
||||
DATA_UPLOAD_MAX_NUMBER_FIELDS = 10_000
|
||||
|
||||
# GraphQL
|
||||
GRAPHENE = {"SCHEMA": "grapple.schema.schema"}
|
||||
GRAPPLE = {
|
||||
@@ -201,8 +205,11 @@ GRAPPLE = {
|
||||
"venues",
|
||||
"news",
|
||||
"openinghours",
|
||||
"sponsors",
|
||||
],
|
||||
"EXPOSE_GRAPHIQL": True,
|
||||
"PAGE_SIZE": 100,
|
||||
"MAX_PAGE_SIZE": 5000,
|
||||
}
|
||||
|
||||
# Wgtail WordPress import
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
from django.db import models
|
||||
from wagtail.models import Page
|
||||
|
||||
|
||||
# https://github.com/wagtail/wagtail-wordpress-import/blob/main/wagtail_wordpress_import/models.py
|
||||
class WPImportedPageMixin(Page):
|
||||
wp_post_id = models.IntegerField(blank=True, null=True)
|
||||
wp_post_type = models.CharField(max_length=255, blank=True, null=True)
|
||||
wp_link = models.TextField(blank=True, null=True)
|
||||
wp_raw_content = models.TextField(blank=True, null=True)
|
||||
wp_processed_content = models.TextField(blank=True, null=True)
|
||||
wp_block_json = models.TextField(blank=True, null=True)
|
||||
wp_normalized_styles = models.TextField(blank=True, null=True)
|
||||
wp_post_meta = models.JSONField(blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
@@ -0,0 +1,253 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-15 20:21
|
||||
|
||||
import wagtail.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("events", "0053_eventpage_lead"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="eventpage",
|
||||
name="body",
|
||||
field=wagtail.fields.StreamField(
|
||||
[
|
||||
("paragraph", 0),
|
||||
("image", 4),
|
||||
("image_slider", 8),
|
||||
("horizontal_rule", 10),
|
||||
("featured", 18),
|
||||
("page_section_navigation", 19),
|
||||
("accordion", 23),
|
||||
("fact_box", 26),
|
||||
("photo_sphere", 29),
|
||||
("embed", 30),
|
||||
("raw_html", 31),
|
||||
],
|
||||
block_lookup={
|
||||
0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rik tekst"}),
|
||||
1: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
2: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("fullwidth", "Fullbredde"),
|
||||
("bleed", "Utfallende"),
|
||||
("original", "Uendret størrelse"),
|
||||
],
|
||||
"icon": "cup",
|
||||
"label": "Bildeformat",
|
||||
},
|
||||
),
|
||||
3: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Bildetekst", "max_length": 512, "required": False},
|
||||
),
|
||||
4: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{},
|
||||
),
|
||||
5: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tekst", "max_length": 512, "required": False},
|
||||
),
|
||||
6: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("text", 5)]],
|
||||
{},
|
||||
),
|
||||
7: (
|
||||
"wagtail.blocks.ListBlock",
|
||||
(6,),
|
||||
{"label": "Bilder", "min_num": 1},
|
||||
),
|
||||
8: ("wagtail.blocks.StructBlock", [[("images", 7)]], {}),
|
||||
9: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Farge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
10: ("wagtail.blocks.StructBlock", [[("color", 9)]], {}),
|
||||
11: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tittel", "max_length": 64, "required": True},
|
||||
),
|
||||
12: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": ["bold", "italic", "link"],
|
||||
"label": "Tekst",
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
13: (
|
||||
"wagtail.blocks.PageChooserBlock",
|
||||
(),
|
||||
{"header": "Fremhevet side", "required": True},
|
||||
),
|
||||
14: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"default": "Les mer",
|
||||
"help_text": 'Lenketeksten som tar deg videre til siden. Tips: Ikke start med "Trykk her"',
|
||||
"label": "Lenketekst",
|
||||
"max_length": 64,
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
15: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
},
|
||||
),
|
||||
16: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [("left", "Venstre"), ("right", "Høyre")],
|
||||
"label": "Bildeplassering",
|
||||
},
|
||||
),
|
||||
17: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{
|
||||
"header": "Overstyr bilde",
|
||||
"help_text": "Bildet som er tilknyttet undersiden du vil fremheve, vil automatisk brukes. Om det mangler eller du vil overstyre hvilket bilde som et brukes, kan du velge et her.",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
18: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[
|
||||
[
|
||||
("title", 11),
|
||||
("text", 12),
|
||||
("featured_page", 13),
|
||||
("link_text", 14),
|
||||
("background_color", 15),
|
||||
("image_position", 16),
|
||||
("featured_image_override", 17),
|
||||
]
|
||||
],
|
||||
{},
|
||||
),
|
||||
19: ("dnscms.blocks.PageSectionNavigationBlock", (), {}),
|
||||
20: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Overskrift", "max_length": 64, "required": True},
|
||||
),
|
||||
21: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
22: (
|
||||
"wagtail.blocks.StreamBlock",
|
||||
[[("paragraph", 0), ("image", 21)]],
|
||||
{},
|
||||
),
|
||||
23: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("heading", 20), ("body", 22)]],
|
||||
{},
|
||||
),
|
||||
24: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
25: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": [
|
||||
"bold",
|
||||
"italic",
|
||||
"link",
|
||||
"ol",
|
||||
"ul",
|
||||
"h2",
|
||||
"h3",
|
||||
],
|
||||
"label": "Innhold",
|
||||
},
|
||||
),
|
||||
26: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("background_color", 24), ("body", 25)]],
|
||||
{},
|
||||
),
|
||||
27: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "360°-bilde"},
|
||||
),
|
||||
28: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"help_text": "Beskrivende tittel på bildet (vises også til skjermlesere)",
|
||||
"label": "Tittel",
|
||||
"max_length": 256,
|
||||
},
|
||||
),
|
||||
29: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 27), ("title", 28)]],
|
||||
{},
|
||||
),
|
||||
30: ("wagtail.embeds.blocks.EmbedBlock", (), {}),
|
||||
31: ("wagtail.blocks.RawHTMLBlock", (), {}),
|
||||
},
|
||||
default=[("paragraph", "")],
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -30,11 +30,11 @@ from wagtail.fields import RichTextField
|
||||
from wagtail.models import Orderable, Page, PageManager, PageQuerySet
|
||||
from wagtail.search import index
|
||||
from wagtail.snippets.models import register_snippet
|
||||
from wagtail_wordpress_import.models import WPImportedPageMixin
|
||||
|
||||
from associations.widgets import AssociationChooserWidget
|
||||
from dnscms.fields import CommonStreamField
|
||||
from dnscms.options import ALL_PIGS
|
||||
from dnscms.wordpress.models import WPImportedPageMixin
|
||||
from venues.models import VenuePage
|
||||
|
||||
|
||||
@@ -406,14 +406,12 @@ class EventPage(WPImportedPageMixin, Page):
|
||||
self.price_student = ""
|
||||
self.price_member = ""
|
||||
|
||||
settings_panels = Page.settings_panels + WPImportedPageMixin.wordpress_panels
|
||||
|
||||
def import_wordpress_data(self, data):
|
||||
import datetime
|
||||
import html
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
from django.core.validators import URLValidator
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
validate_url = URLValidator(schemes=["http", "https"])
|
||||
|
||||
|
||||
@@ -0,0 +1,308 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-15 20:21
|
||||
|
||||
import wagtail.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("generic", "0026_alter_genericpage_body"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="genericpage",
|
||||
name="body",
|
||||
field=wagtail.fields.StreamField(
|
||||
[
|
||||
("paragraph", 0),
|
||||
("image", 4),
|
||||
("image_slider", 8),
|
||||
("horizontal_rule", 10),
|
||||
("featured", 18),
|
||||
("page_section_navigation", 19),
|
||||
("accordion", 23),
|
||||
("fact_box", 26),
|
||||
("photo_sphere", 29),
|
||||
("embed", 30),
|
||||
("raw_html", 31),
|
||||
("page_section", 36),
|
||||
],
|
||||
block_lookup={
|
||||
0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rik tekst"}),
|
||||
1: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
2: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("fullwidth", "Fullbredde"),
|
||||
("bleed", "Utfallende"),
|
||||
("original", "Uendret størrelse"),
|
||||
],
|
||||
"icon": "cup",
|
||||
"label": "Bildeformat",
|
||||
},
|
||||
),
|
||||
3: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Bildetekst", "max_length": 512, "required": False},
|
||||
),
|
||||
4: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{},
|
||||
),
|
||||
5: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tekst", "max_length": 512, "required": False},
|
||||
),
|
||||
6: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("text", 5)]],
|
||||
{},
|
||||
),
|
||||
7: (
|
||||
"wagtail.blocks.ListBlock",
|
||||
(6,),
|
||||
{"label": "Bilder", "min_num": 1},
|
||||
),
|
||||
8: ("wagtail.blocks.StructBlock", [[("images", 7)]], {}),
|
||||
9: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Farge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
10: ("wagtail.blocks.StructBlock", [[("color", 9)]], {}),
|
||||
11: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tittel", "max_length": 64, "required": True},
|
||||
),
|
||||
12: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": ["bold", "italic", "link"],
|
||||
"label": "Tekst",
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
13: (
|
||||
"wagtail.blocks.PageChooserBlock",
|
||||
(),
|
||||
{"header": "Fremhevet side", "required": True},
|
||||
),
|
||||
14: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"default": "Les mer",
|
||||
"help_text": 'Lenketeksten som tar deg videre til siden. Tips: Ikke start med "Trykk her"',
|
||||
"label": "Lenketekst",
|
||||
"max_length": 64,
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
15: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
},
|
||||
),
|
||||
16: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [("left", "Venstre"), ("right", "Høyre")],
|
||||
"label": "Bildeplassering",
|
||||
},
|
||||
),
|
||||
17: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{
|
||||
"header": "Overstyr bilde",
|
||||
"help_text": "Bildet som er tilknyttet undersiden du vil fremheve, vil automatisk brukes. Om det mangler eller du vil overstyre hvilket bilde som et brukes, kan du velge et her.",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
18: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[
|
||||
[
|
||||
("title", 11),
|
||||
("text", 12),
|
||||
("featured_page", 13),
|
||||
("link_text", 14),
|
||||
("background_color", 15),
|
||||
("image_position", 16),
|
||||
("featured_image_override", 17),
|
||||
]
|
||||
],
|
||||
{},
|
||||
),
|
||||
19: ("dnscms.blocks.PageSectionNavigationBlock", (), {}),
|
||||
20: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Overskrift", "max_length": 64, "required": True},
|
||||
),
|
||||
21: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
22: (
|
||||
"wagtail.blocks.StreamBlock",
|
||||
[[("paragraph", 0), ("image", 21)]],
|
||||
{},
|
||||
),
|
||||
23: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("heading", 20), ("body", 22)]],
|
||||
{},
|
||||
),
|
||||
24: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
25: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": [
|
||||
"bold",
|
||||
"italic",
|
||||
"link",
|
||||
"ol",
|
||||
"ul",
|
||||
"h2",
|
||||
"h3",
|
||||
],
|
||||
"label": "Innhold",
|
||||
},
|
||||
),
|
||||
26: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("background_color", 24), ("body", 25)]],
|
||||
{},
|
||||
),
|
||||
27: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "360°-bilde"},
|
||||
),
|
||||
28: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"help_text": "Beskrivende tittel på bildet (vises også til skjermlesere)",
|
||||
"label": "Tittel",
|
||||
"max_length": 256,
|
||||
},
|
||||
),
|
||||
29: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 27), ("title", 28)]],
|
||||
{},
|
||||
),
|
||||
30: ("wagtail.embeds.blocks.EmbedBlock", (), {}),
|
||||
31: ("wagtail.blocks.RawHTMLBlock", (), {}),
|
||||
32: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("pigHeadLogo", "Grisehodelogo"),
|
||||
("key", "Nøkkel"),
|
||||
("ticket", "Billett"),
|
||||
("shield", "Skjold"),
|
||||
("bottle", "Flaske"),
|
||||
("lostProperty", "Hittegods"),
|
||||
("pigsty", "Grisebinge"),
|
||||
("wheelchair", "Rullestol"),
|
||||
("clock", "Klokke"),
|
||||
("parking", "Parkering"),
|
||||
("coins", "Mynter"),
|
||||
],
|
||||
"label": "Ikon",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
33: ("dnscms.blocks.NeufAddressSectionBlock", (), {}),
|
||||
34: ("dnscms.blocks.OpeningHoursSectionBlock", (), {}),
|
||||
35: (
|
||||
"wagtail.blocks.StreamBlock",
|
||||
[
|
||||
[
|
||||
("paragraph", 0),
|
||||
("image", 4),
|
||||
("image_slider", 8),
|
||||
("horizontal_rule", 10),
|
||||
("featured", 18),
|
||||
("accordion", 23),
|
||||
("fact_box", 26),
|
||||
("photo_sphere", 29),
|
||||
("embed", 30),
|
||||
("raw_html", 31),
|
||||
("neuf_address", 33),
|
||||
("opening_hours", 34),
|
||||
]
|
||||
],
|
||||
{},
|
||||
),
|
||||
36: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[
|
||||
[
|
||||
("title", 11),
|
||||
("background_color", 24),
|
||||
("icon", 32),
|
||||
("body", 35),
|
||||
]
|
||||
],
|
||||
{},
|
||||
),
|
||||
},
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.2.5 on 2025-08-12 21:00
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('images', '0004_alter_customimage_alt_alter_customimage_attribution'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='customimage',
|
||||
name='description',
|
||||
field=models.CharField(blank=True, default='', max_length=255, verbose_name='description'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,3 @@
|
||||
[tools]
|
||||
python = "3.14"
|
||||
uv = "latest"
|
||||
@@ -0,0 +1,253 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-15 20:21
|
||||
|
||||
import wagtail.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("news", "0018_newspage_wp_block_json_newspage_wp_link_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="newspage",
|
||||
name="body",
|
||||
field=wagtail.fields.StreamField(
|
||||
[
|
||||
("paragraph", 0),
|
||||
("image", 4),
|
||||
("image_slider", 8),
|
||||
("horizontal_rule", 10),
|
||||
("featured", 18),
|
||||
("page_section_navigation", 19),
|
||||
("accordion", 23),
|
||||
("fact_box", 26),
|
||||
("photo_sphere", 29),
|
||||
("embed", 30),
|
||||
("raw_html", 31),
|
||||
],
|
||||
block_lookup={
|
||||
0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rik tekst"}),
|
||||
1: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
2: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("fullwidth", "Fullbredde"),
|
||||
("bleed", "Utfallende"),
|
||||
("original", "Uendret størrelse"),
|
||||
],
|
||||
"icon": "cup",
|
||||
"label": "Bildeformat",
|
||||
},
|
||||
),
|
||||
3: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Bildetekst", "max_length": 512, "required": False},
|
||||
),
|
||||
4: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{},
|
||||
),
|
||||
5: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tekst", "max_length": 512, "required": False},
|
||||
),
|
||||
6: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("text", 5)]],
|
||||
{},
|
||||
),
|
||||
7: (
|
||||
"wagtail.blocks.ListBlock",
|
||||
(6,),
|
||||
{"label": "Bilder", "min_num": 1},
|
||||
),
|
||||
8: ("wagtail.blocks.StructBlock", [[("images", 7)]], {}),
|
||||
9: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Farge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
10: ("wagtail.blocks.StructBlock", [[("color", 9)]], {}),
|
||||
11: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tittel", "max_length": 64, "required": True},
|
||||
),
|
||||
12: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": ["bold", "italic", "link"],
|
||||
"label": "Tekst",
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
13: (
|
||||
"wagtail.blocks.PageChooserBlock",
|
||||
(),
|
||||
{"header": "Fremhevet side", "required": True},
|
||||
),
|
||||
14: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"default": "Les mer",
|
||||
"help_text": 'Lenketeksten som tar deg videre til siden. Tips: Ikke start med "Trykk her"',
|
||||
"label": "Lenketekst",
|
||||
"max_length": 64,
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
15: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
},
|
||||
),
|
||||
16: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [("left", "Venstre"), ("right", "Høyre")],
|
||||
"label": "Bildeplassering",
|
||||
},
|
||||
),
|
||||
17: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{
|
||||
"header": "Overstyr bilde",
|
||||
"help_text": "Bildet som er tilknyttet undersiden du vil fremheve, vil automatisk brukes. Om det mangler eller du vil overstyre hvilket bilde som et brukes, kan du velge et her.",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
18: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[
|
||||
[
|
||||
("title", 11),
|
||||
("text", 12),
|
||||
("featured_page", 13),
|
||||
("link_text", 14),
|
||||
("background_color", 15),
|
||||
("image_position", 16),
|
||||
("featured_image_override", 17),
|
||||
]
|
||||
],
|
||||
{},
|
||||
),
|
||||
19: ("dnscms.blocks.PageSectionNavigationBlock", (), {}),
|
||||
20: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Overskrift", "max_length": 64, "required": True},
|
||||
),
|
||||
21: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
22: (
|
||||
"wagtail.blocks.StreamBlock",
|
||||
[[("paragraph", 0), ("image", 21)]],
|
||||
{},
|
||||
),
|
||||
23: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("heading", 20), ("body", 22)]],
|
||||
{},
|
||||
),
|
||||
24: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
25: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": [
|
||||
"bold",
|
||||
"italic",
|
||||
"link",
|
||||
"ol",
|
||||
"ul",
|
||||
"h2",
|
||||
"h3",
|
||||
],
|
||||
"label": "Innhold",
|
||||
},
|
||||
),
|
||||
26: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("background_color", 24), ("body", 25)]],
|
||||
{},
|
||||
),
|
||||
27: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "360°-bilde"},
|
||||
),
|
||||
28: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"help_text": "Beskrivende tittel på bildet (vises også til skjermlesere)",
|
||||
"label": "Tittel",
|
||||
"max_length": 256,
|
||||
},
|
||||
),
|
||||
29: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 27), ("title", 28)]],
|
||||
{},
|
||||
),
|
||||
30: ("wagtail.embeds.blocks.EmbedBlock", (), {}),
|
||||
31: ("wagtail.blocks.RawHTMLBlock", (), {}),
|
||||
},
|
||||
default=[("paragraph", "")],
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -5,9 +5,9 @@ from wagtail.admin.panels import FieldPanel
|
||||
from wagtail.fields import RichTextField
|
||||
from wagtail.models import Page
|
||||
from wagtail.search import index
|
||||
from wagtail_wordpress_import.models import WPImportedPageMixin
|
||||
|
||||
from dnscms.fields import CommonStreamField
|
||||
from dnscms.wordpress.models import WPImportedPageMixin
|
||||
|
||||
|
||||
@register_singular_query_field("newsIndex")
|
||||
@@ -76,8 +76,6 @@ class NewsPage(WPImportedPageMixin, Page):
|
||||
index.SearchField("body"),
|
||||
]
|
||||
|
||||
settings_panels = Page.settings_panels + WPImportedPageMixin.wordpress_panels
|
||||
|
||||
def import_wordpress_data(self, data):
|
||||
import html
|
||||
|
||||
|
||||
@@ -6,7 +6,8 @@ from modelcluster.fields import ParentalKey
|
||||
from modelcluster.models import ClusterableModel
|
||||
from wagtail import blocks
|
||||
from wagtail.admin.panels import FieldPanel, InlinePanel, MultiFieldPanel, TitleFieldPanel
|
||||
from wagtail.models import Orderable, StreamField
|
||||
from wagtail.fields import StreamField
|
||||
from wagtail.models import Orderable
|
||||
from wagtail.snippets.models import register_snippet
|
||||
|
||||
|
||||
|
||||
Generated
-1220
File diff suppressed because it is too large
Load Diff
+22
-18
@@ -1,23 +1,31 @@
|
||||
[tool.poetry]
|
||||
[project]
|
||||
name = "dnscms"
|
||||
version = "0.1.0"
|
||||
description = ""
|
||||
authors = ["Your Name <you@example.com>"]
|
||||
authors = [{ name = "EDB", email = "edb@neuf.no" }]
|
||||
requires-python = ">=3.14, <3.15"
|
||||
readme = "README.md"
|
||||
package-mode = false
|
||||
dependencies = [
|
||||
"wagtail>=7.3.1",
|
||||
"wagtail-grapple>=0.29.0",
|
||||
"django>=6.0.3",
|
||||
"django-extensions>=4.1",
|
||||
"psycopg2-binary>=2.9.11,<3",
|
||||
"gunicorn>=25.1.0",
|
||||
"whitenoise>=6.12.0",
|
||||
]
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.12"
|
||||
wagtail = "^6.1.3"
|
||||
django = "^5.0.7"
|
||||
wagtail-grapple = "^0.26.0"
|
||||
psycopg2-binary = "^2.9.9"
|
||||
django-extensions = "^3.2.3"
|
||||
wagtail-wordpress-import = { git = "https://github.com/ponas/wagtail-wordpress-import.git", branch = "make-it-work" }
|
||||
whitenoise = "^6.7.0"
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
"ruff>=0.15.1",
|
||||
]
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
ruff = "*"
|
||||
[tool.uv]
|
||||
package = false
|
||||
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[tool.ruff]
|
||||
line-length = 99
|
||||
@@ -26,7 +34,3 @@ line-length = 99
|
||||
select = ["F", "E", "W", "Q", "UP", "DJ"]
|
||||
ignore = []
|
||||
exclude = ["**/migrations/*.py"]
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class SponsorsConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'sponsors'
|
||||
@@ -0,0 +1,30 @@
|
||||
# Generated by Django 5.1 on 2025-07-23 08:42
|
||||
|
||||
import django.db.models.deletion
|
||||
import wagtail.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('wagtailcore', '0094_alter_page_locale'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='SponsorsPage',
|
||||
fields=[
|
||||
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
|
||||
('lead', wagtail.fields.RichTextField(blank=True)),
|
||||
('sponsors', wagtail.fields.StreamField([('sponsor', 4)], blank=True, block_lookup={0: ('wagtail.blocks.CharBlock', (), {'label': 'Navn', 'max_length': 255}), 1: ('wagtail.images.blocks.ImageChooserBlock', (), {'label': 'Logo', 'required': False}), 2: ('wagtail.blocks.URLBlock', (), {'label': 'Nettside', 'required': False}), 3: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic', 'link', 'ul', 'ol'], 'label': 'Beskrivelse', 'required': False}), 4: ('wagtail.blocks.StructBlock', [[('name', 0), ('logo', 1), ('website', 2), ('text', 3)]], {})})),
|
||||
('body', wagtail.fields.StreamField([('paragraph', 0), ('image', 4), ('image_slider', 8), ('horizontal_rule', 10), ('featured', 18), ('page_section_navigation', 19), ('accordion', 23), ('fact_box', 26), ('embed', 27), ('raw_html', 28)], block_lookup={0: ('wagtail.blocks.RichTextBlock', (), {'label': 'Rik tekst'}), 1: ('wagtail.images.blocks.ImageChooserBlock', (), {'label': 'Bilde'}), 2: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('fullwidth', 'Fullbredde'), ('bleed', 'Utfallende'), ('original', 'Uendret størrelse')], 'icon': 'cup', 'label': 'Bildeformat'}), 3: ('wagtail.blocks.CharBlock', (), {'label': 'Bildetekst', 'max_length': 512, 'required': False}), 4: ('wagtail.blocks.StructBlock', [[('image', 1), ('image_format', 2), ('text', 3)]], {}), 5: ('wagtail.blocks.CharBlock', (), {'label': 'Tekst', 'max_length': 512, 'required': False}), 6: ('wagtail.blocks.StructBlock', [[('image', 1), ('text', 5)]], {}), 7: ('wagtail.blocks.ListBlock', (6,), {'label': 'Bilder', 'min_num': 1}), 8: ('wagtail.blocks.StructBlock', [[('images', 7)]], {}), 9: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('deepBrick', 'Dyp tegl'), ('neufPink', 'Griserosa'), ('goldenOrange', 'Gyllen oransje'), ('goldenBeige', 'Gyllen beige'), ('chateauBlue', 'Slottsblå')], 'label': 'Farge', 'required': False}), 10: ('wagtail.blocks.StructBlock', [[('color', 9)]], {}), 11: ('wagtail.blocks.CharBlock', (), {'label': 'Tittel', 'max_length': 64, 'required': True}), 12: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic', 'link'], 'label': 'Tekst', 'required': True}), 13: ('wagtail.blocks.PageChooserBlock', (), {'header': 'Fremhevet side', 'required': True}), 14: ('wagtail.blocks.CharBlock', (), {'default': 'Les mer', 'help_text': 'Lenketeksten som tar deg videre til siden. Tips: Ikke start med "Trykk her"', 'label': 'Lenketekst', 'max_length': 64, 'required': True}), 15: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('betongGray', 'Betonggrå'), ('deepBrick', 'Dyp tegl'), ('neufPink', 'Griserosa'), ('goldenOrange', 'Gyllen oransje'), ('goldenBeige', 'Gyllen beige'), ('chateauBlue', 'Slottsblå')], 'label': 'Bakgrunnsfarge'}), 16: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('left', 'Venstre'), ('right', 'Høyre')], 'label': 'Bildeplassering'}), 17: ('wagtail.images.blocks.ImageChooserBlock', (), {'header': 'Overstyr bilde', 'help_text': 'Bildet som er tilknyttet undersiden du vil fremheve, vil automatisk brukes. Om det mangler eller du vil overstyre hvilket bilde som et brukes, kan du velge et her.', 'required': False}), 18: ('wagtail.blocks.StructBlock', [[('title', 11), ('text', 12), ('featured_page', 13), ('link_text', 14), ('background_color', 15), ('image_position', 16), ('featured_image_override', 17)]], {}), 19: ('dnscms.blocks.PageSectionNavigationBlock', (), {}), 20: ('wagtail.blocks.CharBlock', (), {'label': 'Overskrift', 'max_length': 64, 'required': True}), 21: ('wagtail.blocks.StructBlock', [[('image', 1), ('image_format', 2), ('text', 3)]], {'label': 'Bilde'}), 22: ('wagtail.blocks.StreamBlock', [[('paragraph', 0), ('image', 21)]], {}), 23: ('wagtail.blocks.StructBlock', [[('heading', 20), ('body', 22)]], {}), 24: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('betongGray', 'Betonggrå'), ('deepBrick', 'Dyp tegl'), ('neufPink', 'Griserosa'), ('goldenOrange', 'Gyllen oransje'), ('goldenBeige', 'Gyllen beige'), ('chateauBlue', 'Slottsblå')], 'label': 'Bakgrunnsfarge', 'required': False}), 25: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic', 'link', 'ol', 'ul', 'h2', 'h3'], 'label': 'Innhold'}), 26: ('wagtail.blocks.StructBlock', [[('background_color', 24), ('body', 25)]], {}), 27: ('wagtail.embeds.blocks.EmbedBlock', (), {}), 28: ('wagtail.blocks.RawHTMLBlock', (), {})})),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('wagtailcore.page',),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,252 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-15 20:21
|
||||
|
||||
import wagtail.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("sponsors", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="sponsorspage",
|
||||
name="body",
|
||||
field=wagtail.fields.StreamField(
|
||||
[
|
||||
("paragraph", 0),
|
||||
("image", 4),
|
||||
("image_slider", 8),
|
||||
("horizontal_rule", 10),
|
||||
("featured", 18),
|
||||
("page_section_navigation", 19),
|
||||
("accordion", 23),
|
||||
("fact_box", 26),
|
||||
("photo_sphere", 29),
|
||||
("embed", 30),
|
||||
("raw_html", 31),
|
||||
],
|
||||
block_lookup={
|
||||
0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rik tekst"}),
|
||||
1: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
2: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("fullwidth", "Fullbredde"),
|
||||
("bleed", "Utfallende"),
|
||||
("original", "Uendret størrelse"),
|
||||
],
|
||||
"icon": "cup",
|
||||
"label": "Bildeformat",
|
||||
},
|
||||
),
|
||||
3: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Bildetekst", "max_length": 512, "required": False},
|
||||
),
|
||||
4: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{},
|
||||
),
|
||||
5: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tekst", "max_length": 512, "required": False},
|
||||
),
|
||||
6: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("text", 5)]],
|
||||
{},
|
||||
),
|
||||
7: (
|
||||
"wagtail.blocks.ListBlock",
|
||||
(6,),
|
||||
{"label": "Bilder", "min_num": 1},
|
||||
),
|
||||
8: ("wagtail.blocks.StructBlock", [[("images", 7)]], {}),
|
||||
9: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Farge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
10: ("wagtail.blocks.StructBlock", [[("color", 9)]], {}),
|
||||
11: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tittel", "max_length": 64, "required": True},
|
||||
),
|
||||
12: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": ["bold", "italic", "link"],
|
||||
"label": "Tekst",
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
13: (
|
||||
"wagtail.blocks.PageChooserBlock",
|
||||
(),
|
||||
{"header": "Fremhevet side", "required": True},
|
||||
),
|
||||
14: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"default": "Les mer",
|
||||
"help_text": 'Lenketeksten som tar deg videre til siden. Tips: Ikke start med "Trykk her"',
|
||||
"label": "Lenketekst",
|
||||
"max_length": 64,
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
15: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
},
|
||||
),
|
||||
16: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [("left", "Venstre"), ("right", "Høyre")],
|
||||
"label": "Bildeplassering",
|
||||
},
|
||||
),
|
||||
17: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{
|
||||
"header": "Overstyr bilde",
|
||||
"help_text": "Bildet som er tilknyttet undersiden du vil fremheve, vil automatisk brukes. Om det mangler eller du vil overstyre hvilket bilde som et brukes, kan du velge et her.",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
18: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[
|
||||
[
|
||||
("title", 11),
|
||||
("text", 12),
|
||||
("featured_page", 13),
|
||||
("link_text", 14),
|
||||
("background_color", 15),
|
||||
("image_position", 16),
|
||||
("featured_image_override", 17),
|
||||
]
|
||||
],
|
||||
{},
|
||||
),
|
||||
19: ("dnscms.blocks.PageSectionNavigationBlock", (), {}),
|
||||
20: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Overskrift", "max_length": 64, "required": True},
|
||||
),
|
||||
21: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
22: (
|
||||
"wagtail.blocks.StreamBlock",
|
||||
[[("paragraph", 0), ("image", 21)]],
|
||||
{},
|
||||
),
|
||||
23: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("heading", 20), ("body", 22)]],
|
||||
{},
|
||||
),
|
||||
24: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
25: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": [
|
||||
"bold",
|
||||
"italic",
|
||||
"link",
|
||||
"ol",
|
||||
"ul",
|
||||
"h2",
|
||||
"h3",
|
||||
],
|
||||
"label": "Innhold",
|
||||
},
|
||||
),
|
||||
26: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("background_color", 24), ("body", 25)]],
|
||||
{},
|
||||
),
|
||||
27: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "360°-bilde"},
|
||||
),
|
||||
28: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"help_text": "Beskrivende tittel på bildet (vises også til skjermlesere)",
|
||||
"label": "Tittel",
|
||||
"max_length": 256,
|
||||
},
|
||||
),
|
||||
29: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 27), ("title", 28)]],
|
||||
{},
|
||||
),
|
||||
30: ("wagtail.embeds.blocks.EmbedBlock", (), {}),
|
||||
31: ("wagtail.blocks.RawHTMLBlock", (), {}),
|
||||
},
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,62 @@
|
||||
from grapple.helpers import register_singular_query_field, register_streamfield_block
|
||||
from grapple.models import GraphQLImage, GraphQLRichText, GraphQLStreamfield, GraphQLString
|
||||
from wagtail import blocks
|
||||
from wagtail.admin.panels import (
|
||||
FieldPanel,
|
||||
)
|
||||
from wagtail.fields import RichTextField, StreamField
|
||||
from wagtail.images.blocks import ImageChooserBlock
|
||||
from wagtail.models import Page
|
||||
from wagtail.search import index
|
||||
|
||||
from dnscms.blocks import BASE_BLOCKS
|
||||
|
||||
|
||||
@register_streamfield_block
|
||||
class SponsorBlock(blocks.StructBlock):
|
||||
name = blocks.CharBlock(max_length=255, label="Navn")
|
||||
logo = ImageChooserBlock(required=False, label="Logo")
|
||||
website = blocks.URLBlock(required=False, label="Nettside")
|
||||
text = blocks.RichTextBlock(
|
||||
features=["bold", "italic", "link", "ul", "ol"], required=False, label="Beskrivelse"
|
||||
)
|
||||
|
||||
graphql_fields = [
|
||||
GraphQLString("name", required=False),
|
||||
GraphQLImage("logo", required=False),
|
||||
GraphQLString("website", required=False),
|
||||
GraphQLString("text", required=False),
|
||||
]
|
||||
|
||||
class Meta:
|
||||
label = "Sponsor"
|
||||
icon = "tag"
|
||||
|
||||
|
||||
@register_singular_query_field("sponsorsPage")
|
||||
class SponsorsPage(Page):
|
||||
max_count = 1
|
||||
subpage_types = []
|
||||
|
||||
lead = RichTextField(features=["italic", "link"], blank=True)
|
||||
sponsors = StreamField(
|
||||
[
|
||||
("sponsor", SponsorBlock()),
|
||||
],
|
||||
blank=True,
|
||||
)
|
||||
body = StreamField(BASE_BLOCKS)
|
||||
|
||||
content_panels = Page.content_panels + [
|
||||
FieldPanel("lead", heading="Ingress"),
|
||||
FieldPanel("body", heading="Innhold"),
|
||||
FieldPanel("sponsors", heading="Sponsorer"),
|
||||
]
|
||||
|
||||
graphql_fields = [
|
||||
GraphQLRichText("lead"),
|
||||
GraphQLStreamfield("body"),
|
||||
GraphQLStreamfield("sponsors"),
|
||||
]
|
||||
|
||||
search_fields = Page.search_fields + [index.SearchField("body"), index.SearchField("sponsors")]
|
||||
Generated
+659
@@ -0,0 +1,659 @@
|
||||
version = 1
|
||||
revision = 3
|
||||
requires-python = "==3.14.*"
|
||||
|
||||
[[package]]
|
||||
name = "anyascii"
|
||||
version = "0.3.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/db/ba/edebda727008390936da4a9bf677c19cd63b32d51e864656d2cbd1028e25/anyascii-0.3.3.tar.gz", hash = "sha256:c94e9dd9d47b3d9494eca305fef9447d00b4bf1a32aff85aa746fa3ec7fb95c3", size = 264680, upload-time = "2025-06-29T03:33:30.427Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/c2/76/783b75a21ce3563b8709050de030ae253853b147bd52e141edc1025aa268/anyascii-0.3.3-py3-none-any.whl", hash = "sha256:f5ab5e53c8781a36b5a40e1296a0eeda2f48c649ef10c3921c1381b1d00dee7a", size = 345090, upload-time = "2025-06-29T03:33:28.356Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "asgiref"
|
||||
version = "3.9.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/90/61/0aa957eec22ff70b830b22ff91f825e70e1ef732c06666a805730f28b36b/asgiref-3.9.1.tar.gz", hash = "sha256:a5ab6582236218e5ef1648f242fd9f10626cfd4de8dc377db215d5d5098e3142", size = 36870, upload-time = "2025-07-08T09:07:43.344Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/7c/3c/0464dcada90d5da0e71018c04a140ad6349558afb30b3051b4264cc5b965/asgiref-3.9.1-py3-none-any.whl", hash = "sha256:f3bba7092a48005b5f5bacd747d36ee4a5a61f4a269a6df590b43144355ebd2c", size = 23790, upload-time = "2025-07-08T09:07:41.548Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "beautifulsoup4"
|
||||
version = "4.13.4"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "soupsieve" },
|
||||
{ name = "typing-extensions" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload-time = "2025-04-15T17:05:13.836Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "certifi"
|
||||
version = "2025.8.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/dc/67/960ebe6bf230a96cda2e0abcf73af550ec4f090005363542f0765df162e0/certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", size = 162386, upload-time = "2025-08-03T03:07:47.08Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216, upload-time = "2025-08-03T03:07:45.777Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "charset-normalizer"
|
||||
version = "3.4.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/83/2d/5fd176ceb9b2fc619e63405525573493ca23441330fcdaee6bef9460e924/charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", size = 122371, upload-time = "2025-08-09T07:57:28.46Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/8e/91/b5a06ad970ddc7a0e513112d40113e834638f4ca1120eb727a249fb2715e/charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15", size = 204342, upload-time = "2025-08-09T07:56:38.687Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/ce/ec/1edc30a377f0a02689342f214455c3f6c2fbedd896a1d2f856c002fc3062/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db", size = 145995, upload-time = "2025-08-09T07:56:40.048Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/17/e5/5e67ab85e6d22b04641acb5399c8684f4d37caf7558a53859f0283a650e9/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d", size = 158640, upload-time = "2025-08-09T07:56:41.311Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/f1/e5/38421987f6c697ee3722981289d554957c4be652f963d71c5e46a262e135/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096", size = 156636, upload-time = "2025-08-09T07:56:43.195Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a0/e4/5a075de8daa3ec0745a9a3b54467e0c2967daaaf2cec04c845f73493e9a1/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa", size = 150939, upload-time = "2025-08-09T07:56:44.819Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/02/f7/3611b32318b30974131db62b4043f335861d4d9b49adc6d57c1149cc49d4/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049", size = 148580, upload-time = "2025-08-09T07:56:46.684Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/7e/61/19b36f4bd67f2793ab6a99b979b4e4f3d8fc754cbdffb805335df4337126/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0", size = 159870, upload-time = "2025-08-09T07:56:47.941Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/06/57/84722eefdd338c04cf3030ada66889298eaedf3e7a30a624201e0cbe424a/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92", size = 157797, upload-time = "2025-08-09T07:56:49.756Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/72/2a/aff5dd112b2f14bcc3462c312dce5445806bfc8ab3a7328555da95330e4b/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16", size = 152224, upload-time = "2025-08-09T07:56:51.369Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/b7/8c/9839225320046ed279c6e839d51f028342eb77c91c89b8ef2549f951f3ec/charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce", size = 100086, upload-time = "2025-08-09T07:56:52.722Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/ee/7a/36fbcf646e41f710ce0a563c1c9a343c6edf9be80786edeb15b6f62e17db/charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c", size = 107400, upload-time = "2025-08-09T07:56:55.172Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/8a/1f/f041989e93b001bc4e44bb1669ccdcf54d3f00e628229a85b08d330615c5/charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", size = 53175, upload-time = "2025-08-09T07:57:26.864Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "defusedxml"
|
||||
version = "0.7.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django"
|
||||
version = "6.0.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "asgiref" },
|
||||
{ name = "sqlparse" },
|
||||
{ name = "tzdata", marker = "sys_platform == 'win32'" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/80/e1/894115c6bd70e2c8b66b0c40a3c367d83a5a48c034a4d904d31b62f7c53a/django-6.0.3.tar.gz", hash = "sha256:90be765ee756af8a6cbd6693e56452404b5ad15294f4d5e40c0a55a0f4870fe1", size = 10872701, upload-time = "2026-03-03T13:55:15.026Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/72/b1/23f2556967c45e34d3d3cf032eb1bd3ef925ee458667fb99052a0b3ea3a6/django-6.0.3-py3-none-any.whl", hash = "sha256:2e5974441491ddb34c3f13d5e7a9f97b07ba03bf70234c0a9c68b79bbb235bc3", size = 8358527, upload-time = "2026-03-03T13:55:10.552Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django-extensions"
|
||||
version = "4.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "django" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/6d/b3/ed0f54ed706ec0b54fd251cc0364a249c6cd6c6ec97f04dc34be5e929eac/django_extensions-4.1.tar.gz", hash = "sha256:7b70a4d28e9b840f44694e3f7feb54f55d495f8b3fa6c5c0e5e12bcb2aa3cdeb", size = 283078, upload-time = "2025-04-11T01:15:39.617Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/64/96/d967ca440d6a8e3861120f51985d8e5aec79b9a8bdda16041206adfe7adc/django_extensions-4.1-py3-none-any.whl", hash = "sha256:0699a7af28f2523bf8db309a80278519362cd4b6e1fd0a8cd4bf063e1e023336", size = 232980, upload-time = "2025-04-11T01:15:37.701Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django-filter"
|
||||
version = "25.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "django" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/b5/40/c702a6fe8cccac9bf426b55724ebdf57d10a132bae80a17691d0cf0b9bac/django_filter-25.1.tar.gz", hash = "sha256:1ec9eef48fa8da1c0ac9b411744b16c3f4c31176c867886e4c48da369c407153", size = 143021, upload-time = "2025-02-14T16:30:53.238Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/07/a6/70dcd68537c434ba7cb9277d403c5c829caf04f35baf5eb9458be251e382/django_filter-25.1-py3-none-any.whl", hash = "sha256:4fa48677cf5857b9b1347fed23e355ea792464e0fe07244d1fdfb8a806215b80", size = 94114, upload-time = "2025-02-14T16:30:50.435Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django-modelcluster"
|
||||
version = "6.4.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "django" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/5b/f7/51efcea27d74665230be07b63e631e16204893ef32338a0e671c5ee0cd40/django_modelcluster-6.4.1.tar.gz", hash = "sha256:e736fcee925f83b63218dbf9c869ab50618b0f5e98869a5aa497f7a5331aa263", size = 29029, upload-time = "2025-12-04T12:21:41.907Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/a5/e4/ec99d52aa04e204e938564b603f4591e2e82e236ed59af664fee35179e75/django_modelcluster-6.4.1-py2.py3-none-any.whl", hash = "sha256:ccc190cd9e22c24900ea2410bff64d444d48f43f0f4aedeed0f6cd94e2536698", size = 29315, upload-time = "2025-12-04T12:21:39.911Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django-permissionedforms"
|
||||
version = "0.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "django" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/94/4b/364fe61a161ead607dc6af311901ba8e62f537f8fdab94b5252cb6efe6d7/django-permissionedforms-0.1.tar.gz", hash = "sha256:4340bb20c4477fffb13b4cc5cccf9f1b1010b64f79956c291c72d2ad2ed243f8", size = 5856, upload-time = "2022-02-28T19:40:27.892Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/e6/5b/216157ff053f955b15b9dcdc13bfb6e406666445164fee9e332e141be96d/django_permissionedforms-0.1-py2.py3-none-any.whl", hash = "sha256:d341a961a27cc77fde8cc42141c6ab55cc1f0cb886963cc2d6967b9674fa47d6", size = 5744, upload-time = "2022-02-28T19:40:26.337Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django-stubs-ext"
|
||||
version = "5.2.2"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "django" },
|
||||
{ name = "typing-extensions" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/fc/06/5e94715d103e6cc72380cb0d0b6682a7d5ad2c366cee478c94d77aad777d/django_stubs_ext-5.2.2.tar.gz", hash = "sha256:d9d151b919fe2438760f5bd938f03e1cb08c84d0651f9e5917f1313907e42683", size = 6244, upload-time = "2025-07-17T08:34:35.054Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/4e/38/2903676f97f7902ee31984a06756b0e8836e897f4b617e1a03be4a43eb4f/django_stubs_ext-5.2.2-py3-none-any.whl", hash = "sha256:8833bbe32405a2a0ce168d3f75a87168f61bd16939caf0e8bf173bccbd8a44c5", size = 8816, upload-time = "2025-07-17T08:34:33.715Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django-taggit"
|
||||
version = "6.1.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "django" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/34/a6/f1beaf8f552fe90c153cc039316ebab942c23dfbc88588dde081fefca816/django_taggit-6.1.0.tar.gz", hash = "sha256:c4d1199e6df34125dd36db5eb0efe545b254dec3980ce5dd80e6bab3e78757c3", size = 38151, upload-time = "2024-09-29T08:07:39.477Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/6b/34/4185c345530b91d05cb82e05d07148f481a5eb5dc2ac44e092b3daa6f206/django_taggit-6.1.0-py3-none-any.whl", hash = "sha256:ab776264bbc76cb3d7e49e1bf9054962457831bd21c3a42db9138b41956e4cf0", size = 75749, upload-time = "2024-09-29T08:07:14.612Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django-tasks"
|
||||
version = "0.9.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "django" },
|
||||
{ name = "django-stubs-ext" },
|
||||
{ name = "typing-extensions" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/60/b1/064645bf246a1f5b46d9638755b1869ea44a6d05e7c7c12841fddebb71f6/django_tasks-0.9.0.tar.gz", hash = "sha256:971b3829efeee68147f7deced8d21b907131b11ec7953af83eb94b11f128a24d", size = 32343, upload-time = "2025-10-17T16:21:08.58Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/71/e1/ce539ce1e21be71696649f84b6dbd508b2c0b89b559a6e620478bb126f7c/django_tasks-0.9.0-py3-none-any.whl", hash = "sha256:fddc344934a605d9eafa08ac8ba32c0cde9da23ef534e03a41f09fa0417b535a", size = 44057, upload-time = "2025-10-17T16:21:07.283Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django-treebeard"
|
||||
version = "4.7.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "django" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/bb/24/eaccbce17355380cb3a8fe6ad92a85b76453dc1f0ecd04f48bfe8929065b/django-treebeard-4.7.1.tar.gz", hash = "sha256:846e462904b437155f76e04907ba4e48480716855f88b898df4122bdcfbd6e98", size = 294139, upload-time = "2024-01-31T16:35:19.751Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/87/79/259966820614746cc4d81762edf97a53bf1e3b8e74797c010d310c6f4a8f/django_treebeard-4.7.1-py3-none-any.whl", hash = "sha256:995c7120153ab999898fe3043bbdcd8a0fc77cc106eb94de7350e9d02c885135", size = 93210, upload-time = "2024-01-31T16:35:17.843Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "djangorestframework"
|
||||
version = "3.16.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "django" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/8a/95/5376fe618646fde6899b3cdc85fd959716bb67542e273a76a80d9f326f27/djangorestframework-3.16.1.tar.gz", hash = "sha256:166809528b1aced0a17dc66c24492af18049f2c9420dbd0be29422029cfc3ff7", size = 1089735, upload-time = "2025-08-06T17:50:53.251Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/b0/ce/bf8b9d3f415be4ac5588545b5fcdbbb841977db1c1d923f7568eeabe1689/djangorestframework-3.16.1-py3-none-any.whl", hash = "sha256:33a59f47fb9c85ede792cbf88bde71893bcda0667bc573f784649521f1102cec", size = 1080442, upload-time = "2025-08-06T17:50:50.667Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dnscms"
|
||||
version = "0.1.0"
|
||||
source = { virtual = "." }
|
||||
dependencies = [
|
||||
{ name = "django" },
|
||||
{ name = "django-extensions" },
|
||||
{ name = "gunicorn" },
|
||||
{ name = "psycopg2-binary" },
|
||||
{ name = "wagtail" },
|
||||
{ name = "wagtail-grapple" },
|
||||
{ name = "whitenoise" },
|
||||
]
|
||||
|
||||
[package.dev-dependencies]
|
||||
dev = [
|
||||
{ name = "ruff" },
|
||||
]
|
||||
|
||||
[package.metadata]
|
||||
requires-dist = [
|
||||
{ name = "django", specifier = ">=6.0.3" },
|
||||
{ name = "django-extensions", specifier = ">=4.1" },
|
||||
{ name = "gunicorn", specifier = ">=25.1.0" },
|
||||
{ name = "psycopg2-binary", specifier = ">=2.9.11,<3" },
|
||||
{ name = "wagtail", specifier = ">=7.3.1" },
|
||||
{ name = "wagtail-grapple", specifier = ">=0.29.0" },
|
||||
{ name = "whitenoise", specifier = ">=6.12.0" },
|
||||
]
|
||||
|
||||
[package.metadata.requires-dev]
|
||||
dev = [{ name = "ruff", specifier = ">=0.15.1" }]
|
||||
|
||||
[[package]]
|
||||
name = "draftjs-exporter"
|
||||
version = "5.1.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/d1/52/8b98525ab5477410bdbaf279c5fe0a99108211d40818bb769460784c1c41/draftjs_exporter-5.1.0.tar.gz", hash = "sha256:9f44b8dcecb702540e3aab24af2fad8683aec910fe0034c12cfab5d716ac5f84", size = 33500, upload-time = "2025-02-21T17:32:57.175Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/dc/99/26d5524aaa3e89266e0af19332053aa9f8a61b1c39b29c0dc709f43fbb29/draftjs_exporter-5.1.0-py3-none-any.whl", hash = "sha256:c32932b7933b994fd5ea74c1decf47b5c41e13ba06363f5b69b76ef10137d4e9", size = 26302, upload-time = "2025-02-21T17:32:54.4Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "et-xmlfile"
|
||||
version = "2.0.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload-time = "2024-10-25T17:25:40.039Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload-time = "2024-10-25T17:25:39.051Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "filetype"
|
||||
version = "1.2.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/bb/29/745f7d30d47fe0f251d3ad3dc2978a23141917661998763bebb6da007eb1/filetype-1.2.0.tar.gz", hash = "sha256:66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb", size = 998020, upload-time = "2022-11-02T17:34:04.141Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/18/79/1b8fa1bb3568781e84c9200f951c735f3f157429f44be0495da55894d620/filetype-1.2.0-py2.py3-none-any.whl", hash = "sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25", size = 19970, upload-time = "2022-11-02T17:34:01.425Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "graphene"
|
||||
version = "3.4.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "graphql-core" },
|
||||
{ name = "graphql-relay" },
|
||||
{ name = "python-dateutil" },
|
||||
{ name = "typing-extensions" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/cc/f6/bf62ff950c317ed03e77f3f6ddd7e34aaa98fe89d79ebd660c55343d8054/graphene-3.4.3.tar.gz", hash = "sha256:2a3786948ce75fe7e078443d37f609cbe5bb36ad8d6b828740ad3b95ed1a0aaa", size = 44739, upload-time = "2024-11-09T20:44:25.757Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/66/e0/61d8e98007182e6b2aca7cf65904721fb2e4bce0192272ab9cb6f69d8812/graphene-3.4.3-py2.py3-none-any.whl", hash = "sha256:820db6289754c181007a150db1f7fff544b94142b556d12e3ebc777a7bf36c71", size = 114894, upload-time = "2024-11-09T20:44:23.851Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "graphene-django"
|
||||
version = "3.2.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "django" },
|
||||
{ name = "graphene" },
|
||||
{ name = "graphql-core" },
|
||||
{ name = "graphql-relay" },
|
||||
{ name = "promise" },
|
||||
{ name = "text-unidecode" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/6f/7a/8aef131349329dcd167578720f6364412f1728bfda14bba22c1e7b5d8365/graphene-django-3.2.3.tar.gz", hash = "sha256:d831bfe8e9a6e77e477b7854faef4addb318f386119a69ee4c57b74560f3e07d", size = 88393, upload-time = "2025-03-13T08:33:03.949Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/18/35/ab9c668222f6271a0b71efb147c46816229dbb9fa5d15ee6b025eb08d4b2/graphene_django-3.2.3-py2.py3-none-any.whl", hash = "sha256:0c673a4dad315b26b4d18eb379ad0c7027fd6a36d23a1848b7c7c09a14a9271e", size = 114959, upload-time = "2025-03-13T08:33:02.453Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "graphql-core"
|
||||
version = "3.2.6"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/c4/16/7574029da84834349b60ed71614d66ca3afe46e9bf9c7b9562102acb7d4f/graphql_core-3.2.6.tar.gz", hash = "sha256:c08eec22f9e40f0bd61d805907e3b3b1b9a320bc606e23dc145eebca07c8fbab", size = 505353, upload-time = "2025-01-26T16:36:27.374Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/ae/4f/7297663840621022bc73c22d7d9d80dbc78b4db6297f764b545cd5dd462d/graphql_core-3.2.6-py3-none-any.whl", hash = "sha256:78b016718c161a6fb20a7d97bbf107f331cd1afe53e45566c59f776ed7f0b45f", size = 203416, upload-time = "2025-01-26T16:36:24.868Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "graphql-relay"
|
||||
version = "3.2.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "graphql-core" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/d1/13/98fbf8d67552f102488ffc16c6f559ce71ea15f6294728d33928ab5ff14d/graphql-relay-3.2.0.tar.gz", hash = "sha256:1ff1c51298356e481a0be009ccdff249832ce53f30559c1338f22a0e0d17250c", size = 50027, upload-time = "2022-04-16T11:03:45.447Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/74/16/a4cf06adbc711bd364a73ce043b0b08d8fa5aae3df11b6ee4248bcdad2e0/graphql_relay-3.2.0-py3-none-any.whl", hash = "sha256:c9b22bd28b170ba1fe674c74384a8ff30a76c8e26f88ac3aa1584dd3179953e5", size = 16940, upload-time = "2022-04-16T11:03:43.895Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gunicorn"
|
||||
version = "25.1.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "packaging" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/66/13/ef67f59f6a7896fdc2c1d62b5665c5219d6b0a9a1784938eb9a28e55e128/gunicorn-25.1.0.tar.gz", hash = "sha256:1426611d959fa77e7de89f8c0f32eed6aa03ee735f98c01efba3e281b1c47616", size = 594377, upload-time = "2026-02-13T11:09:58.989Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/da/73/4ad5b1f6a2e21cf1e85afdaad2b7b1a933985e2f5d679147a1953aaa192c/gunicorn-25.1.0-py3-none-any.whl", hash = "sha256:d0b1236ccf27f72cfe14bce7caadf467186f19e865094ca84221424e839b8b8b", size = 197067, upload-time = "2026-02-13T11:09:57.146Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "3.10"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "laces"
|
||||
version = "0.1.2"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "django" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/74/9a/9192d6a74e2c6db4f705dd98f56be488e47373172c13f4916aeabc4d68b8/laces-0.1.2.tar.gz", hash = "sha256:3218e09c1889ae5cf3fc7a82f5bb63ec0c7879889b6a9760bfc42323c694b84d", size = 29264, upload-time = "2025-01-14T04:37:34.805Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/60/fe/31f76f5cb2579bdda208aa257ce5482653f22ab1bad3e128fe2f803fa2f1/laces-0.1.2-py3-none-any.whl", hash = "sha256:980cdaf9a31e883a2b8198132e2388931a4eb8814f5bfa5d8bba13ff9f657b7c", size = 22462, upload-time = "2025-01-14T04:37:30.636Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "modelsearch"
|
||||
version = "1.1.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "django" },
|
||||
{ name = "django-tasks" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/3f/49/751b8872bb9c1ec667d0d312ab90022f0426326109163ade4719466c2e4d/modelsearch-1.1.1.tar.gz", hash = "sha256:25f329c4d93572729c931f65c46cedb5cfc32d368690ebdabc223aa6205251d6", size = 87514, upload-time = "2025-11-10T14:29:57.223Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/88/4b/e3eb1f4e4f7ca4bfa9b71cea497352c1ce13261254d59cb33a36bcbff335/modelsearch-1.1.1-py3-none-any.whl", hash = "sha256:d2580790af76c3a6404f651c9d8ca8695b284551583bb8ca6ddeb17eca0cfb52", size = 106987, upload-time = "2025-11-10T14:29:55.946Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openpyxl"
|
||||
version = "3.1.5"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "et-xmlfile" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload-time = "2024-06-28T14:03:44.161Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload-time = "2024-06-28T14:03:41.161Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "packaging"
|
||||
version = "24.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", size = 148788, upload-time = "2024-06-09T23:19:24.956Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985, upload-time = "2024-06-09T23:19:21.909Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pillow"
|
||||
version = "11.3.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload-time = "2025-07-01T09:16:30.666Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload-time = "2025-07-01T09:15:17.429Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload-time = "2025-07-01T09:15:19.423Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload-time = "2025-07-03T13:10:38.404Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload-time = "2025-07-03T13:10:44.987Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload-time = "2025-07-01T09:15:21.237Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload-time = "2025-07-01T09:15:23.186Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload-time = "2025-07-01T09:15:25.1Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload-time = "2025-07-01T09:15:27.378Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload-time = "2025-07-01T09:15:29.294Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload-time = "2025-07-01T09:15:31.128Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload-time = "2025-07-01T09:15:33.328Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload-time = "2025-07-01T09:15:35.194Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload-time = "2025-07-01T09:15:37.114Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload-time = "2025-07-03T13:10:50.248Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload-time = "2025-07-03T13:10:56.432Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload-time = "2025-07-01T09:15:39.436Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload-time = "2025-07-01T09:15:41.269Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload-time = "2025-07-01T09:15:43.13Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload-time = "2025-07-01T09:15:44.937Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload-time = "2025-07-01T09:15:46.673Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload-time = "2025-07-01T09:15:48.512Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload-time = "2025-07-01T09:15:50.399Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pillow-heif"
|
||||
version = "1.1.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "pillow" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/6f/d4/597cf8c54d1ed494a46cc12e358d2f73a993b5f139402b35681f56beffde/pillow_heif-1.1.0.tar.gz", hash = "sha256:6c0c5f81a780185bbddc56e0d5537c53aa6cb5fb6018f5a60534a47c53f5455d", size = 18271020, upload-time = "2025-08-02T09:58:32.54Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/cf/93/e32cd695bca9750f6fa166f28a4c84fd8a23209f99d56712359c0b42f2e6/pillow_heif-1.1.0-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:c47f12a30a86c43f714353d0fb8478dc4da7915d678642e0b6cf6f0fd53d711e", size = 3384304, upload-time = "2025-08-02T09:57:55.997Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/62/88/3e7cda3383c165a5eebf9a0193450de2b810b7654dbc363c8c26a87be6f2/pillow_heif-1.1.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:3cc4a7a808b659f657c5144aeec8152d261d8f3c4a859eba66ef31dab26982d2", size = 2261529, upload-time = "2025-08-02T09:57:57.6Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/bf/f2/469d9ef5c64efecbc0559aa56ebe6539007f478d8aee83253037dc203567/pillow_heif-1.1.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f3b0df4a03f9c7f150d801f3644961df5af0739503d6fc5d3e0aeb540d16c3d", size = 5780880, upload-time = "2025-08-02T09:57:59.408Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/13/74/a5c13f96ba06f4ec7d85a6d343b91c2767bd5a3fd90c146cf3c59fbcb12c/pillow_heif-1.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44fcd3a171337788bf672882484725f124143d2f290cfdbf029c22c113a15c79", size = 5502822, upload-time = "2025-08-02T09:58:00.841Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/57/04/1a6a88647dbb0eec95fa8b9d5cac501f690cdd83479e7cacf56772f1189f/pillow_heif-1.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7f07f28e99ae74dffca936e24d8881f3e7e572233cf1f7bc16fe42fb08a795be", size = 6822779, upload-time = "2025-08-02T09:58:02.238Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/ae/37/8873625e681505940381cff6a4a191301f98d9a5c1499f60a2e892ad8c89/pillow_heif-1.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7a6de39cfba4037479aa5deb65a6bb0b27da0a11b95f740202f03b578ee8932f", size = 6429866, upload-time = "2025-08-02T09:58:03.637Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/6b/3c/63cbbe3a6a54e3ec925d2433bb431a4bf61695f34b5f1e689db642fb20c1/pillow_heif-1.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:514c856230995dc2f918fb12d83906885d42829e911868e23035e2d916c4c7c5", size = 5573890, upload-time = "2025-08-02T09:58:05.049Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "promise"
|
||||
version = "2.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "six" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/cf/9c/fb5d48abfe5d791cd496e4242ebcf87a4bb2e0c3dcd6e0ae68c11426a528/promise-2.3.tar.gz", hash = "sha256:dfd18337c523ba4b6a58801c164c1904a9d4d1b1747c7d5dbf45b693a49d93d0", size = 19534, upload-time = "2019-12-18T07:31:43.07Z" }
|
||||
|
||||
[[package]]
|
||||
name = "psycopg2-binary"
|
||||
version = "2.9.11"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/ac/6c/8767aaa597ba424643dc87348c6f1754dd9f48e80fdc1b9f7ca5c3a7c213/psycopg2-binary-2.9.11.tar.gz", hash = "sha256:b6aed9e096bf63f9e75edf2581aa9a7e7186d97ab5c177aa6c87797cd591236c", size = 379620, upload-time = "2025-10-10T11:14:48.041Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/64/12/93ef0098590cf51d9732b4f139533732565704f45bdc1ffa741b7c95fb54/psycopg2_binary-2.9.11-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:92e3b669236327083a2e33ccfa0d320dd01b9803b3e14dd986a4fc54aa00f4e1", size = 3756567, upload-time = "2025-10-10T11:13:11.885Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/7c/a9/9d55c614a891288f15ca4b5209b09f0f01e3124056924e17b81b9fa054cc/psycopg2_binary-2.9.11-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e0deeb03da539fa3577fcb0b3f2554a97f7e5477c246098dbb18091a4a01c16f", size = 3864755, upload-time = "2025-10-10T11:13:17.727Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/13/1e/98874ce72fd29cbde93209977b196a2edae03f8490d1bd8158e7f1daf3a0/psycopg2_binary-2.9.11-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9b52a3f9bb540a3e4ec0f6ba6d31339727b2950c9772850d6545b7eae0b9d7c5", size = 4411646, upload-time = "2025-10-10T11:13:24.432Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/5a/bd/a335ce6645334fb8d758cc358810defca14a1d19ffbc8a10bd38a2328565/psycopg2_binary-2.9.11-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:db4fd476874ccfdbb630a54426964959e58da4c61c9feba73e6094d51303d7d8", size = 4468701, upload-time = "2025-10-10T11:13:29.266Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/44/d6/c8b4f53f34e295e45709b7568bf9b9407a612ea30387d35eb9fa84f269b4/psycopg2_binary-2.9.11-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:47f212c1d3be608a12937cc131bd85502954398aaa1320cb4c14421a0ffccf4c", size = 4166293, upload-time = "2025-10-10T11:13:33.336Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/4b/e0/f8cc36eadd1b716ab36bb290618a3292e009867e5c97ce4aba908cb99644/psycopg2_binary-2.9.11-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e35b7abae2b0adab776add56111df1735ccc71406e56203515e228a8dc07089f", size = 3983184, upload-time = "2025-10-30T02:55:32.483Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/53/3e/2a8fe18a4e61cfb3417da67b6318e12691772c0696d79434184a511906dc/psycopg2_binary-2.9.11-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fcf21be3ce5f5659daefd2b3b3b6e4727b028221ddc94e6c1523425579664747", size = 3652650, upload-time = "2025-10-10T11:13:38.181Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/76/36/03801461b31b29fe58d228c24388f999fe814dfc302856e0d17f97d7c54d/psycopg2_binary-2.9.11-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:9bd81e64e8de111237737b29d68039b9c813bdf520156af36d26819c9a979e5f", size = 3298663, upload-time = "2025-10-10T11:13:44.878Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/97/77/21b0ea2e1a73aa5fa9222b2a6b8ba325c43c3a8d54272839c991f2345656/psycopg2_binary-2.9.11-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:32770a4d666fbdafab017086655bcddab791d7cb260a16679cc5a7338b64343b", size = 3044737, upload-time = "2025-10-30T02:55:35.69Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/67/69/f36abe5f118c1dca6d3726ceae164b9356985805480731ac6712a63f24f0/psycopg2_binary-2.9.11-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c3cb3a676873d7506825221045bd70e0427c905b9c8ee8d6acd70cfcbd6e576d", size = 3347643, upload-time = "2025-10-10T11:13:53.499Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/e1/36/9c0c326fe3a4227953dfb29f5d0c8ae3b8eb8c1cd2967aa569f50cb3c61f/psycopg2_binary-2.9.11-cp314-cp314-win_amd64.whl", hash = "sha256:4012c9c954dfaccd28f94e84ab9f94e12df76b4afb22331b1f0d3154893a6316", size = 2803913, upload-time = "2025-10-10T11:13:57.058Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "python-dateutil"
|
||||
version = "2.9.0.post0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "six" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "requests"
|
||||
version = "2.32.4"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "certifi" },
|
||||
{ name = "charset-normalizer" },
|
||||
{ name = "idna" },
|
||||
{ name = "urllib3" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ruff"
|
||||
version = "0.15.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/04/dc/4e6ac71b511b141cf626357a3946679abeba4cf67bc7cc5a17920f31e10d/ruff-0.15.1.tar.gz", hash = "sha256:c590fe13fb57c97141ae975c03a1aedb3d3156030cabd740d6ff0b0d601e203f", size = 4540855, upload-time = "2026-02-12T23:09:09.998Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/23/bf/e6e4324238c17f9d9120a9d60aa99a7daaa21204c07fcd84e2ef03bb5fd1/ruff-0.15.1-py3-none-linux_armv6l.whl", hash = "sha256:b101ed7cf4615bda6ffe65bdb59f964e9f4a0d3f85cbf0e54f0ab76d7b90228a", size = 10367819, upload-time = "2026-02-12T23:09:03.598Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/b3/ea/c8f89d32e7912269d38c58f3649e453ac32c528f93bb7f4219258be2e7ed/ruff-0.15.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:939c995e9277e63ea632cc8d3fae17aa758526f49a9a850d2e7e758bfef46602", size = 10798618, upload-time = "2026-02-12T23:09:22.928Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/5e/0f/1d0d88bc862624247d82c20c10d4c0f6bb2f346559d8af281674cf327f15/ruff-0.15.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:1d83466455fdefe60b8d9c8df81d3c1bbb2115cede53549d3b522ce2bc703899", size = 10148518, upload-time = "2026-02-12T23:08:58.339Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/f5/c8/291c49cefaa4a9248e986256df2ade7add79388fe179e0691be06fae6f37/ruff-0.15.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9457e3c3291024866222b96108ab2d8265b477e5b1534c7ddb1810904858d16", size = 10518811, upload-time = "2026-02-12T23:09:31.865Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c3/1a/f5707440e5ae43ffa5365cac8bbb91e9665f4a883f560893829cf16a606b/ruff-0.15.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:92c92b003e9d4f7fbd33b1867bb15a1b785b1735069108dfc23821ba045b29bc", size = 10196169, upload-time = "2026-02-12T23:09:17.306Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2a/ff/26ddc8c4da04c8fd3ee65a89c9fb99eaa5c30394269d424461467be2271f/ruff-0.15.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fe5c41ab43e3a06778844c586251eb5a510f67125427625f9eb2b9526535779", size = 10990491, upload-time = "2026-02-12T23:09:25.503Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/fc/00/50920cb385b89413f7cdb4bb9bc8fc59c1b0f30028d8bccc294189a54955/ruff-0.15.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66a6dd6df4d80dc382c6484f8ce1bcceb55c32e9f27a8b94c32f6c7331bf14fb", size = 11843280, upload-time = "2026-02-12T23:09:19.88Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/5d/6d/2f5cad8380caf5632a15460c323ae326f1e1a2b5b90a6ee7519017a017ca/ruff-0.15.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a4a42cbb8af0bda9bcd7606b064d7c0bc311a88d141d02f78920be6acb5aa83", size = 11274336, upload-time = "2026-02-12T23:09:14.907Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a3/1d/5f56cae1d6c40b8a318513599b35ea4b075d7dc1cd1d04449578c29d1d75/ruff-0.15.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ab064052c31dddada35079901592dfba2e05f5b1e43af3954aafcbc1096a5b2", size = 11137288, upload-time = "2026-02-12T23:09:07.475Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/cd/20/6f8d7d8f768c93b0382b33b9306b3b999918816da46537d5a61635514635/ruff-0.15.1-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:5631c940fe9fe91f817a4c2ea4e81f47bee3ca4aa646134a24374f3c19ad9454", size = 11070681, upload-time = "2026-02-12T23:08:55.43Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/9a/67/d640ac76069f64cdea59dba02af2e00b1fa30e2103c7f8d049c0cff4cafd/ruff-0.15.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:68138a4ba184b4691ccdc39f7795c66b3c68160c586519e7e8444cf5a53e1b4c", size = 10486401, upload-time = "2026-02-12T23:09:27.927Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/65/3d/e1429f64a3ff89297497916b88c32a5cc88eeca7e9c787072d0e7f1d3e1e/ruff-0.15.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:518f9af03bfc33c03bdb4cb63fabc935341bb7f54af500f92ac309ecfbba6330", size = 10197452, upload-time = "2026-02-12T23:09:12.147Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/78/83/e2c3bade17dad63bf1e1c2ffaf11490603b760be149e1419b07049b36ef2/ruff-0.15.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:da79f4d6a826caaea95de0237a67e33b81e6ec2e25fc7e1993a4015dffca7c61", size = 10693900, upload-time = "2026-02-12T23:09:34.418Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a1/27/fdc0e11a813e6338e0706e8b39bb7a1d61ea5b36873b351acee7e524a72a/ruff-0.15.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:3dd86dccb83cd7d4dcfac303ffc277e6048600dfc22e38158afa208e8bf94a1f", size = 11227302, upload-time = "2026-02-12T23:09:36.536Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/f6/58/ac864a75067dcbd3b95be5ab4eb2b601d7fbc3d3d736a27e391a4f92a5c1/ruff-0.15.1-py3-none-win32.whl", hash = "sha256:660975d9cb49b5d5278b12b03bb9951d554543a90b74ed5d366b20e2c57c2098", size = 10462555, upload-time = "2026-02-12T23:09:29.899Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/e0/5e/d4ccc8a27ecdb78116feac4935dfc39d1304536f4296168f91ed3ec00cd2/ruff-0.15.1-py3-none-win_amd64.whl", hash = "sha256:c820fef9dd5d4172a6570e5721704a96c6679b80cf7be41659ed439653f62336", size = 11599956, upload-time = "2026-02-12T23:09:01.157Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2a/07/5bda6a85b220c64c65686bc85bd0bbb23b29c62b3a9f9433fa55f17cda93/ruff-0.15.1-py3-none-win_arm64.whl", hash = "sha256:5ff7d5f0f88567850f45081fac8f4ec212be8d0b963e385c3f7d0d2eb4899416", size = 10874604, upload-time = "2026-02-12T23:09:05.515Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "six"
|
||||
version = "1.17.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "soupsieve"
|
||||
version = "2.7"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlparse"
|
||||
version = "0.5.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/e5/40/edede8dd6977b0d3da179a342c198ed100dd2aba4be081861ee5911e4da4/sqlparse-0.5.3.tar.gz", hash = "sha256:09f67787f56a0b16ecdbde1bfc7f5d9c3371ca683cfeaa8e6ff60b4807ec9272", size = 84999, upload-time = "2024-12-10T12:05:30.728Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/a9/5c/bfd6bd0bf979426d405cc6e71eceb8701b148b16c21d2dc3c261efc61c7b/sqlparse-0.5.3-py3-none-any.whl", hash = "sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca", size = 44415, upload-time = "2024-12-10T12:05:27.824Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "telepath"
|
||||
version = "0.3.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/65/58/5de8765687d6f9dfcbb72c89251036c3b901126404f872b936b13377a3fe/telepath-0.3.1.tar.gz", hash = "sha256:925c0609e0a8a6488ec4a55b19d485882cf72223b2b19fe2359a50fddd813c9c", size = 11622, upload-time = "2023-06-12T12:07:42.559Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/5f/50/0f246d316f223b14ba5a88fbe2ff0b480d4a6064b866d48008dd57fd5930/telepath-0.3.1-py38-none-any.whl", hash = "sha256:c280aa8e77ad71ce80e96500a4e4d4a32f35b7e0b52e896bb5fde9a5bcf0699a", size = 10926, upload-time = "2023-06-12T12:07:41.443Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "text-unidecode"
|
||||
version = "1.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload-time = "2019-08-30T21:36:45.405Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload-time = "2019-08-30T21:37:03.543Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "typing-extensions"
|
||||
version = "4.14.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload-time = "2025-07-04T13:28:34.16Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tzdata"
|
||||
version = "2025.2"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "urllib3"
|
||||
version = "2.5.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wagtail"
|
||||
version = "7.3.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "anyascii" },
|
||||
{ name = "beautifulsoup4" },
|
||||
{ name = "django" },
|
||||
{ name = "django-filter" },
|
||||
{ name = "django-modelcluster" },
|
||||
{ name = "django-permissionedforms" },
|
||||
{ name = "django-taggit" },
|
||||
{ name = "django-tasks" },
|
||||
{ name = "django-treebeard" },
|
||||
{ name = "djangorestframework" },
|
||||
{ name = "draftjs-exporter" },
|
||||
{ name = "laces" },
|
||||
{ name = "modelsearch" },
|
||||
{ name = "openpyxl" },
|
||||
{ name = "pillow" },
|
||||
{ name = "requests" },
|
||||
{ name = "telepath" },
|
||||
{ name = "willow", extra = ["heif"] },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/4e/f9/e28a1b87ea61c68b74990c9f5c8cb11da9a689e07c8b769acc89121f8523/wagtail-7.3.1.tar.gz", hash = "sha256:2ce131d9a4e7d55fdb5b592d320a758a189174b2cc3966b70a34a1b3dc56f449", size = 6855119, upload-time = "2026-03-03T15:54:48.523Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/bb/0e/5efc903966b966df2261a66cce8cb88909e4ade86f1173a156aadbbd1a06/wagtail-7.3.1-py3-none-any.whl", hash = "sha256:eab131e15ab9edc7ed24143d44271e92af79239e105bc3e173d26c95d2b489b3", size = 9479191, upload-time = "2026-03-03T15:54:42.644Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wagtail-grapple"
|
||||
version = "0.29.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "graphene-django" },
|
||||
{ name = "wagtail" },
|
||||
{ name = "wagtail-headless-preview" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/c0/66/abe1b5ad7c335ff3969190c38ac259285b9f107d8273a18cc8c0ba0d36c5/wagtail_grapple-0.29.0.tar.gz", hash = "sha256:56b023dcfdce72532fba00610507b2705bf3a0be068946275c7658314de5431a", size = 39112, upload-time = "2025-07-02T10:25:19.811Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/48/ae/a7a26e331f9207ed864ebea292aac6af1e19a221391d2f833cd4fbe70f68/wagtail_grapple-0.29.0-py3-none-any.whl", hash = "sha256:d9c8c76bd9ba8c52ba1796b86043360d5ab083b24db6caaf2b1e6e41a7a2503e", size = 49124, upload-time = "2025-07-02T10:25:18.345Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wagtail-headless-preview"
|
||||
version = "0.8.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "wagtail" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/b4/28/87fda34fd89999bee03519a614ddca608def6d07b69d93365833c434b9c5/wagtail_headless_preview-0.8.0.tar.gz", hash = "sha256:581d8419cd1ef1f7de88235445e9695e5591d46259283d56bfe814e8620fa1d5", size = 13957, upload-time = "2024-02-23T15:53:44.986Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/62/57/bb6c10a11f7a0ec0d8e10ec99b4c7b5a6036e8846e61d145966b6c72113d/wagtail_headless_preview-0.8.0-py3-none-any.whl", hash = "sha256:91b305c36573490856e212f9e5645ada81f72ad37f1bb00e6feddc5537252358", size = 12301, upload-time = "2024-02-23T15:53:43.904Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "whitenoise"
|
||||
version = "6.12.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/cb/2a/55b3f3a4ec326cd077c1c3defeee656b9298372a69229134d930151acd01/whitenoise-6.12.0.tar.gz", hash = "sha256:f723ebb76a112e98816ff80fcea0a6c9b8ecde835f8ddda25df7a30a3c2db6ad", size = 26841, upload-time = "2026-02-27T00:05:42.028Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/db/eb/d5583a11486211f3ebd4b385545ae787f32363d453c19fffd81106c9c138/whitenoise-6.12.0-py3-none-any.whl", hash = "sha256:fc5e8c572e33ebf24795b47b6a7da8da3c00cff2349f5b04c02f28d0cc5a3cc2", size = 20302, upload-time = "2026-02-27T00:05:40.086Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "willow"
|
||||
version = "1.11.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "defusedxml" },
|
||||
{ name = "filetype" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/a3/bd/2a383be24c3e47423aa9b0aa5b4ca818ef193506b58800dd51e1b89d7bb3/willow-1.11.0.tar.gz", hash = "sha256:70292b2d0cd2d5bb4076f0b3d61308aeaa0b225f3970d00752f08a8fd386c3d1", size = 113827, upload-time = "2025-07-16T08:46:26.939Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/c1/05/b3f1b443c31ad871c48e19ea2be189681c2df4ccf594b1dd83d6775c032b/willow-1.11.0-py3-none-any.whl", hash = "sha256:0a4388dbf18726eef8f27449659047689c39b7023045ca5a8a75410d3864ee6f", size = 119459, upload-time = "2025-07-16T08:46:25.596Z" },
|
||||
]
|
||||
|
||||
[package.optional-dependencies]
|
||||
heif = [
|
||||
{ name = "pillow-heif" },
|
||||
]
|
||||
@@ -0,0 +1,731 @@
|
||||
# Generated by Django 6.0.3 on 2026-04-15 20:21
|
||||
|
||||
import wagtail.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("venues", "0024_venuepage_show_in_overview_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="venueindex",
|
||||
name="body",
|
||||
field=wagtail.fields.StreamField(
|
||||
[
|
||||
("paragraph", 0),
|
||||
("image", 4),
|
||||
("image_slider", 8),
|
||||
("horizontal_rule", 10),
|
||||
("featured", 18),
|
||||
("page_section_navigation", 19),
|
||||
("accordion", 23),
|
||||
("fact_box", 26),
|
||||
("photo_sphere", 29),
|
||||
("embed", 30),
|
||||
("raw_html", 31),
|
||||
],
|
||||
block_lookup={
|
||||
0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rik tekst"}),
|
||||
1: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
2: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("fullwidth", "Fullbredde"),
|
||||
("bleed", "Utfallende"),
|
||||
("original", "Uendret størrelse"),
|
||||
],
|
||||
"icon": "cup",
|
||||
"label": "Bildeformat",
|
||||
},
|
||||
),
|
||||
3: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Bildetekst", "max_length": 512, "required": False},
|
||||
),
|
||||
4: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{},
|
||||
),
|
||||
5: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tekst", "max_length": 512, "required": False},
|
||||
),
|
||||
6: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("text", 5)]],
|
||||
{},
|
||||
),
|
||||
7: (
|
||||
"wagtail.blocks.ListBlock",
|
||||
(6,),
|
||||
{"label": "Bilder", "min_num": 1},
|
||||
),
|
||||
8: ("wagtail.blocks.StructBlock", [[("images", 7)]], {}),
|
||||
9: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Farge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
10: ("wagtail.blocks.StructBlock", [[("color", 9)]], {}),
|
||||
11: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tittel", "max_length": 64, "required": True},
|
||||
),
|
||||
12: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": ["bold", "italic", "link"],
|
||||
"label": "Tekst",
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
13: (
|
||||
"wagtail.blocks.PageChooserBlock",
|
||||
(),
|
||||
{"header": "Fremhevet side", "required": True},
|
||||
),
|
||||
14: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"default": "Les mer",
|
||||
"help_text": 'Lenketeksten som tar deg videre til siden. Tips: Ikke start med "Trykk her"',
|
||||
"label": "Lenketekst",
|
||||
"max_length": 64,
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
15: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
},
|
||||
),
|
||||
16: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [("left", "Venstre"), ("right", "Høyre")],
|
||||
"label": "Bildeplassering",
|
||||
},
|
||||
),
|
||||
17: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{
|
||||
"header": "Overstyr bilde",
|
||||
"help_text": "Bildet som er tilknyttet undersiden du vil fremheve, vil automatisk brukes. Om det mangler eller du vil overstyre hvilket bilde som et brukes, kan du velge et her.",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
18: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[
|
||||
[
|
||||
("title", 11),
|
||||
("text", 12),
|
||||
("featured_page", 13),
|
||||
("link_text", 14),
|
||||
("background_color", 15),
|
||||
("image_position", 16),
|
||||
("featured_image_override", 17),
|
||||
]
|
||||
],
|
||||
{},
|
||||
),
|
||||
19: ("dnscms.blocks.PageSectionNavigationBlock", (), {}),
|
||||
20: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Overskrift", "max_length": 64, "required": True},
|
||||
),
|
||||
21: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
22: (
|
||||
"wagtail.blocks.StreamBlock",
|
||||
[[("paragraph", 0), ("image", 21)]],
|
||||
{},
|
||||
),
|
||||
23: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("heading", 20), ("body", 22)]],
|
||||
{},
|
||||
),
|
||||
24: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
25: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": [
|
||||
"bold",
|
||||
"italic",
|
||||
"link",
|
||||
"ol",
|
||||
"ul",
|
||||
"h2",
|
||||
"h3",
|
||||
],
|
||||
"label": "Innhold",
|
||||
},
|
||||
),
|
||||
26: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("background_color", 24), ("body", 25)]],
|
||||
{},
|
||||
),
|
||||
27: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "360°-bilde"},
|
||||
),
|
||||
28: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"help_text": "Beskrivende tittel på bildet (vises også til skjermlesere)",
|
||||
"label": "Tittel",
|
||||
"max_length": 256,
|
||||
},
|
||||
),
|
||||
29: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 27), ("title", 28)]],
|
||||
{},
|
||||
),
|
||||
30: ("wagtail.embeds.blocks.EmbedBlock", (), {}),
|
||||
31: ("wagtail.blocks.RawHTMLBlock", (), {}),
|
||||
},
|
||||
default=[("paragraph", "")],
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="venuepage",
|
||||
name="body",
|
||||
field=wagtail.fields.StreamField(
|
||||
[
|
||||
("paragraph", 0),
|
||||
("image", 4),
|
||||
("image_slider", 8),
|
||||
("horizontal_rule", 10),
|
||||
("featured", 18),
|
||||
("page_section_navigation", 19),
|
||||
("accordion", 23),
|
||||
("fact_box", 26),
|
||||
("photo_sphere", 29),
|
||||
("embed", 30),
|
||||
("raw_html", 31),
|
||||
],
|
||||
block_lookup={
|
||||
0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rik tekst"}),
|
||||
1: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
2: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("fullwidth", "Fullbredde"),
|
||||
("bleed", "Utfallende"),
|
||||
("original", "Uendret størrelse"),
|
||||
],
|
||||
"icon": "cup",
|
||||
"label": "Bildeformat",
|
||||
},
|
||||
),
|
||||
3: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Bildetekst", "max_length": 512, "required": False},
|
||||
),
|
||||
4: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{},
|
||||
),
|
||||
5: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tekst", "max_length": 512, "required": False},
|
||||
),
|
||||
6: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("text", 5)]],
|
||||
{},
|
||||
),
|
||||
7: (
|
||||
"wagtail.blocks.ListBlock",
|
||||
(6,),
|
||||
{"label": "Bilder", "min_num": 1},
|
||||
),
|
||||
8: ("wagtail.blocks.StructBlock", [[("images", 7)]], {}),
|
||||
9: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Farge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
10: ("wagtail.blocks.StructBlock", [[("color", 9)]], {}),
|
||||
11: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tittel", "max_length": 64, "required": True},
|
||||
),
|
||||
12: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": ["bold", "italic", "link"],
|
||||
"label": "Tekst",
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
13: (
|
||||
"wagtail.blocks.PageChooserBlock",
|
||||
(),
|
||||
{"header": "Fremhevet side", "required": True},
|
||||
),
|
||||
14: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"default": "Les mer",
|
||||
"help_text": 'Lenketeksten som tar deg videre til siden. Tips: Ikke start med "Trykk her"',
|
||||
"label": "Lenketekst",
|
||||
"max_length": 64,
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
15: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
},
|
||||
),
|
||||
16: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [("left", "Venstre"), ("right", "Høyre")],
|
||||
"label": "Bildeplassering",
|
||||
},
|
||||
),
|
||||
17: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{
|
||||
"header": "Overstyr bilde",
|
||||
"help_text": "Bildet som er tilknyttet undersiden du vil fremheve, vil automatisk brukes. Om det mangler eller du vil overstyre hvilket bilde som et brukes, kan du velge et her.",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
18: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[
|
||||
[
|
||||
("title", 11),
|
||||
("text", 12),
|
||||
("featured_page", 13),
|
||||
("link_text", 14),
|
||||
("background_color", 15),
|
||||
("image_position", 16),
|
||||
("featured_image_override", 17),
|
||||
]
|
||||
],
|
||||
{},
|
||||
),
|
||||
19: ("dnscms.blocks.PageSectionNavigationBlock", (), {}),
|
||||
20: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Overskrift", "max_length": 64, "required": True},
|
||||
),
|
||||
21: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
22: (
|
||||
"wagtail.blocks.StreamBlock",
|
||||
[[("paragraph", 0), ("image", 21)]],
|
||||
{},
|
||||
),
|
||||
23: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("heading", 20), ("body", 22)]],
|
||||
{},
|
||||
),
|
||||
24: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
25: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": [
|
||||
"bold",
|
||||
"italic",
|
||||
"link",
|
||||
"ol",
|
||||
"ul",
|
||||
"h2",
|
||||
"h3",
|
||||
],
|
||||
"label": "Innhold",
|
||||
},
|
||||
),
|
||||
26: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("background_color", 24), ("body", 25)]],
|
||||
{},
|
||||
),
|
||||
27: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "360°-bilde"},
|
||||
),
|
||||
28: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"help_text": "Beskrivende tittel på bildet (vises også til skjermlesere)",
|
||||
"label": "Tittel",
|
||||
"max_length": 256,
|
||||
},
|
||||
),
|
||||
29: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 27), ("title", 28)]],
|
||||
{},
|
||||
),
|
||||
30: ("wagtail.embeds.blocks.EmbedBlock", (), {}),
|
||||
31: ("wagtail.blocks.RawHTMLBlock", (), {}),
|
||||
},
|
||||
default=[("paragraph", "")],
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="venuerentalindex",
|
||||
name="body",
|
||||
field=wagtail.fields.StreamField(
|
||||
[
|
||||
("paragraph", 0),
|
||||
("image", 4),
|
||||
("image_slider", 8),
|
||||
("horizontal_rule", 10),
|
||||
("featured", 18),
|
||||
("page_section_navigation", 19),
|
||||
("accordion", 23),
|
||||
("fact_box", 26),
|
||||
("photo_sphere", 29),
|
||||
("embed", 30),
|
||||
("raw_html", 31),
|
||||
],
|
||||
block_lookup={
|
||||
0: ("wagtail.blocks.RichTextBlock", (), {"label": "Rik tekst"}),
|
||||
1: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
2: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("fullwidth", "Fullbredde"),
|
||||
("bleed", "Utfallende"),
|
||||
("original", "Uendret størrelse"),
|
||||
],
|
||||
"icon": "cup",
|
||||
"label": "Bildeformat",
|
||||
},
|
||||
),
|
||||
3: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Bildetekst", "max_length": 512, "required": False},
|
||||
),
|
||||
4: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{},
|
||||
),
|
||||
5: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tekst", "max_length": 512, "required": False},
|
||||
),
|
||||
6: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("text", 5)]],
|
||||
{},
|
||||
),
|
||||
7: (
|
||||
"wagtail.blocks.ListBlock",
|
||||
(6,),
|
||||
{"label": "Bilder", "min_num": 1},
|
||||
),
|
||||
8: ("wagtail.blocks.StructBlock", [[("images", 7)]], {}),
|
||||
9: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Farge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
10: ("wagtail.blocks.StructBlock", [[("color", 9)]], {}),
|
||||
11: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Tittel", "max_length": 64, "required": True},
|
||||
),
|
||||
12: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": ["bold", "italic", "link"],
|
||||
"label": "Tekst",
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
13: (
|
||||
"wagtail.blocks.PageChooserBlock",
|
||||
(),
|
||||
{"header": "Fremhevet side", "required": True},
|
||||
),
|
||||
14: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"default": "Les mer",
|
||||
"help_text": 'Lenketeksten som tar deg videre til siden. Tips: Ikke start med "Trykk her"',
|
||||
"label": "Lenketekst",
|
||||
"max_length": 64,
|
||||
"required": True,
|
||||
},
|
||||
),
|
||||
15: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
},
|
||||
),
|
||||
16: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [("left", "Venstre"), ("right", "Høyre")],
|
||||
"label": "Bildeplassering",
|
||||
},
|
||||
),
|
||||
17: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{
|
||||
"header": "Overstyr bilde",
|
||||
"help_text": "Bildet som er tilknyttet undersiden du vil fremheve, vil automatisk brukes. Om det mangler eller du vil overstyre hvilket bilde som et brukes, kan du velge et her.",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
18: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[
|
||||
[
|
||||
("title", 11),
|
||||
("text", 12),
|
||||
("featured_page", 13),
|
||||
("link_text", 14),
|
||||
("background_color", 15),
|
||||
("image_position", 16),
|
||||
("featured_image_override", 17),
|
||||
]
|
||||
],
|
||||
{},
|
||||
),
|
||||
19: ("dnscms.blocks.PageSectionNavigationBlock", (), {}),
|
||||
20: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{"label": "Overskrift", "max_length": 64, "required": True},
|
||||
),
|
||||
21: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 1), ("image_format", 2), ("text", 3)]],
|
||||
{"label": "Bilde"},
|
||||
),
|
||||
22: (
|
||||
"wagtail.blocks.StreamBlock",
|
||||
[[("paragraph", 0), ("image", 21)]],
|
||||
{},
|
||||
),
|
||||
23: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("heading", 20), ("body", 22)]],
|
||||
{},
|
||||
),
|
||||
24: (
|
||||
"wagtail.blocks.ChoiceBlock",
|
||||
[],
|
||||
{
|
||||
"choices": [
|
||||
("betongGray", "Betonggrå"),
|
||||
("deepBrick", "Dyp tegl"),
|
||||
("neufPink", "Griserosa"),
|
||||
("goldenOrange", "Gyllen oransje"),
|
||||
("goldenBeige", "Gyllen beige"),
|
||||
("chateauBlue", "Slottsblå"),
|
||||
],
|
||||
"label": "Bakgrunnsfarge",
|
||||
"required": False,
|
||||
},
|
||||
),
|
||||
25: (
|
||||
"wagtail.blocks.RichTextBlock",
|
||||
(),
|
||||
{
|
||||
"features": [
|
||||
"bold",
|
||||
"italic",
|
||||
"link",
|
||||
"ol",
|
||||
"ul",
|
||||
"h2",
|
||||
"h3",
|
||||
],
|
||||
"label": "Innhold",
|
||||
},
|
||||
),
|
||||
26: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("background_color", 24), ("body", 25)]],
|
||||
{},
|
||||
),
|
||||
27: (
|
||||
"wagtail.images.blocks.ImageChooserBlock",
|
||||
(),
|
||||
{"label": "360°-bilde"},
|
||||
),
|
||||
28: (
|
||||
"wagtail.blocks.CharBlock",
|
||||
(),
|
||||
{
|
||||
"help_text": "Beskrivende tittel på bildet (vises også til skjermlesere)",
|
||||
"label": "Tittel",
|
||||
"max_length": 256,
|
||||
},
|
||||
),
|
||||
29: (
|
||||
"wagtail.blocks.StructBlock",
|
||||
[[("image", 27), ("title", 28)]],
|
||||
{},
|
||||
),
|
||||
30: ("wagtail.embeds.blocks.EmbedBlock", (), {}),
|
||||
31: ("wagtail.blocks.RawHTMLBlock", (), {}),
|
||||
},
|
||||
default=[("paragraph", "")],
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -11,10 +11,10 @@ from wagtail.admin.panels import FieldPanel, FieldRowPanel, MultiFieldPanel
|
||||
from wagtail.fields import RichTextField, StreamField
|
||||
from wagtail.models import Page
|
||||
from wagtail.search import index
|
||||
from wagtail_wordpress_import.models import WPImportedPageMixin
|
||||
|
||||
from dnscms.blocks import ImageSliderBlock
|
||||
from dnscms.fields import CommonStreamField
|
||||
from dnscms.wordpress.models import WPImportedPageMixin
|
||||
|
||||
|
||||
@register_singular_query_field("venueIndex")
|
||||
@@ -178,8 +178,6 @@ class VenuePage(WPImportedPageMixin, Page):
|
||||
index.SearchField("body"),
|
||||
]
|
||||
|
||||
settings_panels = Page.settings_panels + WPImportedPageMixin.wordpress_panels
|
||||
|
||||
def import_wordpress_data(self, data):
|
||||
import html
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
v20.12.2
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# Based on https://github.com/vercel/next.js/tree/canary/examples/with-docker
|
||||
|
||||
FROM node:22-alpine AS base
|
||||
FROM node:24-alpine AS base
|
||||
|
||||
# Install dependencies only when needed
|
||||
FROM base AS deps
|
||||
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
[tools]
|
||||
node = "22"
|
||||
node = "24"
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
/** @type {import('next').NextConfig} */
|
||||
import path from "path";
|
||||
import { fileURLToPath } from "url";
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
|
||||
const nextConfig = {
|
||||
output: "standalone",
|
||||
images: {
|
||||
@@ -13,6 +17,9 @@ const nextConfig = {
|
||||
},
|
||||
],
|
||||
},
|
||||
turbopack: {
|
||||
root: __dirname,
|
||||
},
|
||||
};
|
||||
|
||||
export default nextConfig;
|
||||
|
||||
Generated
+2443
-1735
File diff suppressed because it is too large
Load Diff
+26
-20
@@ -10,31 +10,37 @@
|
||||
"codegen": "graphql-codegen"
|
||||
},
|
||||
"dependencies": {
|
||||
"@graphql-codegen/cli": "^5.0.5",
|
||||
"@graphql-codegen/client-preset": "^4.8.0",
|
||||
"@parcel/watcher": "^2.5.1",
|
||||
"@sindresorhus/slugify": "^2.2.1",
|
||||
"@urql/next": "^1.1.5",
|
||||
"@graphql-codegen/cli": "^6.1.2",
|
||||
"@graphql-codegen/client-preset": "^5.2.3",
|
||||
"@parcel/watcher": "^2.5.6",
|
||||
"@sindresorhus/slugify": "^3.0.0",
|
||||
"@urql/next": "^2.0.0",
|
||||
"date-fns": "^4.1.0",
|
||||
"date-fns-tz": "^3.2.0",
|
||||
"graphql": "^16.11.0",
|
||||
"next": "^15.3.1",
|
||||
"nuqs": "^2.4.3",
|
||||
"react": "^19.1.0",
|
||||
"react-dom": "^19.1.0",
|
||||
"react-intersection-observer": "^9.16.0",
|
||||
"sass": "^1.87.0",
|
||||
"sharp": "^0.34.1",
|
||||
"swiper": "^11.2.6",
|
||||
"urql": "^4.2.2",
|
||||
"use-debounce": "^10.0.4"
|
||||
"graphql": "^16.13.1",
|
||||
"next": "^16.1.6",
|
||||
"nuqs": "^2.8.9",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
"react-intersection-observer": "^10.0.3",
|
||||
"react-photo-sphere-viewer": "^6.2.3",
|
||||
"sass": "^1.97.3",
|
||||
"sharp": "^0.34.5",
|
||||
"swiper": "^12.1.2",
|
||||
"urql": "^5.0.1",
|
||||
"use-debounce": "^10.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22",
|
||||
"@types/react": "^19",
|
||||
"@types/react-dom": "^19",
|
||||
"@types/node": "^24",
|
||||
"@types/react": "19.2.14",
|
||||
"@types/react-dom": "19.2.3",
|
||||
"baseline-browser-mapping": "^2.10.0",
|
||||
"eslint": "^9",
|
||||
"eslint-config-next": "^15.3.1",
|
||||
"eslint-config-next": "16.1.6",
|
||||
"typescript": "^5"
|
||||
},
|
||||
"overrides": {
|
||||
"@types/react": "19.2.14",
|
||||
"@types/react-dom": "19.2.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import { HomeFragment } from "@/gql/graphql";
|
||||
import { getClient } from "@/app/client";
|
||||
import { FeaturedEvents } from "@/components/events/FeaturedEvents";
|
||||
import { NewsList } from "@/components/news/NewsList";
|
||||
import { Newsletter } from "@/components/general/Newsletter";
|
||||
import { UpcomingEvents } from "@/components/events/UpcomingEvents";
|
||||
import { Pig } from "@/components/general/Pig";
|
||||
import Link from "next/link";
|
||||
@@ -58,6 +59,7 @@ export default async function Home() {
|
||||
];
|
||||
|
||||
return (
|
||||
<>
|
||||
<main className="site-main index" id="main">
|
||||
<FeaturedEvents events={featuredEvents} />
|
||||
<UpcomingEvents events={events} />
|
||||
@@ -89,5 +91,7 @@ export default async function Home() {
|
||||
</div>
|
||||
<NewsList heading="Siste nytt" featured news={news} />
|
||||
</main>
|
||||
<Newsletter />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
import { Metadata, ResolvingMetadata } from "next";
|
||||
import { graphql } from "@/gql";
|
||||
import { SponsorsPage, SponsorBlock } from "@/gql/graphql";
|
||||
import { getClient } from "@/app/client";
|
||||
import { PageHeader } from "@/components/general/PageHeader";
|
||||
import { PageContent } from "@/components/general/PageContent";
|
||||
import { getSeoMetadata } from "@/lib/seo";
|
||||
import { SponsorList } from "@/components/sponsor/SponsorList";
|
||||
|
||||
const sponsorsPageQuery = graphql(`
|
||||
query sponsors {
|
||||
page: sponsorsPage {
|
||||
... on SponsorsPage {
|
||||
...SponsorsPage
|
||||
}
|
||||
}
|
||||
}
|
||||
`);
|
||||
|
||||
export async function generateMetadata(
|
||||
{ params }: { params: Promise<{}> },
|
||||
parent: ResolvingMetadata
|
||||
): Promise<Metadata | null> {
|
||||
const { data, error } = await getClient().query(sponsorsPageQuery, {});
|
||||
|
||||
if (error) {
|
||||
throw new Error(error.message);
|
||||
}
|
||||
if (!data?.page) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const index = data.page as SponsorsPage;
|
||||
const metadata = await getSeoMetadata(index, parent);
|
||||
return metadata;
|
||||
}
|
||||
|
||||
const SponsorsPageFragmentDefinition = graphql(`
|
||||
fragment SponsorsPage on SponsorsPage {
|
||||
... on SponsorsPage {
|
||||
title
|
||||
seoTitle
|
||||
searchDescription
|
||||
lead
|
||||
body {
|
||||
...Blocks
|
||||
}
|
||||
sponsors {
|
||||
... on SponsorBlock {
|
||||
id
|
||||
name
|
||||
logo {
|
||||
...Image
|
||||
}
|
||||
text
|
||||
website
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`);
|
||||
|
||||
export default async function Page() {
|
||||
const { data, error } = await getClient().query(sponsorsPageQuery, {});
|
||||
|
||||
if (error) {
|
||||
throw new Error(error.message);
|
||||
}
|
||||
if (!data?.page) {
|
||||
throw new Error("Failed to render /sponsorer");
|
||||
}
|
||||
|
||||
const page = data.page as SponsorsPage;
|
||||
|
||||
return (
|
||||
<main className="site-main" id="main">
|
||||
<PageHeader heading={page.title} lead={page.lead} />
|
||||
{page.body && <PageContent blocks={page.body} />}
|
||||
<SponsorList sponsors={page.sponsors as SponsorBlock[]} />
|
||||
</main>
|
||||
);
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import { FeaturedBlock } from "./FeaturedBlock";
|
||||
import { AccordionBlock } from "./AccordionBlock";
|
||||
import { EmbedBlock } from "./EmbedBlock";
|
||||
import { FactBoxBlock } from "./FactBoxBlock";
|
||||
import { PhotoSphereBlock } from "./PhotoSphereBlock";
|
||||
import { PageSectionBlock, PageSectionNavigationBlock } from "./PageSection";
|
||||
import { ContactSectionBlock, ContactSubsectionBlock } from "./ContactSection";
|
||||
import { ContactListBlock } from "./ContactListBlock";
|
||||
@@ -21,46 +22,49 @@ export const Blocks = ({ blocks, pageContent }: { blocks: any, pageContent?: boo
|
||||
return blocks.map((block: any) => {
|
||||
switch (block?.blockType) {
|
||||
case "RichTextBlock":
|
||||
return <RichTextBlock block={block} />;
|
||||
return <RichTextBlock key={block.id} block={block} />;
|
||||
break;
|
||||
case "ImageWithTextBlock":
|
||||
return <ImageWithTextBlock block={block} />;
|
||||
return <ImageWithTextBlock key={block.id} block={block} />;
|
||||
break;
|
||||
case "EmbedBlock":
|
||||
return <EmbedBlock block={block} />;
|
||||
return <EmbedBlock key={block.id} block={block} />;
|
||||
break;
|
||||
case "ImageSliderBlock":
|
||||
return <ImageSliderBlock block={block} pageContent />;
|
||||
return <ImageSliderBlock key={block.id} block={block} pageContent />;
|
||||
break;
|
||||
case "HorizontalRuleBlock":
|
||||
return <HorizontalRuleBlock block={block} />;
|
||||
return <HorizontalRuleBlock key={block.id} block={block} />;
|
||||
break;
|
||||
case "FeaturedBlock":
|
||||
return <FeaturedBlock block={block} />;
|
||||
return <FeaturedBlock key={block.id} block={block} />;
|
||||
break;
|
||||
case "AccordionBlock":
|
||||
return <AccordionBlock block={block} />;
|
||||
return <AccordionBlock key={block.id} block={block} />;
|
||||
break;
|
||||
case "FactBoxBlock":
|
||||
return <FactBoxBlock block={block} />;
|
||||
return <FactBoxBlock key={block.id} block={block} />;
|
||||
break;
|
||||
case "PhotoSphereBlock":
|
||||
return <PhotoSphereBlock key={block.id} block={block} />;
|
||||
break;
|
||||
case "PageSectionBlock":
|
||||
return <PageSectionBlock block={block} />;
|
||||
return <PageSectionBlock key={block.id} block={block} />;
|
||||
break;
|
||||
case "PageSectionNavigationBlock":
|
||||
return <PageSectionNavigationBlock sections={sections} />;
|
||||
break;
|
||||
case "ContactSectionBlock":
|
||||
return <ContactSectionBlock block={block} />;
|
||||
return <ContactSectionBlock key={block.id} block={block} />;
|
||||
break;
|
||||
case "ContactSubsectionBlock":
|
||||
return <ContactSubsectionBlock block={block} />;
|
||||
return <ContactSubsectionBlock key={block.id} block={block} />;
|
||||
break;
|
||||
case "ContactListBlock":
|
||||
return <ContactListBlock block={block} />;
|
||||
return <ContactListBlock key={block.id} block={block} />;
|
||||
break;
|
||||
case "ContactEntityBlock":
|
||||
return <ContactEntityBlock block={block} />;
|
||||
return <ContactEntityBlock key={block.id} block={block} />;
|
||||
break;
|
||||
case "NeufAddressSectionBlock":
|
||||
return <NeufAddressSectionBlock />;
|
||||
|
||||
@@ -1,19 +1,24 @@
|
||||
import { useId, useState } from "react";
|
||||
import { FactBoxBlock as FactBoxBlockType } from "@/gql/graphql";
|
||||
import styles from "./factBoxBlock.module.scss";
|
||||
import { Blocks } from "./Blocks";
|
||||
|
||||
type FactBoxBlockTypeWithAlias = FactBoxBlockType & {
|
||||
factBoxBody?: string
|
||||
}
|
||||
factBoxBody?: string;
|
||||
};
|
||||
|
||||
export const FactBoxBlock = ({ block }: { block: FactBoxBlockTypeWithAlias }) => {
|
||||
export const FactBoxBlock = ({
|
||||
block,
|
||||
}: {
|
||||
block: FactBoxBlockTypeWithAlias;
|
||||
}) => {
|
||||
if (!block.factBoxBody) {
|
||||
return <></>;
|
||||
}
|
||||
return (
|
||||
<section className={styles.factBoxWrapper}>
|
||||
<div className={styles.factBox} data-background-color={block.backgroundColor ?? ""}>
|
||||
<div
|
||||
className={styles.factBox}
|
||||
data-background-color={block.backgroundColor ?? ""}
|
||||
>
|
||||
<div
|
||||
className={styles.factBoxContent}
|
||||
dangerouslySetInnerHTML={{ __html: block.factBoxBody }}
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
"use client";
|
||||
|
||||
import dynamic from "next/dynamic";
|
||||
import { PhotoSphereBlock as PhotoSphereBlockType } from "@/gql/graphql";
|
||||
import styles from "./photoSphereBlock.module.scss";
|
||||
|
||||
const ReactPhotoSphereViewer = dynamic(
|
||||
() =>
|
||||
import("react-photo-sphere-viewer").then(
|
||||
(mod) => mod.ReactPhotoSphereViewer
|
||||
),
|
||||
{
|
||||
ssr: false,
|
||||
loading: () => (
|
||||
<div className={styles.loading} aria-busy="true" aria-label="Laster 360°-bilde">
|
||||
<span className={styles.loadingText}>Laster 360°-bilde…</span>
|
||||
</div>
|
||||
),
|
||||
}
|
||||
);
|
||||
|
||||
type PhotoSphereBlockTypeWithAlias = PhotoSphereBlockType & {
|
||||
photoSphereImage?: PhotoSphereBlockType["image"];
|
||||
photoSphereTitle?: string | null;
|
||||
};
|
||||
|
||||
export const PhotoSphereBlock = ({
|
||||
block,
|
||||
}: {
|
||||
block: PhotoSphereBlockTypeWithAlias;
|
||||
}) => {
|
||||
const image = block.photoSphereImage ?? block.image;
|
||||
|
||||
if (!image?.url) {
|
||||
return <></>;
|
||||
}
|
||||
|
||||
return (
|
||||
<figure className={styles.photoSphereWrapper}>
|
||||
<div
|
||||
className={styles.photoSphereViewer}
|
||||
role="img"
|
||||
aria-label={block.photoSphereTitle ?? image.alt ?? "360°-bilde"}
|
||||
>
|
||||
<ReactPhotoSphereViewer
|
||||
src={image.url}
|
||||
height="500px"
|
||||
width="100%"
|
||||
navbar={["zoom", "fullscreen"]}
|
||||
littlePlanet={false}
|
||||
touchmoveTwoFingers
|
||||
/>
|
||||
<noscript>
|
||||
{/* eslint-disable-next-line @next/next/no-img-element */}
|
||||
<img
|
||||
src={image.url}
|
||||
alt={block.photoSphereTitle ?? image.alt ?? "360°-bilde"}
|
||||
className={styles.fallbackImage}
|
||||
/>
|
||||
</noscript>
|
||||
</div>
|
||||
{block.photoSphereTitle && <figcaption>{block.photoSphereTitle}</figcaption>}
|
||||
</figure>
|
||||
);
|
||||
};
|
||||
@@ -0,0 +1,42 @@
|
||||
.photoSphereWrapper {
|
||||
max-width: var(--size-width-p);
|
||||
margin: 0 auto var(--spacing-m);
|
||||
}
|
||||
|
||||
.photoSphereViewer {
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
border-radius: 2px;
|
||||
background: var(--color-betongGray);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.loading {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 500px;
|
||||
width: 100%;
|
||||
background: var(--color-background-secondary);
|
||||
}
|
||||
|
||||
.loadingText {
|
||||
font-size: var(--font-size-body);
|
||||
color: var(--color-text-secondary, currentColor);
|
||||
}
|
||||
|
||||
.photoSphereWrapper figcaption {
|
||||
width: 100%;
|
||||
max-width: var(--size-width-p);
|
||||
margin: 0 auto;
|
||||
padding: var(--spacing-xs) 0 var(--spacing-s);
|
||||
font-size: var(--font-size-caption);
|
||||
line-height: 1.4;
|
||||
opacity: .8;
|
||||
}
|
||||
|
||||
.fallbackImage {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
display: block;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import { useEffect } from "react";
|
||||
import {
|
||||
useQueryState,
|
||||
parseAsStringLiteral,
|
||||
@@ -71,7 +72,8 @@ export const EventContainer = ({
|
||||
|
||||
/*
|
||||
Allow filtering on all organizers that have upcoming events
|
||||
Filtering on an organizer with no upcoming events will work, but be hidden from dropdown
|
||||
Filtering on an organizer with no upcoming events will work,
|
||||
and in that case it's included in the dropdown
|
||||
*/
|
||||
const uniqueOrganizers: string[] = unique(
|
||||
events
|
||||
@@ -79,12 +81,32 @@ export const EventContainer = ({
|
||||
.flat()
|
||||
.filter((x) => x.__typename === "EventOrganizer")
|
||||
.map((x) => x.slug)
|
||||
.filter((x) => typeof x === "string")
|
||||
.filter((x) => typeof x === "string" && x !== "")
|
||||
);
|
||||
const filterableOrganizers = uniqueOrganizers
|
||||
.map((slug) => eventOrganizers.find((haystack) => haystack.slug === slug))
|
||||
.filter((x) => x !== undefined) as EventOrganizer[];
|
||||
|
||||
// If an organizer is selected that's not in the upcoming list, add it
|
||||
if (
|
||||
organizer &&
|
||||
!filterableOrganizers.some((org) => org.slug === organizer)
|
||||
) {
|
||||
const selectedOrganizer = eventOrganizers.find(
|
||||
(org) => org.slug === organizer,
|
||||
);
|
||||
if (selectedOrganizer) {
|
||||
filterableOrganizers.push(selectedOrganizer);
|
||||
}
|
||||
}
|
||||
|
||||
/* Reset organizer if slug is invalid */
|
||||
useEffect(() => {
|
||||
if (!eventOrganizers.find((haystack) => haystack.slug === organizer)) {
|
||||
setOrganizer(null);
|
||||
}
|
||||
}, [eventOrganizers, organizer]);
|
||||
|
||||
/*
|
||||
Allow filtering on all venues that have upcoming events
|
||||
Filtering on a venue with no upcoming events will work,
|
||||
@@ -105,6 +127,13 @@ export const EventContainer = ({
|
||||
.map((x) => venues.find((haystack) => haystack.slug === x.slug))
|
||||
.filter((x) => x !== undefined) as VenueFragment[];
|
||||
|
||||
/* Reset venue if slug is invalid */
|
||||
useEffect(() => {
|
||||
if (!venues.find((haystack) => haystack.slug === venue)) {
|
||||
setVenue(null);
|
||||
}
|
||||
}, [venues, venue]);
|
||||
|
||||
const filteredEvents = events
|
||||
.filter(
|
||||
(x) =>
|
||||
|
||||
@@ -157,6 +157,7 @@
|
||||
.dates,
|
||||
.details {
|
||||
font-family: var(--font-serif);
|
||||
line-height: 1.24;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -318,6 +318,12 @@ export function DecorativeIcon ({
|
||||
<path d="M271.35 281.16C271.68 277.97 272.05 276.11 272.57 276.99C272.86 277.49 273.18 276.92 273.48 276.94C275.53 277.04 277.58 277.21 279.63 277.27C280.51 277.3 281.39 277.12 282.27 277.05C283.76 276.94 285.25 276.8 286.73 276.78C287.49 276.77 288.25 277.09 289.01 277.09C290.53 277.09 292.06 276.89 293.58 276.89C294.36 276.89 295.14 277.19 295.91 277.27C296.2 277.3 296.48 277.04 296.77 276.98C296.89 276.96 297.01 276.94 297.12 277.26C297.43 278.14 297.53 280.9 297.34 283.41C297.2 285.33 297.01 286.62 296.74 286.61C295.48 286.54 294.23 286.5 292.97 286.53C292.46 286.54 291.96 286.86 291.45 286.86C290.65 286.86 289.86 286.67 289.06 286.59C287.89 286.48 286.72 286.32 285.56 286.35C284.22 286.38 282.88 286.58 281.54 286.7C281.12 286.74 280.7 286.76 280.27 286.76C278.95 286.78 277.62 286.78 276.3 286.82C274.93 286.87 273.55 286.96 272.18 287.02C272.08 287.02 271.98 287.03 271.87 286.92C271.46 286.46 271.41 285.87 271.32 281.15L271.35 281.16Z" fill="currentColor"/>
|
||||
</svg>
|
||||
)}
|
||||
|
||||
{type === "email" && (
|
||||
<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M6.79833 18.8515C6.39828 18.9115 6.03892 18.8236 5.72025 18.5879C5.40157 18.3523 5.21228 18.0344 5.15237 17.6344L3.80227 8.61883C3.74237 8.21879 3.83024 7.85943 4.0659 7.54075C4.30157 7.22207 4.61942 7.03278 5.01947 6.97287L17.2026 5.14841C17.6027 5.0885 17.962 5.17638 18.2807 5.41204C18.5994 5.64771 18.7887 5.96556 18.8486 6.36561L20.1987 15.3811C20.2586 15.7812 20.1707 16.1405 19.9351 16.4592C19.6994 16.7779 19.3815 16.9672 18.9815 17.0271L6.79833 18.8515ZM12.0666 12.4417L5.12468 9.33937L6.34024 17.4565C6.35089 17.5276 6.38247 17.5826 6.43498 17.6214C6.48748 17.6602 6.54931 17.6743 6.62045 17.6637L18.8036 15.8392C18.8748 15.8286 18.9297 15.797 18.9686 15.7445C19.0074 15.692 19.0215 15.6302 19.0108 15.559L17.7953 7.44192L12.0666 12.4417ZM11.8819 11.2081L17.5025 6.31802L5.0754 8.179L11.8819 11.2081ZM5.12468 9.33937L4.95364 8.19724L6.34024 17.4565C6.35089 17.5276 6.38247 17.5826 6.43498 17.6214C6.48748 17.6602 6.54931 17.6743 6.62045 17.6637L6.37674 17.7002L5.12468 9.33937Z" fill="currentColor"/>
|
||||
</svg>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,23 @@
|
||||
import { DecorativeIcon, Icon } from "./Icon";
|
||||
import styles from "./newsletter.module.scss";
|
||||
|
||||
export const Newsletter = ({ url }: { url?: string }) => {
|
||||
const link = url ?? "https://pub.dialogapi.no/s/MjQ0NTc6MmQyZjNjY2MtOGMzYy00NWQ0LThkY2MtZmUxYWQyODNhN2Vi";
|
||||
return (
|
||||
<div className={styles.newsletterWrapper}>
|
||||
<div className={styles.newsletter}>
|
||||
<div className={styles.textWrapper}>
|
||||
<div className={styles.icon}>
|
||||
<DecorativeIcon type="email" />
|
||||
</div>
|
||||
<h2>Nyhetsbrev</h2>
|
||||
<p>Meld deg på vårt nyhetsbrev og hold deg oppdatert på arrangementer og siste nytt!</p>
|
||||
</div>
|
||||
<a href={link} target="_blank" className="button primary">
|
||||
Meld deg på
|
||||
<Icon type="arrowRight" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
@@ -0,0 +1,68 @@
|
||||
.newsletterWrapper {
|
||||
padding: var(--spacing-sitepadding-block) var(--spacing-sitepadding-inline);
|
||||
}
|
||||
|
||||
.newsletter {
|
||||
width: 100%;
|
||||
background: var(--color-background-secondary);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
gap: 4rem;
|
||||
padding: var(--spacing-l);
|
||||
|
||||
a {
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
.textWrapper {
|
||||
display: grid;
|
||||
grid-template-columns: auto 1fr;
|
||||
column-gap: calc(var(--spacing-l)*0.9);
|
||||
align-items: center;
|
||||
|
||||
h2 {
|
||||
margin-bottom: .5rem;
|
||||
}
|
||||
|
||||
p {
|
||||
max-width: 48rem;
|
||||
}
|
||||
}
|
||||
|
||||
.icon {
|
||||
grid-column: 1;
|
||||
grid-row: span 2;
|
||||
flex: none;
|
||||
width: var(--size-icon-large);
|
||||
height: var(--size-icon-large);
|
||||
background: var(--color-goldenBeige);
|
||||
border-radius: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
img, svg {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 800px) {
|
||||
.newsletter {
|
||||
padding: var(--spacing-m);
|
||||
flex-wrap: wrap;
|
||||
gap: 1rem;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
.icon {
|
||||
grid-row: span 1;
|
||||
}
|
||||
.textWrapper {
|
||||
column-gap: 1rem;
|
||||
row-gap: 1rem;
|
||||
p {
|
||||
grid-column: span 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,6 +49,13 @@ export const Header = () => {
|
||||
// let's add a santa hat during December
|
||||
const isChristmas = new Date().getMonth() === 11;
|
||||
|
||||
// let's add the student hat during grisefestuka
|
||||
const pigWearsHat =
|
||||
new Date().getFullYear() === 2025 &&
|
||||
new Date().getMonth() === 9 &&
|
||||
new Date().getDate() >= 6 &&
|
||||
new Date().getDate() <= 12;
|
||||
|
||||
return (
|
||||
<>
|
||||
<header
|
||||
@@ -57,7 +64,7 @@ export const Header = () => {
|
||||
data-small={!isInView}
|
||||
>
|
||||
<Link href="/" aria-label="Hjem">
|
||||
<Logo christmas={isChristmas} />
|
||||
<Logo christmas={isChristmas} studentHat={pigWearsHat} />
|
||||
</Link>
|
||||
<nav className={styles.siteMenu}>
|
||||
<ul className={styles.mainMenu}>
|
||||
@@ -80,8 +87,13 @@ export const Header = () => {
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="/medlem" data-active={pathname === "/medlem"}>
|
||||
Bli medlem
|
||||
<Link href="/frivillig" data-active={pathname === "/frivillig"}>
|
||||
Bli frivillig
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="/foreninger" data-active={pathname === "/foreninger"}>
|
||||
Foreninger
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -113,8 +125,16 @@ export const Header = () => {
|
||||
</Link>
|
||||
</li>
|
||||
<li className={styles.menuItemLarge}>
|
||||
<Link href="/medlem" data-active={pathname === "/medlem"}>
|
||||
Bli medlem
|
||||
<Link href="/frivillig" data-active={pathname === "/frivillig"}>
|
||||
Bli frivillig
|
||||
</Link>
|
||||
</li>
|
||||
<li className={styles.menuItemLarge}>
|
||||
<Link
|
||||
href="/foreninger"
|
||||
data-active={pathname === "/foreninger"}
|
||||
>
|
||||
Foreninger
|
||||
</Link>
|
||||
</li>
|
||||
<li className={styles.divider}>
|
||||
@@ -133,16 +153,13 @@ export const Header = () => {
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="/frivillig" data-active={pathname === "/frivillig"}>
|
||||
Bli frivillig
|
||||
<Link href="/medlem" data-active={pathname === "/medlem"}>
|
||||
Bli medlem
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link
|
||||
href="/foreninger"
|
||||
data-active={pathname === "/foreninger"}
|
||||
>
|
||||
Foreninger
|
||||
<Link href="/sponsorer" data-active={pathname === "/sponsorer"}>
|
||||
Sponsorer
|
||||
</Link>
|
||||
</li>
|
||||
<li className={styles.galtinn}>
|
||||
@@ -173,7 +190,7 @@ export const Header = () => {
|
||||
{!isInView ? (
|
||||
<LogoIcon face="left" christmas={isChristmas} />
|
||||
) : (
|
||||
<Logo christmas={isChristmas} />
|
||||
<Logo christmas={isChristmas} studentHat={pigWearsHat} />
|
||||
)}
|
||||
</Link>
|
||||
<nav className={styles.siteMenu}>
|
||||
@@ -197,8 +214,16 @@ export const Header = () => {
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="/medlem" data-active={pathname === "/medlem"}>
|
||||
Bli medlem
|
||||
<Link href="/frivillig" data-active={pathname === "/frivillig"}>
|
||||
Bli frivillig
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link
|
||||
href="/foreninger"
|
||||
data-active={pathname === "/foreninger"}
|
||||
>
|
||||
Foreninger
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -49,7 +49,6 @@ function capitalizeFirstLetter(s: string) {
|
||||
}
|
||||
|
||||
function linkTo(page: any): string | null {
|
||||
console.log(page)
|
||||
if (page.__typename === "EventPage") {
|
||||
return `/arrangementer/${page.slug}`;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
import { SponsorBlock } from "@/gql/graphql";
|
||||
import { Blocks } from "../blocks/Blocks";
|
||||
import { Image } from "../general/Image";
|
||||
import styles from "./sponsorList.module.scss";
|
||||
|
||||
const SponsorItem = ({ sponsor }: { sponsor: SponsorBlock }) => {
|
||||
const { name, logo, website, text } = sponsor;
|
||||
return (
|
||||
<li className={styles.sponsorItem}>
|
||||
<div className={styles.image}>
|
||||
{logo && (
|
||||
<Image
|
||||
src={logo.url}
|
||||
alt={`Logoen til ${name}`}
|
||||
width={logo.width}
|
||||
height={logo.height}
|
||||
sizes="20vw"
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
<div className={styles.text}>
|
||||
<h2>{name}</h2>
|
||||
{text && (
|
||||
<p
|
||||
className={styles.sponsorText}
|
||||
dangerouslySetInnerHTML={{ __html: text }}
|
||||
/>
|
||||
)}
|
||||
{website && (
|
||||
<p className={styles.website}>
|
||||
<a href={website} target="_blank" rel="noopener">
|
||||
Besøk nettside
|
||||
</a>
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
</li>
|
||||
);
|
||||
};
|
||||
|
||||
export const SponsorList = ({ sponsors }: { sponsors: SponsorBlock[] }) => {
|
||||
return (
|
||||
<section className={styles.sponsorList}>
|
||||
<ul>
|
||||
{sponsors.map((sponsor) => (
|
||||
<SponsorItem key={sponsor.name} sponsor={sponsor} />
|
||||
))}
|
||||
</ul>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
@@ -0,0 +1,57 @@
|
||||
.sponsorList {
|
||||
margin-bottom: var(--spacing-section-bottom);
|
||||
ul {
|
||||
list-style: none;
|
||||
}
|
||||
}
|
||||
|
||||
.sponsorItem {
|
||||
//background: var(--color-background-secondary);
|
||||
border-top: var(--border);
|
||||
padding: var(--spacing-m) 0;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr var(--size-width-p) 1fr;
|
||||
align-items: center;
|
||||
column-gap: var(--spacing-gap-column);
|
||||
margin-bottom: var(--spacing-gap-row);
|
||||
min-height: 10rem;
|
||||
&:last-child {
|
||||
border-bottom: var(--border);
|
||||
}
|
||||
h2 {
|
||||
font-size: var(--font-size-h3);
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
p {
|
||||
font-size: var(--font-size-caption);
|
||||
}
|
||||
.website {
|
||||
display: inline-block;
|
||||
font-weight: 600;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
.image {
|
||||
width: 10rem;
|
||||
height: 10rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
@media (max-width: 1260px) {
|
||||
.sponsorItem {
|
||||
grid-template-columns: 10rem 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.sponsorItem {
|
||||
grid-template-columns: 5rem 1fr;
|
||||
align-items: flex-start;
|
||||
}
|
||||
.image {
|
||||
width: 5rem;
|
||||
height: 5rem;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,3 @@
|
||||
@import url("https://cdn.fonts.net/t/1.css?apiType=css&projectid=84b2007c-70ef-4f2d-9bd7-ad88739bae2f");
|
||||
|
||||
@font-face {
|
||||
font-family: "Avenir Next";
|
||||
font-style: normal;
|
||||
|
||||
+27
-9
@@ -36,16 +36,19 @@ type Documents = {
|
||||
"\n fragment Home on HomePage {\n ... on HomePage {\n featuredEvents {\n id\n }\n }\n }\n": typeof types.HomeFragmentDoc,
|
||||
"\n query home {\n events: eventIndex {\n ... on EventIndex {\n futureEvents {\n ... on EventPage {\n ...Event\n }\n }\n }\n }\n home: page(contentType: \"home.HomePage\", urlPath: \"/home/\") {\n ... on HomePage {\n ...Home\n }\n }\n news: pages(contentType: \"news.newsPage\", order: \"-first_published_at\", limit: 4) {\n ... on NewsPage {\n ...News\n }\n }\n }\n ": typeof types.HomeDocument,
|
||||
"\n query search($query: String) {\n results: search(query: $query) {\n __typename\n ... on PageInterface {\n slug\n }\n ... on NewsPage {\n id\n title\n }\n ... on EventPage {\n id\n title\n }\n ... on GenericPage {\n id\n title\n }\n ... on VenuePage {\n id\n title\n }\n ... on AssociationPage {\n id\n title\n associationType\n }\n }\n }\n ": typeof types.SearchDocument,
|
||||
"\n query sponsors {\n page: sponsorsPage {\n ... on SponsorsPage {\n ...SponsorsPage\n }\n }\n }\n": typeof types.SponsorsDocument,
|
||||
"\n fragment SponsorsPage on SponsorsPage {\n ... on SponsorsPage {\n title\n seoTitle\n searchDescription\n lead\n body {\n ...Blocks\n }\n sponsors {\n ... on SponsorBlock {\n id\n name\n logo {\n ...Image\n }\n text\n website\n }\n }\n }\n }\n": typeof types.SponsorsPageFragmentDoc,
|
||||
"\n query venueRentalIndex {\n index: venueRentalIndex {\n ... on VenueRentalIndex {\n ...VenueRentalIndex\n }\n }\n venues: pages(contentType: \"venues.VenuePage\", limit: 100) {\n ... on VenuePage {\n ...Venue\n }\n }\n }\n": typeof types.VenueRentalIndexDocument,
|
||||
"\n fragment VenueRentalIndex on VenueRentalIndex {\n ... on VenueRentalIndex {\n title\n seoTitle\n searchDescription\n lead\n body {\n ...Blocks\n }\n }\n }\n": typeof types.VenueRentalIndexFragmentDoc,
|
||||
"\n fragment OneLevelOfBlocks on StreamFieldInterface {\n id\n blockType\n field\n ... on RichTextBlock {\n rawValue\n value\n }\n ... on ImageWithTextBlock {\n image {\n ...Image\n }\n imageFormat\n text\n }\n ... on ImageSliderBlock {\n images {\n ... on ImageSliderItemBlock {\n image {\n ...Image\n }\n text\n }\n }\n }\n ... on HorizontalRuleBlock {\n color\n }\n ... on FeaturedBlock {\n title\n featuredBlockText: text\n linkText\n imagePosition\n backgroundColor\n featuredPage {\n contentType\n pageType\n url\n ... on EventPage {\n featuredImage {\n ...Image\n }\n }\n ... on NewsPage {\n featuredImage {\n ...Image\n }\n }\n }\n featuredImageOverride {\n ...Image\n }\n }\n ... on ContactListBlock {\n items {\n blockType\n ... on ContactEntityBlock {\n contactEntity {\n ...ContactEntity\n }\n }\n }\n }\n ... on EmbedBlock {\n url\n embed\n rawEmbed\n }\n ... on FactBoxBlock {\n backgroundColor\n factBoxBody: body\n }\n }\n": typeof types.OneLevelOfBlocksFragmentDoc,
|
||||
"\n fragment LeafBlocks on StreamFieldInterface {\n id\n blockType\n field\n ... on RichTextBlock {\n rawValue\n value\n }\n ... on ImageWithTextBlock {\n image {\n ...Image\n }\n imageFormat\n text\n }\n ... on ImageSliderBlock {\n images {\n ... on ImageSliderItemBlock {\n image {\n ...Image\n }\n text\n }\n }\n }\n ... on HorizontalRuleBlock {\n color\n }\n ... on FeaturedBlock {\n title\n featuredBlockText: text\n linkText\n imagePosition\n backgroundColor\n featuredPage {\n contentType\n pageType\n url\n ... on EventPage {\n featuredImage {\n ...Image\n }\n }\n ... on NewsPage {\n featuredImage {\n ...Image\n }\n }\n }\n featuredImageOverride {\n ...Image\n }\n }\n ... on ContactListBlock {\n items {\n blockType\n ... on ContactEntityBlock {\n contactEntity {\n ...ContactEntity\n }\n }\n }\n }\n ... on EmbedBlock {\n url\n embed\n rawEmbed\n }\n ... on FactBoxBlock {\n backgroundColor\n factBoxBody: body\n }\n ... on PhotoSphereBlock {\n photoSphereImage: image {\n ...Image\n }\n photoSphereTitle: title\n }\n }\n": typeof types.LeafBlocksFragmentDoc,
|
||||
"\n fragment OneLevelOfBlocks on StreamFieldInterface {\n ...LeafBlocks\n ... on AccordionBlock {\n heading\n body {\n ...LeafBlocks\n }\n }\n ... on PageSectionBlock {\n title\n backgroundColor\n icon\n body {\n ...LeafBlocks\n }\n }\n }\n": typeof types.OneLevelOfBlocksFragmentDoc,
|
||||
"\n fragment Blocks on StreamFieldInterface {\n ... on AccordionBlock {\n heading\n body {\n ...OneLevelOfBlocks\n }\n }\n ... on PageSectionBlock {\n title\n backgroundColor\n icon\n body {\n ...OneLevelOfBlocks\n }\n }\n ... on ContactSectionBlock {\n title\n text\n blocks {\n ... on ContactSubsectionBlock {\n title\n text\n blocks {\n ...OneLevelOfBlocks\n }\n }\n ...OneLevelOfBlocks\n }\n }\n ...OneLevelOfBlocks\n }\n": typeof types.BlocksFragmentDoc,
|
||||
"\n fragment Image on CustomImage {\n id\n url\n width\n height\n alt\n attribution\n }\n": typeof types.ImageFragmentDoc,
|
||||
"\n fragment ContactEntity on ContactEntity {\n id\n name\n contactType\n title\n email\n phoneNumber\n image {\n ...Image\n }\n }\n": typeof types.ContactEntityFragmentDoc,
|
||||
"\n fragment Event on EventPage {\n __typename\n id\n slug\n seoTitle\n searchDescription\n title\n subtitle\n lead\n body {\n id\n blockType\n field\n ... on RichTextBlock {\n rawValue\n value\n }\n }\n featuredImage {\n ...Image\n }\n pig\n facebookUrl\n ticketUrl\n free\n priceRegular\n priceMember\n priceStudent\n categories {\n ... on EventCategory {\n name\n slug\n pig\n }\n }\n occurrences {\n ... on EventOccurrence {\n __typename\n id\n start\n end\n venue {\n __typename\n id\n slug\n title\n preposition\n url\n }\n venueCustom\n }\n }\n organizers {\n ... on EventOrganizer {\n id\n name\n slug\n externalUrl\n association {\n ... on AssociationPage {\n url\n }\n }\n }\n }\n }\n": typeof types.EventFragmentDoc,
|
||||
"\n fragment Event on EventPage {\n __typename\n id\n slug\n seoTitle\n searchDescription\n title\n subtitle\n lead\n body {\n ...OneLevelOfBlocks\n }\n featuredImage {\n ...Image\n }\n pig\n facebookUrl\n ticketUrl\n free\n priceRegular\n priceMember\n priceStudent\n categories {\n ... on EventCategory {\n name\n slug\n pig\n }\n }\n occurrences(limit: 5000) {\n ... on EventOccurrence {\n __typename\n id\n start\n end\n venue {\n __typename\n id\n slug\n title\n preposition\n url\n }\n venueCustom\n }\n }\n organizers {\n ... on EventOrganizer {\n id\n name\n slug\n externalUrl\n association {\n ... on AssociationPage {\n url\n }\n }\n }\n }\n }\n": typeof types.EventFragmentDoc,
|
||||
"\n fragment EventIndex on EventIndex {\n __typename\n id\n slug\n seoTitle\n searchDescription\n title\n }\n": typeof types.EventIndexFragmentDoc,
|
||||
"\n query eventIndexMetadata {\n index: eventIndex {\n ... on EventIndex {\n ...EventIndex\n }\n }\n }\n": typeof types.EventIndexMetadataDocument,
|
||||
"\n query futureEvents {\n index: eventIndex {\n ... on EventIndex {\n ...EventIndex\n }\n }\n events: eventIndex {\n ... on EventIndex {\n futureEvents {\n ... on EventPage {\n ...Event\n }\n }\n }\n }\n eventCategories: eventCategories {\n ... on EventCategory {\n name\n slug\n showInFilters\n }\n }\n eventOrganizers: eventOrganizers {\n ... on EventOrganizer {\n id\n name\n slug\n externalUrl\n association {\n ... on AssociationPage {\n url\n }\n }\n }\n }\n venues: pages(contentType: \"venues.VenuePage\") {\n ... on VenuePage {\n id\n title\n slug\n preposition\n }\n }\n }\n": typeof types.FutureEventsDocument,
|
||||
"\n query futureEvents {\n index: eventIndex {\n ... on EventIndex {\n ...EventIndex\n }\n }\n events: eventIndex {\n ... on EventIndex {\n futureEvents {\n ... on EventPage {\n ...Event\n }\n }\n }\n }\n eventCategories: eventCategories(limit: 5000) {\n ... on EventCategory {\n name\n slug\n showInFilters\n }\n }\n eventOrganizers: eventOrganizers(limit: 5000) {\n ... on EventOrganizer {\n id\n name\n slug\n }\n }\n venues: pages(contentType: \"venues.VenuePage\") {\n ... on VenuePage {\n id\n title\n slug\n preposition\n }\n }\n }\n": typeof types.FutureEventsDocument,
|
||||
"\n fragment News on NewsPage {\n __typename\n id\n slug\n seoTitle\n searchDescription\n title\n firstPublishedAt\n excerpt\n lead\n featuredImage {\n ...Image\n }\n body {\n ...Blocks\n }\n }\n": typeof types.NewsFragmentDoc,
|
||||
"\n fragment NewsIndex on NewsIndex {\n __typename\n id\n slug\n seoTitle\n searchDescription\n title\n lead\n }\n": typeof types.NewsIndexFragmentDoc,
|
||||
"\n query news {\n index: newsIndex {\n ... on NewsIndex {\n ...NewsIndex\n }\n }\n news: pages(contentType: \"news.NewsPage\", order: \"-first_published_at\", limit: 1000) {\n ... on NewsPage {\n ...News\n }\n }\n }\n": typeof types.NewsDocument,
|
||||
@@ -77,16 +80,19 @@ const documents: Documents = {
|
||||
"\n fragment Home on HomePage {\n ... on HomePage {\n featuredEvents {\n id\n }\n }\n }\n": types.HomeFragmentDoc,
|
||||
"\n query home {\n events: eventIndex {\n ... on EventIndex {\n futureEvents {\n ... on EventPage {\n ...Event\n }\n }\n }\n }\n home: page(contentType: \"home.HomePage\", urlPath: \"/home/\") {\n ... on HomePage {\n ...Home\n }\n }\n news: pages(contentType: \"news.newsPage\", order: \"-first_published_at\", limit: 4) {\n ... on NewsPage {\n ...News\n }\n }\n }\n ": types.HomeDocument,
|
||||
"\n query search($query: String) {\n results: search(query: $query) {\n __typename\n ... on PageInterface {\n slug\n }\n ... on NewsPage {\n id\n title\n }\n ... on EventPage {\n id\n title\n }\n ... on GenericPage {\n id\n title\n }\n ... on VenuePage {\n id\n title\n }\n ... on AssociationPage {\n id\n title\n associationType\n }\n }\n }\n ": types.SearchDocument,
|
||||
"\n query sponsors {\n page: sponsorsPage {\n ... on SponsorsPage {\n ...SponsorsPage\n }\n }\n }\n": types.SponsorsDocument,
|
||||
"\n fragment SponsorsPage on SponsorsPage {\n ... on SponsorsPage {\n title\n seoTitle\n searchDescription\n lead\n body {\n ...Blocks\n }\n sponsors {\n ... on SponsorBlock {\n id\n name\n logo {\n ...Image\n }\n text\n website\n }\n }\n }\n }\n": types.SponsorsPageFragmentDoc,
|
||||
"\n query venueRentalIndex {\n index: venueRentalIndex {\n ... on VenueRentalIndex {\n ...VenueRentalIndex\n }\n }\n venues: pages(contentType: \"venues.VenuePage\", limit: 100) {\n ... on VenuePage {\n ...Venue\n }\n }\n }\n": types.VenueRentalIndexDocument,
|
||||
"\n fragment VenueRentalIndex on VenueRentalIndex {\n ... on VenueRentalIndex {\n title\n seoTitle\n searchDescription\n lead\n body {\n ...Blocks\n }\n }\n }\n": types.VenueRentalIndexFragmentDoc,
|
||||
"\n fragment OneLevelOfBlocks on StreamFieldInterface {\n id\n blockType\n field\n ... on RichTextBlock {\n rawValue\n value\n }\n ... on ImageWithTextBlock {\n image {\n ...Image\n }\n imageFormat\n text\n }\n ... on ImageSliderBlock {\n images {\n ... on ImageSliderItemBlock {\n image {\n ...Image\n }\n text\n }\n }\n }\n ... on HorizontalRuleBlock {\n color\n }\n ... on FeaturedBlock {\n title\n featuredBlockText: text\n linkText\n imagePosition\n backgroundColor\n featuredPage {\n contentType\n pageType\n url\n ... on EventPage {\n featuredImage {\n ...Image\n }\n }\n ... on NewsPage {\n featuredImage {\n ...Image\n }\n }\n }\n featuredImageOverride {\n ...Image\n }\n }\n ... on ContactListBlock {\n items {\n blockType\n ... on ContactEntityBlock {\n contactEntity {\n ...ContactEntity\n }\n }\n }\n }\n ... on EmbedBlock {\n url\n embed\n rawEmbed\n }\n ... on FactBoxBlock {\n backgroundColor\n factBoxBody: body\n }\n }\n": types.OneLevelOfBlocksFragmentDoc,
|
||||
"\n fragment LeafBlocks on StreamFieldInterface {\n id\n blockType\n field\n ... on RichTextBlock {\n rawValue\n value\n }\n ... on ImageWithTextBlock {\n image {\n ...Image\n }\n imageFormat\n text\n }\n ... on ImageSliderBlock {\n images {\n ... on ImageSliderItemBlock {\n image {\n ...Image\n }\n text\n }\n }\n }\n ... on HorizontalRuleBlock {\n color\n }\n ... on FeaturedBlock {\n title\n featuredBlockText: text\n linkText\n imagePosition\n backgroundColor\n featuredPage {\n contentType\n pageType\n url\n ... on EventPage {\n featuredImage {\n ...Image\n }\n }\n ... on NewsPage {\n featuredImage {\n ...Image\n }\n }\n }\n featuredImageOverride {\n ...Image\n }\n }\n ... on ContactListBlock {\n items {\n blockType\n ... on ContactEntityBlock {\n contactEntity {\n ...ContactEntity\n }\n }\n }\n }\n ... on EmbedBlock {\n url\n embed\n rawEmbed\n }\n ... on FactBoxBlock {\n backgroundColor\n factBoxBody: body\n }\n ... on PhotoSphereBlock {\n photoSphereImage: image {\n ...Image\n }\n photoSphereTitle: title\n }\n }\n": types.LeafBlocksFragmentDoc,
|
||||
"\n fragment OneLevelOfBlocks on StreamFieldInterface {\n ...LeafBlocks\n ... on AccordionBlock {\n heading\n body {\n ...LeafBlocks\n }\n }\n ... on PageSectionBlock {\n title\n backgroundColor\n icon\n body {\n ...LeafBlocks\n }\n }\n }\n": types.OneLevelOfBlocksFragmentDoc,
|
||||
"\n fragment Blocks on StreamFieldInterface {\n ... on AccordionBlock {\n heading\n body {\n ...OneLevelOfBlocks\n }\n }\n ... on PageSectionBlock {\n title\n backgroundColor\n icon\n body {\n ...OneLevelOfBlocks\n }\n }\n ... on ContactSectionBlock {\n title\n text\n blocks {\n ... on ContactSubsectionBlock {\n title\n text\n blocks {\n ...OneLevelOfBlocks\n }\n }\n ...OneLevelOfBlocks\n }\n }\n ...OneLevelOfBlocks\n }\n": types.BlocksFragmentDoc,
|
||||
"\n fragment Image on CustomImage {\n id\n url\n width\n height\n alt\n attribution\n }\n": types.ImageFragmentDoc,
|
||||
"\n fragment ContactEntity on ContactEntity {\n id\n name\n contactType\n title\n email\n phoneNumber\n image {\n ...Image\n }\n }\n": types.ContactEntityFragmentDoc,
|
||||
"\n fragment Event on EventPage {\n __typename\n id\n slug\n seoTitle\n searchDescription\n title\n subtitle\n lead\n body {\n id\n blockType\n field\n ... on RichTextBlock {\n rawValue\n value\n }\n }\n featuredImage {\n ...Image\n }\n pig\n facebookUrl\n ticketUrl\n free\n priceRegular\n priceMember\n priceStudent\n categories {\n ... on EventCategory {\n name\n slug\n pig\n }\n }\n occurrences {\n ... on EventOccurrence {\n __typename\n id\n start\n end\n venue {\n __typename\n id\n slug\n title\n preposition\n url\n }\n venueCustom\n }\n }\n organizers {\n ... on EventOrganizer {\n id\n name\n slug\n externalUrl\n association {\n ... on AssociationPage {\n url\n }\n }\n }\n }\n }\n": types.EventFragmentDoc,
|
||||
"\n fragment Event on EventPage {\n __typename\n id\n slug\n seoTitle\n searchDescription\n title\n subtitle\n lead\n body {\n ...OneLevelOfBlocks\n }\n featuredImage {\n ...Image\n }\n pig\n facebookUrl\n ticketUrl\n free\n priceRegular\n priceMember\n priceStudent\n categories {\n ... on EventCategory {\n name\n slug\n pig\n }\n }\n occurrences(limit: 5000) {\n ... on EventOccurrence {\n __typename\n id\n start\n end\n venue {\n __typename\n id\n slug\n title\n preposition\n url\n }\n venueCustom\n }\n }\n organizers {\n ... on EventOrganizer {\n id\n name\n slug\n externalUrl\n association {\n ... on AssociationPage {\n url\n }\n }\n }\n }\n }\n": types.EventFragmentDoc,
|
||||
"\n fragment EventIndex on EventIndex {\n __typename\n id\n slug\n seoTitle\n searchDescription\n title\n }\n": types.EventIndexFragmentDoc,
|
||||
"\n query eventIndexMetadata {\n index: eventIndex {\n ... on EventIndex {\n ...EventIndex\n }\n }\n }\n": types.EventIndexMetadataDocument,
|
||||
"\n query futureEvents {\n index: eventIndex {\n ... on EventIndex {\n ...EventIndex\n }\n }\n events: eventIndex {\n ... on EventIndex {\n futureEvents {\n ... on EventPage {\n ...Event\n }\n }\n }\n }\n eventCategories: eventCategories {\n ... on EventCategory {\n name\n slug\n showInFilters\n }\n }\n eventOrganizers: eventOrganizers {\n ... on EventOrganizer {\n id\n name\n slug\n externalUrl\n association {\n ... on AssociationPage {\n url\n }\n }\n }\n }\n venues: pages(contentType: \"venues.VenuePage\") {\n ... on VenuePage {\n id\n title\n slug\n preposition\n }\n }\n }\n": types.FutureEventsDocument,
|
||||
"\n query futureEvents {\n index: eventIndex {\n ... on EventIndex {\n ...EventIndex\n }\n }\n events: eventIndex {\n ... on EventIndex {\n futureEvents {\n ... on EventPage {\n ...Event\n }\n }\n }\n }\n eventCategories: eventCategories(limit: 5000) {\n ... on EventCategory {\n name\n slug\n showInFilters\n }\n }\n eventOrganizers: eventOrganizers(limit: 5000) {\n ... on EventOrganizer {\n id\n name\n slug\n }\n }\n venues: pages(contentType: \"venues.VenuePage\") {\n ... on VenuePage {\n id\n title\n slug\n preposition\n }\n }\n }\n": types.FutureEventsDocument,
|
||||
"\n fragment News on NewsPage {\n __typename\n id\n slug\n seoTitle\n searchDescription\n title\n firstPublishedAt\n excerpt\n lead\n featuredImage {\n ...Image\n }\n body {\n ...Blocks\n }\n }\n": types.NewsFragmentDoc,
|
||||
"\n fragment NewsIndex on NewsIndex {\n __typename\n id\n slug\n seoTitle\n searchDescription\n title\n lead\n }\n": types.NewsIndexFragmentDoc,
|
||||
"\n query news {\n index: newsIndex {\n ... on NewsIndex {\n ...NewsIndex\n }\n }\n news: pages(contentType: \"news.NewsPage\", order: \"-first_published_at\", limit: 1000) {\n ... on NewsPage {\n ...News\n }\n }\n }\n": types.NewsDocument,
|
||||
@@ -198,6 +204,14 @@ export function graphql(source: "\n query home {\n events: eventIndex {\
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n query search($query: String) {\n results: search(query: $query) {\n __typename\n ... on PageInterface {\n slug\n }\n ... on NewsPage {\n id\n title\n }\n ... on EventPage {\n id\n title\n }\n ... on GenericPage {\n id\n title\n }\n ... on VenuePage {\n id\n title\n }\n ... on AssociationPage {\n id\n title\n associationType\n }\n }\n }\n "): (typeof documents)["\n query search($query: String) {\n results: search(query: $query) {\n __typename\n ... on PageInterface {\n slug\n }\n ... on NewsPage {\n id\n title\n }\n ... on EventPage {\n id\n title\n }\n ... on GenericPage {\n id\n title\n }\n ... on VenuePage {\n id\n title\n }\n ... on AssociationPage {\n id\n title\n associationType\n }\n }\n }\n "];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n query sponsors {\n page: sponsorsPage {\n ... on SponsorsPage {\n ...SponsorsPage\n }\n }\n }\n"): (typeof documents)["\n query sponsors {\n page: sponsorsPage {\n ... on SponsorsPage {\n ...SponsorsPage\n }\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n fragment SponsorsPage on SponsorsPage {\n ... on SponsorsPage {\n title\n seoTitle\n searchDescription\n lead\n body {\n ...Blocks\n }\n sponsors {\n ... on SponsorBlock {\n id\n name\n logo {\n ...Image\n }\n text\n website\n }\n }\n }\n }\n"): (typeof documents)["\n fragment SponsorsPage on SponsorsPage {\n ... on SponsorsPage {\n title\n seoTitle\n searchDescription\n lead\n body {\n ...Blocks\n }\n sponsors {\n ... on SponsorBlock {\n id\n name\n logo {\n ...Image\n }\n text\n website\n }\n }\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
@@ -209,7 +223,11 @@ export function graphql(source: "\n fragment VenueRentalIndex on VenueRentalInd
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n fragment OneLevelOfBlocks on StreamFieldInterface {\n id\n blockType\n field\n ... on RichTextBlock {\n rawValue\n value\n }\n ... on ImageWithTextBlock {\n image {\n ...Image\n }\n imageFormat\n text\n }\n ... on ImageSliderBlock {\n images {\n ... on ImageSliderItemBlock {\n image {\n ...Image\n }\n text\n }\n }\n }\n ... on HorizontalRuleBlock {\n color\n }\n ... on FeaturedBlock {\n title\n featuredBlockText: text\n linkText\n imagePosition\n backgroundColor\n featuredPage {\n contentType\n pageType\n url\n ... on EventPage {\n featuredImage {\n ...Image\n }\n }\n ... on NewsPage {\n featuredImage {\n ...Image\n }\n }\n }\n featuredImageOverride {\n ...Image\n }\n }\n ... on ContactListBlock {\n items {\n blockType\n ... on ContactEntityBlock {\n contactEntity {\n ...ContactEntity\n }\n }\n }\n }\n ... on EmbedBlock {\n url\n embed\n rawEmbed\n }\n ... on FactBoxBlock {\n backgroundColor\n factBoxBody: body\n }\n }\n"): (typeof documents)["\n fragment OneLevelOfBlocks on StreamFieldInterface {\n id\n blockType\n field\n ... on RichTextBlock {\n rawValue\n value\n }\n ... on ImageWithTextBlock {\n image {\n ...Image\n }\n imageFormat\n text\n }\n ... on ImageSliderBlock {\n images {\n ... on ImageSliderItemBlock {\n image {\n ...Image\n }\n text\n }\n }\n }\n ... on HorizontalRuleBlock {\n color\n }\n ... on FeaturedBlock {\n title\n featuredBlockText: text\n linkText\n imagePosition\n backgroundColor\n featuredPage {\n contentType\n pageType\n url\n ... on EventPage {\n featuredImage {\n ...Image\n }\n }\n ... on NewsPage {\n featuredImage {\n ...Image\n }\n }\n }\n featuredImageOverride {\n ...Image\n }\n }\n ... on ContactListBlock {\n items {\n blockType\n ... on ContactEntityBlock {\n contactEntity {\n ...ContactEntity\n }\n }\n }\n }\n ... on EmbedBlock {\n url\n embed\n rawEmbed\n }\n ... on FactBoxBlock {\n backgroundColor\n factBoxBody: body\n }\n }\n"];
|
||||
export function graphql(source: "\n fragment LeafBlocks on StreamFieldInterface {\n id\n blockType\n field\n ... on RichTextBlock {\n rawValue\n value\n }\n ... on ImageWithTextBlock {\n image {\n ...Image\n }\n imageFormat\n text\n }\n ... on ImageSliderBlock {\n images {\n ... on ImageSliderItemBlock {\n image {\n ...Image\n }\n text\n }\n }\n }\n ... on HorizontalRuleBlock {\n color\n }\n ... on FeaturedBlock {\n title\n featuredBlockText: text\n linkText\n imagePosition\n backgroundColor\n featuredPage {\n contentType\n pageType\n url\n ... on EventPage {\n featuredImage {\n ...Image\n }\n }\n ... on NewsPage {\n featuredImage {\n ...Image\n }\n }\n }\n featuredImageOverride {\n ...Image\n }\n }\n ... on ContactListBlock {\n items {\n blockType\n ... on ContactEntityBlock {\n contactEntity {\n ...ContactEntity\n }\n }\n }\n }\n ... on EmbedBlock {\n url\n embed\n rawEmbed\n }\n ... on FactBoxBlock {\n backgroundColor\n factBoxBody: body\n }\n ... on PhotoSphereBlock {\n photoSphereImage: image {\n ...Image\n }\n photoSphereTitle: title\n }\n }\n"): (typeof documents)["\n fragment LeafBlocks on StreamFieldInterface {\n id\n blockType\n field\n ... on RichTextBlock {\n rawValue\n value\n }\n ... on ImageWithTextBlock {\n image {\n ...Image\n }\n imageFormat\n text\n }\n ... on ImageSliderBlock {\n images {\n ... on ImageSliderItemBlock {\n image {\n ...Image\n }\n text\n }\n }\n }\n ... on HorizontalRuleBlock {\n color\n }\n ... on FeaturedBlock {\n title\n featuredBlockText: text\n linkText\n imagePosition\n backgroundColor\n featuredPage {\n contentType\n pageType\n url\n ... on EventPage {\n featuredImage {\n ...Image\n }\n }\n ... on NewsPage {\n featuredImage {\n ...Image\n }\n }\n }\n featuredImageOverride {\n ...Image\n }\n }\n ... on ContactListBlock {\n items {\n blockType\n ... on ContactEntityBlock {\n contactEntity {\n ...ContactEntity\n }\n }\n }\n }\n ... on EmbedBlock {\n url\n embed\n rawEmbed\n }\n ... on FactBoxBlock {\n backgroundColor\n factBoxBody: body\n }\n ... on PhotoSphereBlock {\n photoSphereImage: image {\n ...Image\n }\n photoSphereTitle: title\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n fragment OneLevelOfBlocks on StreamFieldInterface {\n ...LeafBlocks\n ... on AccordionBlock {\n heading\n body {\n ...LeafBlocks\n }\n }\n ... on PageSectionBlock {\n title\n backgroundColor\n icon\n body {\n ...LeafBlocks\n }\n }\n }\n"): (typeof documents)["\n fragment OneLevelOfBlocks on StreamFieldInterface {\n ...LeafBlocks\n ... on AccordionBlock {\n heading\n body {\n ...LeafBlocks\n }\n }\n ... on PageSectionBlock {\n title\n backgroundColor\n icon\n body {\n ...LeafBlocks\n }\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
@@ -225,7 +243,7 @@ export function graphql(source: "\n fragment ContactEntity on ContactEntity {\n
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n fragment Event on EventPage {\n __typename\n id\n slug\n seoTitle\n searchDescription\n title\n subtitle\n lead\n body {\n id\n blockType\n field\n ... on RichTextBlock {\n rawValue\n value\n }\n }\n featuredImage {\n ...Image\n }\n pig\n facebookUrl\n ticketUrl\n free\n priceRegular\n priceMember\n priceStudent\n categories {\n ... on EventCategory {\n name\n slug\n pig\n }\n }\n occurrences {\n ... on EventOccurrence {\n __typename\n id\n start\n end\n venue {\n __typename\n id\n slug\n title\n preposition\n url\n }\n venueCustom\n }\n }\n organizers {\n ... on EventOrganizer {\n id\n name\n slug\n externalUrl\n association {\n ... on AssociationPage {\n url\n }\n }\n }\n }\n }\n"): (typeof documents)["\n fragment Event on EventPage {\n __typename\n id\n slug\n seoTitle\n searchDescription\n title\n subtitle\n lead\n body {\n id\n blockType\n field\n ... on RichTextBlock {\n rawValue\n value\n }\n }\n featuredImage {\n ...Image\n }\n pig\n facebookUrl\n ticketUrl\n free\n priceRegular\n priceMember\n priceStudent\n categories {\n ... on EventCategory {\n name\n slug\n pig\n }\n }\n occurrences {\n ... on EventOccurrence {\n __typename\n id\n start\n end\n venue {\n __typename\n id\n slug\n title\n preposition\n url\n }\n venueCustom\n }\n }\n organizers {\n ... on EventOrganizer {\n id\n name\n slug\n externalUrl\n association {\n ... on AssociationPage {\n url\n }\n }\n }\n }\n }\n"];
|
||||
export function graphql(source: "\n fragment Event on EventPage {\n __typename\n id\n slug\n seoTitle\n searchDescription\n title\n subtitle\n lead\n body {\n ...OneLevelOfBlocks\n }\n featuredImage {\n ...Image\n }\n pig\n facebookUrl\n ticketUrl\n free\n priceRegular\n priceMember\n priceStudent\n categories {\n ... on EventCategory {\n name\n slug\n pig\n }\n }\n occurrences(limit: 5000) {\n ... on EventOccurrence {\n __typename\n id\n start\n end\n venue {\n __typename\n id\n slug\n title\n preposition\n url\n }\n venueCustom\n }\n }\n organizers {\n ... on EventOrganizer {\n id\n name\n slug\n externalUrl\n association {\n ... on AssociationPage {\n url\n }\n }\n }\n }\n }\n"): (typeof documents)["\n fragment Event on EventPage {\n __typename\n id\n slug\n seoTitle\n searchDescription\n title\n subtitle\n lead\n body {\n ...OneLevelOfBlocks\n }\n featuredImage {\n ...Image\n }\n pig\n facebookUrl\n ticketUrl\n free\n priceRegular\n priceMember\n priceStudent\n categories {\n ... on EventCategory {\n name\n slug\n pig\n }\n }\n occurrences(limit: 5000) {\n ... on EventOccurrence {\n __typename\n id\n start\n end\n venue {\n __typename\n id\n slug\n title\n preposition\n url\n }\n venueCustom\n }\n }\n organizers {\n ... on EventOrganizer {\n id\n name\n slug\n externalUrl\n association {\n ... on AssociationPage {\n url\n }\n }\n }\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
@@ -237,7 +255,7 @@ export function graphql(source: "\n query eventIndexMetadata {\n index: even
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n query futureEvents {\n index: eventIndex {\n ... on EventIndex {\n ...EventIndex\n }\n }\n events: eventIndex {\n ... on EventIndex {\n futureEvents {\n ... on EventPage {\n ...Event\n }\n }\n }\n }\n eventCategories: eventCategories {\n ... on EventCategory {\n name\n slug\n showInFilters\n }\n }\n eventOrganizers: eventOrganizers {\n ... on EventOrganizer {\n id\n name\n slug\n externalUrl\n association {\n ... on AssociationPage {\n url\n }\n }\n }\n }\n venues: pages(contentType: \"venues.VenuePage\") {\n ... on VenuePage {\n id\n title\n slug\n preposition\n }\n }\n }\n"): (typeof documents)["\n query futureEvents {\n index: eventIndex {\n ... on EventIndex {\n ...EventIndex\n }\n }\n events: eventIndex {\n ... on EventIndex {\n futureEvents {\n ... on EventPage {\n ...Event\n }\n }\n }\n }\n eventCategories: eventCategories {\n ... on EventCategory {\n name\n slug\n showInFilters\n }\n }\n eventOrganizers: eventOrganizers {\n ... on EventOrganizer {\n id\n name\n slug\n externalUrl\n association {\n ... on AssociationPage {\n url\n }\n }\n }\n }\n venues: pages(contentType: \"venues.VenuePage\") {\n ... on VenuePage {\n id\n title\n slug\n preposition\n }\n }\n }\n"];
|
||||
export function graphql(source: "\n query futureEvents {\n index: eventIndex {\n ... on EventIndex {\n ...EventIndex\n }\n }\n events: eventIndex {\n ... on EventIndex {\n futureEvents {\n ... on EventPage {\n ...Event\n }\n }\n }\n }\n eventCategories: eventCategories(limit: 5000) {\n ... on EventCategory {\n name\n slug\n showInFilters\n }\n }\n eventOrganizers: eventOrganizers(limit: 5000) {\n ... on EventOrganizer {\n id\n name\n slug\n }\n }\n venues: pages(contentType: \"venues.VenuePage\") {\n ... on VenuePage {\n id\n title\n slug\n preposition\n }\n }\n }\n"): (typeof documents)["\n query futureEvents {\n index: eventIndex {\n ... on EventIndex {\n ...EventIndex\n }\n }\n events: eventIndex {\n ... on EventIndex {\n futureEvents {\n ... on EventPage {\n ...Event\n }\n }\n }\n }\n eventCategories: eventCategories(limit: 5000) {\n ... on EventCategory {\n name\n slug\n showInFilters\n }\n }\n eventOrganizers: eventOrganizers(limit: 5000) {\n ... on EventOrganizer {\n id\n name\n slug\n }\n }\n venues: pages(contentType: \"venues.VenuePage\") {\n ... on VenuePage {\n id\n title\n slug\n preposition\n }\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
|
||||
+3607
-630
File diff suppressed because one or more lines are too long
+28
-2
@@ -91,8 +91,8 @@ export function formatHumanReadableList(array: (string | number)[]): string {
|
||||
return array.slice(0, -1).join(", ") + " og " + array[length - 1];
|
||||
}
|
||||
|
||||
const OneLevelOfBlocksFragmentDefinition = graphql(`
|
||||
fragment OneLevelOfBlocks on StreamFieldInterface {
|
||||
const LeafBlocksFragmentDefinition = graphql(`
|
||||
fragment LeafBlocks on StreamFieldInterface {
|
||||
id
|
||||
blockType
|
||||
field
|
||||
@@ -164,6 +164,32 @@ const OneLevelOfBlocksFragmentDefinition = graphql(`
|
||||
backgroundColor
|
||||
factBoxBody: body
|
||||
}
|
||||
... on PhotoSphereBlock {
|
||||
photoSphereImage: image {
|
||||
...Image
|
||||
}
|
||||
photoSphereTitle: title
|
||||
}
|
||||
}
|
||||
`);
|
||||
|
||||
const OneLevelOfBlocksFragmentDefinition = graphql(`
|
||||
fragment OneLevelOfBlocks on StreamFieldInterface {
|
||||
...LeafBlocks
|
||||
... on AccordionBlock {
|
||||
heading
|
||||
body {
|
||||
...LeafBlocks
|
||||
}
|
||||
}
|
||||
... on PageSectionBlock {
|
||||
title
|
||||
backgroundColor
|
||||
icon
|
||||
body {
|
||||
...LeafBlocks
|
||||
}
|
||||
}
|
||||
}
|
||||
`);
|
||||
|
||||
|
||||
+3
-1
@@ -44,7 +44,9 @@ export function formatExtendedDateTime(
|
||||
const timePart = dateOnly ? "" : " 'kl.' HH:mm";
|
||||
const isCurrentYear = parsed.getFullYear() === new Date().getFullYear();
|
||||
const yearPart = (!isCurrentYear || alwaysIncludeYear) ? " yyyy" : "";
|
||||
return formatDate(parsed, `EEEE d. MMMM${yearPart}${timePart}`);
|
||||
const formatStr = `EEEE d. MMMM${yearPart}${timePart}`;
|
||||
const formatted = format(parsed, formatStr, { timeZone, locale: nb });
|
||||
return formatted;
|
||||
}
|
||||
|
||||
export function isTodayOrFuture(
|
||||
|
||||
+4
-16
@@ -34,13 +34,7 @@ const EventFragmentDefinition = graphql(`
|
||||
subtitle
|
||||
lead
|
||||
body {
|
||||
id
|
||||
blockType
|
||||
field
|
||||
... on RichTextBlock {
|
||||
rawValue
|
||||
value
|
||||
}
|
||||
...OneLevelOfBlocks
|
||||
}
|
||||
featuredImage {
|
||||
...Image
|
||||
@@ -59,7 +53,7 @@ const EventFragmentDefinition = graphql(`
|
||||
pig
|
||||
}
|
||||
}
|
||||
occurrences {
|
||||
occurrences(limit: 5000) {
|
||||
... on EventOccurrence {
|
||||
__typename
|
||||
id
|
||||
@@ -129,24 +123,18 @@ export const eventsOverviewQuery = graphql(`
|
||||
}
|
||||
}
|
||||
}
|
||||
eventCategories: eventCategories {
|
||||
eventCategories: eventCategories(limit: 5000) {
|
||||
... on EventCategory {
|
||||
name
|
||||
slug
|
||||
showInFilters
|
||||
}
|
||||
}
|
||||
eventOrganizers: eventOrganizers {
|
||||
eventOrganizers: eventOrganizers(limit: 5000) {
|
||||
... on EventOrganizer {
|
||||
id
|
||||
name
|
||||
slug
|
||||
externalUrl
|
||||
association {
|
||||
... on AssociationPage {
|
||||
url
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
venues: pages(contentType: "venues.VenuePage") {
|
||||
|
||||
+3
-2
@@ -14,7 +14,7 @@
|
||||
"moduleResolution": "bundler",
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"jsx": "preserve",
|
||||
"jsx": "react-jsx",
|
||||
"incremental": true,
|
||||
"plugins": [
|
||||
{
|
||||
@@ -32,7 +32,8 @@
|
||||
"next-env.d.ts",
|
||||
"**/*.ts",
|
||||
"**/*.tsx",
|
||||
".next/types/**/*.ts"
|
||||
".next/types/**/*.ts",
|
||||
".next/dev/types/**/*.ts"
|
||||
],
|
||||
"exclude": [
|
||||
"node_modules"
|
||||
|
||||
Reference in New Issue
Block a user