Compare commits

40 Commits

Author SHA1 Message Date
leander 2b8197e8a2 generate migrations for photosphere support 2026-04-15 23:44:18 +02:00
leander 3dd2c056b8 add 360 photosphere element support 2026-04-15 23:43:47 +02:00
ponas d0a886a4ae web: bump deps 2026-03-05 22:02:29 +01:00
ponas cc5b53011d dnscms: bump deps 2026-03-05 21:54:58 +01:00
ponas f769898698 dnscms: add django.contrib.postgres 2026-02-16 02:43:23 +01:00
ponas e71db3a0cc dnscms: switch from 1 to 3 gunicorn workers 2026-02-16 02:38:45 +01:00
ponas 355c0b38a5 dnscms: bump deps 2026-02-16 02:37:33 +01:00
ponas bba98fe868 web: fix missing content for accordion blocks inside page section blocks 2026-02-04 20:44:39 +01:00
ponas 978aae4fc3 web: bump deps 2026-02-04 19:59:29 +01:00
ponas ffc3a583b2 web: bump all deps 2025-12-12 15:25:53 +01:00
ponas 12aea04779 web: bump all deps, notably next to v16.0.7 to fix CVE-2025-55182 2025-12-03 21:08:44 +01:00
leander 6bcf9bbfbd fix url parameter organizer replacing first dropdown item
add organizer at the end instead of during filtering. Probably not the
optimal way to do this but works for now.
2025-11-19 23:24:08 +01:00
leander 2e4ca34f5c make association featured link in navbar 2025-11-19 23:12:45 +01:00
leander d76b16781d switch member and volunteer links in navbar 2025-11-19 23:06:04 +01:00
ponas 8942bcc9da web: allow filtering on venues and organizers with no upcoming events, reset filter if invalid 2025-11-19 21:08:56 +01:00
ponas 196f000a2d web: fix organizer filtering 2025-11-19 20:23:32 +01:00
ponas 4655f67a9e web: set turbopack root 2025-11-19 20:23:04 +01:00
ponas 8506fd1c2d dnscms: increase page size and max page size for wagtail-grapple 2025-11-19 20:09:55 +01:00
ponas ca341f5f22 workaround number of event occurrences somehow being limited to 10 2025-11-17 03:34:04 +01:00
ponas 1431b8d6ff web: regenerate types 2025-11-14 02:42:13 +01:00
ponas 3c225aa68a web: bump everything, notably node to v14 and nextjs to v16.0.3 2025-11-14 02:41:49 +01:00
ponas 16629a2fc0 dnscms: bump python to 3.14, bump deps, notably wagtail to 7.2 2025-11-14 02:32:43 +01:00
ponas b18f9ec54f fix build 2025-10-06 21:53:25 +02:00
ponas 2a00d21717 temporarily use the DNS pig with hat 2025-10-06 21:08:48 +02:00
ponas 09e69a7093 avoid double timezone conversion to fix showing the wrong date for faraway spiders and users 2025-09-14 01:21:39 +02:00
ponas d3f8b8f0bb allow wider paragraph in newsletter block 2025-08-11 18:57:21 +02:00
ponas fcd5231c28 change newsletter text 2025-08-11 18:50:32 +02:00
ponas 1b25bad850 add sponsors to menu 2025-08-11 18:45:29 +02:00
ponas c8b0c99d8d only show newsletter block on front page for now 2025-08-11 00:04:24 +02:00
elisejakob 55d9bcbef8 add newsletter block 2025-08-10 22:01:40 +02:00
elisejakob 1209562e0b fix event item line height 2025-08-10 21:10:40 +02:00
elisejakob d5d3c6b936 style sponsor list 2025-08-08 15:21:00 +02:00
ponas 87562b491d disable turbopack to fix css issues 2025-08-08 14:56:55 +02:00
ponas c54196d487 bump next, react, sass 2025-08-08 14:53:30 +02:00
ponas 37104e7a0c add keys to blocks 2025-08-08 14:53:17 +02:00
ponas ed3388e2bf set sponsor logo image sizes 2025-08-08 14:40:16 +02:00
ponas 8444bd018e remove stray logs 2025-08-08 14:40:08 +02:00
ponas 1a3f031d5f web: add unstyled sponsors page 2025-07-28 03:54:41 +02:00
ponas 8e8ca4f147 dnscms: add sponsors page 2025-07-28 03:38:54 +02:00
ponas 7d1836f973 dnscms: remove accidentally committed local configuration 2025-07-21 14:17:33 +02:00
49 changed files with 10678 additions and 3834 deletions
+1
View File
@@ -9,6 +9,7 @@ __pycache__
.DS_Store .DS_Store
*.swp *.swp
/venv/ /venv/
/.venv/
/tmp/ /tmp/
/.vagrant/ /.vagrant/
/Vagrantfile.local /Vagrantfile.local
+1
View File
@@ -7,3 +7,4 @@
/static/ /static/
/media/ /media/
db.sqlite3 db.sqlite3
dnscms/settings/local.py
+2 -2
View File
@@ -1,4 +1,4 @@
FROM python:3.12-slim-bullseye FROM python:3.14-slim-trixie
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
RUN useradd wagtail RUN useradd wagtail
@@ -37,4 +37,4 @@ USER wagtail
ENV PATH="/app/.venv/bin:$PATH" ENV PATH="/app/.venv/bin:$PATH"
RUN python manage.py collectstatic --noinput --clear RUN python manage.py collectstatic --noinput --clear
CMD ["sh", "-c", "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", "")],
),
),
]
@@ -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"},
),
},
),
),
]
+20
View File
@@ -203,6 +203,25 @@ class AccordionBlock(blocks.StructBlock):
label = "Trekkspill" 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 @register_streamfield_block
class FactBoxBlock(blocks.StructBlock): class FactBoxBlock(blocks.StructBlock):
background_color = blocks.ChoiceBlock( background_color = blocks.ChoiceBlock(
@@ -234,6 +253,7 @@ BASE_BLOCKS = [
("page_section_navigation", PageSectionNavigationBlock()), ("page_section_navigation", PageSectionNavigationBlock()),
("accordion", AccordionBlock()), ("accordion", AccordionBlock()),
("fact_box", FactBoxBlock()), ("fact_box", FactBoxBlock()),
("photo_sphere", PhotoSphereBlock()),
("embed", EmbedBlock()), ("embed", EmbedBlock()),
("raw_html", blocks.RawHTMLBlock()), ("raw_html", blocks.RawHTMLBlock()),
] ]
+8
View File
@@ -36,6 +36,7 @@ INSTALLED_APPS = [
"venues", "venues",
"news", "news",
"openinghours", "openinghours",
"sponsors",
# end cms apps # end cms apps
"grapple", "grapple",
"graphene_django", "graphene_django",
@@ -60,6 +61,7 @@ INSTALLED_APPS = [
"django.contrib.sessions", "django.contrib.sessions",
"django.contrib.messages", "django.contrib.messages",
"django.contrib.staticfiles", "django.contrib.staticfiles",
"django.contrib.postgres",
] ]
MIDDLEWARE = [ MIDDLEWARE = [
@@ -187,6 +189,9 @@ WAGTAILADMIN_BASE_URL = "http://example.com"
# Required by wagtail-grapple to make image URLs absolute # Required by wagtail-grapple to make image URLs absolute
BASE_URL = "http://example.com" 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 # GraphQL
GRAPHENE = {"SCHEMA": "grapple.schema.schema"} GRAPHENE = {"SCHEMA": "grapple.schema.schema"}
GRAPPLE = { GRAPPLE = {
@@ -200,8 +205,11 @@ GRAPPLE = {
"venues", "venues",
"news", "news",
"openinghours", "openinghours",
"sponsors",
], ],
"EXPOSE_GRAPHIQL": True, "EXPOSE_GRAPHIQL": True,
"PAGE_SIZE": 100,
"MAX_PAGE_SIZE": 5000,
} }
# Wgtail WordPress import # Wgtail WordPress import
-13
View File
@@ -1,13 +0,0 @@
# localhost oidc
# client id w8Xh7KmILy77aw9RRNfJDCxrKMNIi6kSd8thDWNr
# secret D3Urewsp6dkmsvBzPPgNO8tRz98cnXmREAN3sWAdSCbIkCikKl0quk7QinADIhGTuCH2FwkTn0GsJouxrUdDrCkvlNtFJfOtugjZBQ5IC35FCrEoZr8z77jwveWg9upI
OIDC_RP_CLIENT_ID = "w8Xh7KmILy77aw9RRNfJDCxrKMNIi6kSd8thDWNr"
OIDC_RP_CLIENT_SECRET = "D3Urewsp6dkmsvBzPPgNO8tRz98cnXmREAN3sWAdSCbIkCikKl0quk7QinADIhGTuCH2FwkTn0GsJouxrUdDrCkvlNtFJfOtugjZBQ5IC35FCrEoZr8z77jwveWg9upI"
OIDC_OP_AUTHORIZATION_ENDPOINT = "http://127.0.0.1:9000/api/oidc/authorize/"
OIDC_OP_TOKEN_ENDPOINT = "http://127.0.0.1:9000/api/oidc/token/"
OIDC_OP_USER_ENDPOINT = "http://127.0.0.1:9000/api/oidc/userinfo/"
LOGIN_REDIRECT_URL = "http://127.0.0.8000/"
LOGOUT_REDIRECT_URL = "http://127.0.0.8000/"
@@ -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", "")],
),
),
]
@@ -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'),
),
]
+1 -1
View File
@@ -1,3 +1,3 @@
[tools] [tools]
python = "3.13" python = "3.14"
uv = "latest" 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", "")],
),
),
]
+2 -1
View File
@@ -6,7 +6,8 @@ from modelcluster.fields import ParentalKey
from modelcluster.models import ClusterableModel from modelcluster.models import ClusterableModel
from wagtail import blocks from wagtail import blocks
from wagtail.admin.panels import FieldPanel, InlinePanel, MultiFieldPanel, TitleFieldPanel 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 from wagtail.snippets.models import register_snippet
+11 -9
View File
@@ -3,20 +3,22 @@ name = "dnscms"
version = "0.1.0" version = "0.1.0"
description = "" description = ""
authors = [{ name = "EDB", email = "edb@neuf.no" }] authors = [{ name = "EDB", email = "edb@neuf.no" }]
requires-python = ">=3.12, <3.13" requires-python = ">=3.14, <3.15"
readme = "README.md" readme = "README.md"
dependencies = [ dependencies = [
"wagtail>=6.1.3,<7", "wagtail>=7.3.1",
"django>=5.0.7,<6", "wagtail-grapple>=0.29.0",
"wagtail-grapple>=0.26.0,<0.27", "django>=6.0.3",
"psycopg2-binary>=2.9.10,<3", "django-extensions>=4.1",
"django-extensions>=3.2.3,<4", "psycopg2-binary>=2.9.11,<3",
"whitenoise>=6.7.0,<7", "gunicorn>=25.1.0",
"gunicorn>=23.0.0", "whitenoise>=6.12.0",
] ]
[dependency-groups] [dependency-groups]
dev = ["ruff"] dev = [
"ruff>=0.15.1",
]
[tool.uv] [tool.uv]
package = false package = false
View File
+6
View File
@@ -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", (), {}),
},
),
),
]
+62
View File
@@ -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")]
+235 -197
View File
@@ -1,77 +1,65 @@
version = 1 version = 1
revision = 2 revision = 3
requires-python = "==3.12.*" requires-python = "==3.14.*"
[[package]]
name = "aniso8601"
version = "9.0.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/cb/72/be3db445b03944bfbb2b02b82d00cb2a2bcf96275c4543f14bf60fa79e12/aniso8601-9.0.1.tar.gz", hash = "sha256:72e3117667eedf66951bb2d93f4296a56b94b078a8a95905a052611fb3f1b973", size = 47345, upload-time = "2021-03-02T01:33:22.944Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/e3/04/e97c12dc034791d7b504860acfcdd2963fa21ae61eaca1c9d31245f812c3/aniso8601-9.0.1-py2.py3-none-any.whl", hash = "sha256:1d2b7ef82963909e93c4f24ce48d4de9e66009a21bf1c1e1c85bdd0812fe412f", size = 52754, upload-time = "2021-03-02T01:33:20.669Z" },
]
[[package]] [[package]]
name = "anyascii" name = "anyascii"
version = "0.3.2" version = "0.3.3"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/9f/52/93b9ea99063f7cf37fb67f5e3f49480686cbe7f228c48b9d713326223b6e/anyascii-0.3.2.tar.gz", hash = "sha256:9d5d32ef844fe225b8bc7cba7f950534fae4da27a9bf3a6bea2cb0ea46ce4730", size = 214052, upload-time = "2023-03-16T00:24:42.431Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/4f/7b/a9a747e0632271d855da379532b05a62c58e979813814a57fa3b3afeb3a4/anyascii-0.3.2-py3-none-any.whl", hash = "sha256:3b3beef6fc43d9036d3b0529050b0c48bfad8bc960e9e562d7223cfb94fe45d4", size = 289923, upload-time = "2023-03-16T00:24:39.649Z" }, { 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]] [[package]]
name = "asgiref" name = "asgiref"
version = "3.8.1" version = "3.9.1"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/29/38/b3395cc9ad1b56d2ddac9970bc8f4141312dbaec28bc7c218b0dfafd0f42/asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590", size = 35186, upload-time = "2024-03-22T14:39:36.863Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/39/e3/893e8757be2612e6c266d9bb58ad2e3651524b5b40cf56761e985a28b13e/asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47", size = 23828, upload-time = "2024-03-22T14:39:34.521Z" }, { 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]] [[package]]
name = "beautifulsoup4" name = "beautifulsoup4"
version = "4.12.3" version = "4.13.4"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "soupsieve" }, { name = "soupsieve" },
{ name = "typing-extensions" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/b3/ca/824b1195773ce6166d388573fc106ce56d4a805bd7427b624e063596ec58/beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051", size = 581181, upload-time = "2024-01-17T16:53:17.902Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/b1/fe/e8c672695b37eecc5cbf43e1d0638d88d66ba3a44c4d321c796f4e59167f/beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed", size = 147925, upload-time = "2024-01-17T16:53:12.779Z" }, { 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]] [[package]]
name = "certifi" name = "certifi"
version = "2024.8.30" version = "2025.8.3"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507, upload-time = "2024-08-30T01:55:04.365Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321, upload-time = "2024-08-30T01:55:02.591Z" }, { 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]] [[package]]
name = "charset-normalizer" name = "charset-normalizer"
version = "3.3.2" version = "3.4.3"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/63/09/c1bc53dab74b1816a00d8d030de5bf98f724c52c1635e07681d312f20be8/charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", size = 104809, upload-time = "2023-11-01T04:04:59.997Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/d1/b2/fcedc8255ec42afee97f9e6f0145c734bbe104aac28300214593eb326f1d/charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", size = 192892, upload-time = "2023-11-01T04:03:24.135Z" }, { 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/2e/7d/2259318c202f3d17f3fe6438149b3b9e706d1070fe3fcbb28049730bb25c/charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", size = 122213, upload-time = "2023-11-01T04:03:25.66Z" }, { 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/3a/52/9f9d17c3b54dc238de384c4cb5a2ef0e27985b42a0e5cc8e8a31d918d48d/charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", size = 119404, upload-time = "2023-11-01T04:03:27.04Z" }, { 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/99/b0/9c365f6d79a9f0f3c379ddb40a256a67aa69c59609608fe7feb6235896e1/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", size = 137275, upload-time = "2023-11-01T04:03:28.466Z" }, { 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/91/33/749df346e93d7a30cdcb90cbfdd41a06026317bfbfb62cd68307c1a3c543/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", size = 147518, upload-time = "2023-11-01T04:03:29.82Z" }, { 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/72/1a/641d5c9f59e6af4c7b53da463d07600a695b9824e20849cb6eea8a627761/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", size = 140182, upload-time = "2023-11-01T04:03:31.511Z" }, { 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/ee/fb/14d30eb4956408ee3ae09ad34299131fb383c47df355ddb428a7331cfa1e/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", size = 141869, upload-time = "2023-11-01T04:03:32.887Z" }, { 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/df/3e/a06b18788ca2eb6695c9b22325b6fde7dde0f1d1838b1792a0076f58fe9d/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", size = 144042, upload-time = "2023-11-01T04:03:34.412Z" }, { 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/45/59/3d27019d3b447a88fe7e7d004a1e04be220227760264cc41b405e863891b/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", size = 138275, upload-time = "2023-11-01T04:03:35.759Z" }, { 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/7b/ef/5eb105530b4da8ae37d506ccfa25057961b7b63d581def6f99165ea89c7e/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", size = 144819, upload-time = "2023-11-01T04:03:37.216Z" }, { 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/a2/51/e5023f937d7f307c948ed3e5c29c4b7a3e42ed2ee0b8cdf8f3a706089bf0/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", size = 149415, upload-time = "2023-11-01T04:03:38.694Z" }, { 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/24/9d/2e3ef673dfd5be0154b20363c5cdcc5606f35666544381bee15af3778239/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", size = 141212, upload-time = "2023-11-01T04:03:40.07Z" }, { 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" },
{ url = "https://files.pythonhosted.org/packages/5b/ae/ce2c12fcac59cb3860b2e2d76dc405253a4475436b1861d95fe75bdea520/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", size = 142167, upload-time = "2023-11-01T04:03:41.491Z" },
{ url = "https://files.pythonhosted.org/packages/ed/3a/a448bf035dce5da359daf9ae8a16b8a39623cc395a2ffb1620aa1bce62b0/charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", size = 93041, upload-time = "2023-11-01T04:03:42.836Z" },
{ url = "https://files.pythonhosted.org/packages/b6/7c/8debebb4f90174074b827c63242c23851bdf00a532489fba57fef3416e40/charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", size = 100397, upload-time = "2023-11-01T04:03:44.467Z" },
{ url = "https://files.pythonhosted.org/packages/28/76/e6222113b83e3622caa4bb41032d0b1bf785250607392e1b778aca0b8a7d/charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", size = 48543, upload-time = "2023-11-01T04:04:58.622Z" },
] ]
[[package]] [[package]]
@@ -85,53 +73,52 @@ wheels = [
[[package]] [[package]]
name = "django" name = "django"
version = "5.1" version = "6.0.3"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "asgiref" }, { name = "asgiref" },
{ name = "sqlparse" }, { name = "sqlparse" },
{ name = "tzdata", marker = "sys_platform == 'win32'" }, { name = "tzdata", marker = "sys_platform == 'win32'" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/1e/0c/d854d25bb74a8a3b41e642bbd27fe6af12fadd0edfd07d487809cf0ef719/Django-5.1.tar.gz", hash = "sha256:848a5980e8efb76eea70872fb0e4bc5e371619c70fffbe48e3e1b50b2c09455d", size = 10681050, upload-time = "2024-08-07T13:34:10.857Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/28/b4/110532cebfea2244d76119904da98c6fa045ebb202aee9ec7cbf36ea3cad/Django-5.1-py3-none-any.whl", hash = "sha256:d3b811bf5371a26def053d7ee42a9df1267ef7622323fe70a601936725aa4557", size = 8246099, upload-time = "2024-08-07T13:33:52.959Z" }, { 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]] [[package]]
name = "django-extensions" name = "django-extensions"
version = "3.2.3" version = "4.1"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "django" }, { name = "django" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/8a/f1/318684c9466968bf9a9c221663128206e460c1a67f595055be4b284cde8a/django-extensions-3.2.3.tar.gz", hash = "sha256:44d27919d04e23b3f40231c4ab7af4e61ce832ef46d610cc650d53e68328410a", size = 277216, upload-time = "2023-06-05T17:09:01.447Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/a7/7e/ba12b9660642663f5273141018d2bec0a1cae1711f4f6d1093920e157946/django_extensions-3.2.3-py3-none-any.whl", hash = "sha256:9600b7562f79a92cbf1fde6403c04fee314608fefbb595502e34383ae8203401", size = 229868, upload-time = "2023-06-05T17:08:58.197Z" }, { 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]] [[package]]
name = "django-filter" name = "django-filter"
version = "24.3" version = "25.1"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "django" }, { name = "django" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/50/bc/dc19ae39c235332926dd0efe0951f663fa1a9fc6be8430737ff7fd566b20/django_filter-24.3.tar.gz", hash = "sha256:d8ccaf6732afd21ca0542f6733b11591030fa98669f8d15599b358e24a2cd9c3", size = 144444, upload-time = "2024-08-02T13:27:58.132Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/09/b1/92f1c30b47c1ebf510c35a2ccad9448f73437e5891bbd2b4febe357cc3de/django_filter-24.3-py3-none-any.whl", hash = "sha256:c4852822928ce17fb699bcfccd644b3574f1a2d80aeb2b4ff4f16b02dd49dc64", size = 95011, upload-time = "2024-08-02T13:27:55.616Z" }, { 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]] [[package]]
name = "django-modelcluster" name = "django-modelcluster"
version = "6.3" version = "6.4.1"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "django" }, { name = "django" },
{ name = "pytz" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/3d/dd/db1ab2e256f9fda6796ac312686561cbe2740d960c920f74410559ef7739/django-modelcluster-6.3.tar.gz", hash = "sha256:0caed8a0e889f3abb92f144670878a466ef954ffa6c4c7b9c80e6426b720a49d", size = 28903, upload-time = "2024-02-26T19:26:53.185Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/ee/6d/8deb2dfde2e1177412b759a1c32713be19b1d3af1da686e44e64c165e8c0/django_modelcluster-6.3-py2.py3-none-any.whl", hash = "sha256:a8783d6565a0663f41cd6003ea361c3a5711e8a2a326160f1ec1eceb3e973d4f", size = 29039, upload-time = "2024-02-26T19:26:50.903Z" }, { 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]] [[package]]
@@ -146,16 +133,43 @@ 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" }, { 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]] [[package]]
name = "django-taggit" name = "django-taggit"
version = "5.0.1" version = "6.1.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "django" }, { name = "django" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/10/eb/269501702e231b552f68d813d0a07ac1ea81fd25a3c92fb0f249818f0f39/django-taggit-5.0.1.tar.gz", hash = "sha256:edcd7db1e0f35c304e082a2f631ddac2e16ef5296029524eb792af7430cab4cc", size = 60372, upload-time = "2023-10-29T11:57:20.124Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/07/18/94a45c8c50592d5cf7d73a9111053917c3684fda031c988041396bb3e588/django_taggit-5.0.1-py3-none-any.whl", hash = "sha256:a0ca8a28b03c4b26c2630fd762cb76ec39b5e41abf727a7b66f897a625c5e647", size = 61141, upload-time = "2023-10-29T11:56:57.954Z" }, { 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]] [[package]]
@@ -172,14 +186,14 @@ wheels = [
[[package]] [[package]]
name = "djangorestframework" name = "djangorestframework"
version = "3.15.2" version = "3.16.1"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "django" }, { name = "django" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/2c/ce/31482eb688bdb4e271027076199e1aa8d02507e530b6d272ab8b4481557c/djangorestframework-3.15.2.tar.gz", hash = "sha256:36fe88cd2d6c6bec23dca9804bab2ba5517a8bb9d8f47ebc68981b56840107ad", size = 1067420, upload-time = "2024-06-19T07:59:32.891Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/7c/b6/fa99d8f05eff3a9310286ae84c4059b08c301ae4ab33ae32e46e8ef76491/djangorestframework-3.15.2-py3-none-any.whl", hash = "sha256:2b8871b062ba1aefc2de01f773875441a961fefbf79f5eed1e32b2f096944b20", size = 1071235, upload-time = "2024-06-19T07:59:26.106Z" }, { 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]] [[package]]
@@ -203,34 +217,34 @@ dev = [
[package.metadata] [package.metadata]
requires-dist = [ requires-dist = [
{ name = "django", specifier = ">=5.0.7,<6" }, { name = "django", specifier = ">=6.0.3" },
{ name = "django-extensions", specifier = ">=3.2.3,<4" }, { name = "django-extensions", specifier = ">=4.1" },
{ name = "gunicorn", specifier = ">=23.0.0" }, { name = "gunicorn", specifier = ">=25.1.0" },
{ name = "psycopg2-binary", specifier = ">=2.9.10,<3" }, { name = "psycopg2-binary", specifier = ">=2.9.11,<3" },
{ name = "wagtail", specifier = ">=6.1.3,<7" }, { name = "wagtail", specifier = ">=7.3.1" },
{ name = "wagtail-grapple", specifier = ">=0.26.0,<0.27" }, { name = "wagtail-grapple", specifier = ">=0.29.0" },
{ name = "whitenoise", specifier = ">=6.7.0,<7" }, { name = "whitenoise", specifier = ">=6.12.0" },
] ]
[package.metadata.requires-dev] [package.metadata.requires-dev]
dev = [{ name = "ruff" }] dev = [{ name = "ruff", specifier = ">=0.15.1" }]
[[package]] [[package]]
name = "draftjs-exporter" name = "draftjs-exporter"
version = "5.0.0" version = "5.1.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/29/5b/7729b1a95d48d2f51b03feacda1d5b17058e1caec524592e59d0df801a8c/draftjs_exporter-5.0.0.tar.gz", hash = "sha256:2efee45d4bb4c0aaacc3e5ea2983a29a29381e02037f3f92a6b12706d7b87e1e", size = 33271, upload-time = "2022-04-03T22:00:47.094Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/58/f4/95ad9b91194156f0e87877d640428b1c7be70a90979796ecdcb77adcfb4f/draftjs_exporter-5.0.0-py3-none-any.whl", hash = "sha256:8cb9d2d51284233decfe274802f1c53e257158c62b9f53ed2399de3fa80ac561", size = 26320, upload-time = "2022-04-03T22:00:44.647Z" }, { 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]] [[package]]
name = "et-xmlfile" name = "et-xmlfile"
version = "1.1.0" version = "2.0.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/3d/5d/0413a31d184a20c763ad741cc7852a659bf15094c24840c5bdd1754765cd/et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c", size = 3218, upload-time = "2021-04-26T13:26:05.068Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/96/c2/3dd434b0108730014f1b96fd286040dc3bcb70066346f7e01ec2ac95865f/et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada", size = 4688, upload-time = "2021-04-26T13:26:03.429Z" }, { 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]] [[package]]
@@ -244,21 +258,22 @@ wheels = [
[[package]] [[package]]
name = "graphene" name = "graphene"
version = "3.3" version = "3.4.3"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "aniso8601" },
{ name = "graphql-core" }, { name = "graphql-core" },
{ name = "graphql-relay" }, { name = "graphql-relay" },
{ name = "python-dateutil" },
{ name = "typing-extensions" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/82/75/02875858c7c09fc156840181cdee27b23408fac75720a2e1e9128f3d48a5/graphene-3.3.tar.gz", hash = "sha256:529bf40c2a698954217d3713c6041d69d3f719ad0080857d7ee31327112446b0", size = 57893, upload-time = "2023-07-26T06:48:39.083Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/24/70/96f6027cdfc9bb89fc07627b615cb43fb1c443c93498412beaeaf157e9f1/graphene-3.3-py2.py3-none-any.whl", hash = "sha256:bb3810be33b54cb3e6969506671eb72319e8d7ba0d5ca9c8066472f75bf35a38", size = 128227, upload-time = "2023-07-26T06:48:37.766Z" }, { 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]] [[package]]
name = "graphene-django" name = "graphene-django"
version = "3.2.2" version = "3.2.3"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "django" }, { name = "django" },
@@ -268,18 +283,18 @@ dependencies = [
{ name = "promise" }, { name = "promise" },
{ name = "text-unidecode" }, { name = "text-unidecode" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/09/f1/4eb1c0ae79814aba03e2347f664cb0bef72816fbe99d4399378bb22bef47/graphene-django-3.2.2.tar.gz", hash = "sha256:059ccf25d9a5159f28d7ebf1a648c993ab34deb064e80b70ca096aa22a609556", size = 87591, upload-time = "2024-06-12T02:58:09.439Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/da/71/6800d05144ee4fb57f471571dd80fc9c6b2196e6243d39ed3d3654082824/graphene_django-3.2.2-py2.py3-none-any.whl", hash = "sha256:0fd95c8c1cbe77ae2a5940045ce276803c3acbf200a156731e0c730f2776ae2c", size = 114204, upload-time = "2024-06-12T02:58:07.897Z" }, { 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]] [[package]]
name = "graphql-core" name = "graphql-core"
version = "3.2.3" version = "3.2.6"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/ee/a6/94df9045ca1bac404c7b394094cd06713f63f49c7a4d54d99b773ae81737/graphql-core-3.2.3.tar.gz", hash = "sha256:06d2aad0ac723e35b1cb47885d3e5c45e956a53bc1b209a9fc5369007fe46676", size = 529552, upload-time = "2022-09-23T08:37:13.684Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/f8/39/e5143e7ec70939d2076c1165ae9d4a3815597019c4d797b7f959cf778600/graphql_core-3.2.3-py3-none-any.whl", hash = "sha256:5766780452bd5ec8ba133f8bf287dc92713e3868ddd83aee4faab9fc3e303dc3", size = 202921, upload-time = "2022-09-23T08:37:11.825Z" }, { 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]] [[package]]
@@ -296,48 +311,48 @@ wheels = [
[[package]] [[package]]
name = "gunicorn" name = "gunicorn"
version = "23.0.0" version = "25.1.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "packaging" }, { name = "packaging" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/34/72/9614c465dc206155d93eff0ca20d42e1e35afc533971379482de953521a4/gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec", size = 375031, upload-time = "2024-08-10T20:25:27.378Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/cb/7d/6dac2a6e1eba33ee43f318edbed4ff29151a49b5d37f080aad1e6469bca4/gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d", size = 85029, upload-time = "2024-08-10T20:25:24.996Z" }, { 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]] [[package]]
name = "idna" name = "idna"
version = "3.8" version = "3.10"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/e8/ac/e349c5e6d4543326c6883ee9491e3921e0d07b55fdf3cce184b40d63e72a/idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603", size = 189467, upload-time = "2024-08-23T16:01:51.339Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/22/7e/d71db821f177828df9dea8c42ac46473366f191be53080e552e628aad991/idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac", size = 66894, upload-time = "2024-08-23T16:01:49.963Z" }, { 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 = "l18n"
version = "2021.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pytz" },
{ name = "six" },
]
sdist = { url = "https://files.pythonhosted.org/packages/ff/9c/13d732e16e8fbdef7e68f4f339f3b86618430d4003c7ffe82e15bf925d7c/l18n-2021.3.tar.gz", hash = "sha256:1956e890d673d17135cc20913253c154f6bc1c00266c22b7d503cc1a5a42d848", size = 50712, upload-time = "2021-11-12T09:32:36.255Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/6c/e7/dfa82d0bb2b314950e457a755463b429090127ffc0ab9d8d14ef4563ad44/l18n-2021.3-py3-none-any.whl", hash = "sha256:78495d1df95b6f7dcc694d1ba8994df709c463a1cbac1bf016e1b9a5ce7280b9", size = 51534, upload-time = "2021-11-12T09:32:34.296Z" },
] ]
[[package]] [[package]]
name = "laces" name = "laces"
version = "0.1.1" version = "0.1.2"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "django" }, { name = "django" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/a2/cb/d69f2cbb248bd6baceb7597d8c6c229797689b546ac2a446fac15b8f455f/laces-0.1.1.tar.gz", hash = "sha256:e45159c46f6adca33010d34e9af869e57201b70675c6dc088e919b16c89456a4", size = 26889, upload-time = "2024-02-10T23:34:22.055Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/e0/dc/ceadbdc5e14aec7bd01bdd6ef8d5bf704d6a12d1b5a25bcaaa066bdb820d/laces-0.1.1-py3-none-any.whl", hash = "sha256:ae2c575b9aaa46154e5518c61c9f86f5a9478f753a51e9c5547c7d275d361242", size = 21349, upload-time = "2024-02-10T23:34:20.37Z" }, { 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]] [[package]]
@@ -363,39 +378,50 @@ wheels = [
[[package]] [[package]]
name = "pillow" name = "pillow"
version = "10.4.0" version = "11.3.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059, upload-time = "2024-07-01T09:48:43.583Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/05/cb/0353013dc30c02a8be34eb91d25e4e4cf594b59e5a55ea1128fde1e5f8ea/pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", size = 3509350, upload-time = "2024-07-01T09:46:17.177Z" }, { 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/e7/cf/5c558a0f247e0bf9cec92bff9b46ae6474dd736f6d906315e60e4075f737/pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", size = 3374980, upload-time = "2024-07-01T09:46:19.169Z" }, { 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/84/48/6e394b86369a4eb68b8a1382c78dc092245af517385c086c5094e3b34428/pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", size = 4343799, upload-time = "2024-07-01T09:46:21.883Z" }, { 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/3b/f3/a8c6c11fa84b59b9df0cd5694492da8c039a24cd159f0f6918690105c3be/pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", size = 4459973, upload-time = "2024-07-01T09:46:24.321Z" }, { 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/7d/1b/c14b4197b80150fb64453585247e6fb2e1d93761fa0fa9cf63b102fde822/pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", size = 4370054, upload-time = "2024-07-01T09:46:26.825Z" }, { 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/55/77/40daddf677897a923d5d33329acd52a2144d54a9644f2a5422c028c6bf2d/pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", size = 4539484, upload-time = "2024-07-01T09:46:29.355Z" }, { 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/40/54/90de3e4256b1207300fb2b1d7168dd912a2fb4b2401e439ba23c2b2cabde/pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", size = 4477375, upload-time = "2024-07-01T09:46:31.756Z" }, { 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/13/24/1bfba52f44193860918ff7c93d03d95e3f8748ca1de3ceaf11157a14cf16/pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", size = 4608773, upload-time = "2024-07-01T09:46:33.73Z" }, { 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/55/04/5e6de6e6120451ec0c24516c41dbaf80cce1b6451f96561235ef2429da2e/pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", size = 2235690, upload-time = "2024-07-01T09:46:36.587Z" }, { 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/74/0a/d4ce3c44bca8635bd29a2eab5aa181b654a734a29b263ca8efe013beea98/pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", size = 2554951, upload-time = "2024-07-01T09:46:38.777Z" }, { 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/b5/ca/184349ee40f2e92439be9b3502ae6cfc43ac4b50bc4fc6b3de7957563894/pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", size = 2243427, upload-time = "2024-07-01T09:46:43.15Z" }, { 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]] [[package]]
name = "pillow-heif" name = "pillow-heif"
version = "0.18.0" version = "1.1.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "pillow" }, { name = "pillow" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/c9/bb/e7797fe7f5cad447bb470f916ead38f0929e8d28bdf6bd5d9f31dfe1ac26/pillow_heif-0.18.0.tar.gz", hash = "sha256:70318dad9faa76121c6592ac0ab59881ff0dac6ab791a922e70d82c7706cce88", size = 16172675, upload-time = "2024-07-27T16:21:21.889Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/5a/48/4bdce48d77c307b50bba0c77d6485e156f0fefcca273ce007351ad1deb40/pillow_heif-0.18.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:c795e7ccceea33e01e49ce536139f94cabb1bf017393666f76c05a9daebae2da", size = 5279030, upload-time = "2024-07-27T16:20:00.876Z" }, { 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/3c/d8/8f2f8f44b6fc3689ace680b21655a0eabb1393f8e66b8851b0f95b8aac1c/pillow_heif-0.18.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:4dd5b3ec09be45c1ef63be31773df90e18ee08e5e950018b0a349924b54a24ac", size = 3732529, upload-time = "2024-07-27T16:20:02.849Z" }, { 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/f8/61/f0aac50a7ad051e1cb71ed7a8d3a94b5e54ea8ed1acb03586f0fcdebd730/pillow_heif-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb2eade59c2654c2643a3b637de37c19e75a77c66a3e9a5e0ae26210e4f48aee", size = 6759746, upload-time = "2024-07-27T16:20:04.776Z" }, { 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/4b/71/a8b3684f64307b96ea0ae14594564b41fdf4d4a6f7df5ef73d180a71db5d/pillow_heif-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35b59d599bfdb8454739db6b92f0841ecadbe887babb5ed5abd5299587843eef", size = 7586203, upload-time = "2024-07-27T16:20:06.811Z" }, { 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/d8/59/3b1c90f7d366fb653f5f072803ae6350e608bea0d0d0ea65d6e7764c470f/pillow_heif-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:26a0b8b8e899e7bcc876ee61fcadb0f0b849bd6a0d5c20f0e969c77a43b40568", size = 8119771, upload-time = "2024-07-27T16:20:08.491Z" }, { 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/48/20/a72297dc260d0bf8fce8f209d36ceb498b2f1e8beb478a0ab3f565c9a3c9/pillow_heif-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0276a3e0c667677ed0c67f4512cdf2f674065018049307ba4de5cb4648b0a33e", size = 8850943, upload-time = "2024-07-27T16:20:10.262Z" }, { 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/12/98/2bcb2790618cfb8ce2054256a4d3bc2597288bf82444cc87fdc815484c38/pillow_heif-0.18.0-cp312-cp312-win_amd64.whl", hash = "sha256:5916fa31f2015626dd2372d14e24521ea6caed11b25be14faa9b9c67731087ce", size = 8547707, upload-time = "2024-07-27T16:20:12.594Z" }, { 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]] [[package]]
@@ -409,36 +435,38 @@ sdist = { url = "https://files.pythonhosted.org/packages/cf/9c/fb5d48abfe5d791cd
[[package]] [[package]]
name = "psycopg2-binary" name = "psycopg2-binary"
version = "2.9.10" version = "2.9.11"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/cb/0e/bdc8274dc0585090b4e3432267d7be4dfbfd8971c0fa59167c711105a6bf/psycopg2-binary-2.9.10.tar.gz", hash = "sha256:4b3df0e6990aa98acda57d983942eff13d824135fe2250e6522edaa782a06de2", size = 385764, upload-time = "2024-10-16T11:24:58.126Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/49/7d/465cc9795cf76f6d329efdafca74693714556ea3891813701ac1fee87545/psycopg2_binary-2.9.10-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:880845dfe1f85d9d5f7c412efea7a08946a46894537e4e5d091732eb1d34d9a0", size = 3044771, upload-time = "2024-10-16T11:20:35.234Z" }, { 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/8b/31/6d225b7b641a1a2148e3ed65e1aa74fc86ba3fee850545e27be9e1de893d/psycopg2_binary-2.9.10-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9440fa522a79356aaa482aa4ba500b65f28e5d0e63b801abf6aa152a29bd842a", size = 3275336, upload-time = "2024-10-16T11:20:38.742Z" }, { 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/30/b7/a68c2b4bff1cbb1728e3ec864b2d92327c77ad52edcd27922535a8366f68/psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3923c1d9870c49a2d44f795df0c889a22380d36ef92440ff618ec315757e539", size = 2851637, upload-time = "2024-10-16T11:20:42.145Z" }, { 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/0b/b1/cfedc0e0e6f9ad61f8657fd173b2f831ce261c02a08c0b09c652b127d813/psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b2c956c028ea5de47ff3a8d6b3cc3330ab45cf0b7c3da35a2d6ff8420896526", size = 3082097, upload-time = "2024-10-16T11:20:46.185Z" }, { 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/18/ed/0a8e4153c9b769f59c02fb5e7914f20f0b2483a19dae7bf2db54b743d0d0/psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f758ed67cab30b9a8d2833609513ce4d3bd027641673d4ebc9c067e4d208eec1", size = 3264776, upload-time = "2024-10-16T11:20:50.879Z" }, { 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/10/db/d09da68c6a0cdab41566b74e0a6068a425f077169bed0946559b7348ebe9/psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cd9b4f2cfab88ed4a9106192de509464b75a906462fb846b936eabe45c2063e", size = 3020968, upload-time = "2024-10-16T11:20:56.819Z" }, { 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/94/28/4d6f8c255f0dfffb410db2b3f9ac5218d959a66c715c34cac31081e19b95/psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dc08420625b5a20b53551c50deae6e231e6371194fa0651dbe0fb206452ae1f", size = 2872334, upload-time = "2024-10-16T11:21:02.411Z" }, { 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/05/f7/20d7bf796593c4fea95e12119d6cc384ff1f6141a24fbb7df5a668d29d29/psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d7cd730dfa7c36dbe8724426bf5612798734bff2d3c3857f36f2733f5bfc7c00", size = 2822722, upload-time = "2024-10-16T11:21:09.01Z" }, { 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/4d/e4/0c407ae919ef626dbdb32835a03b6737013c3cc7240169843965cada2bdf/psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:155e69561d54d02b3c3209545fb08938e27889ff5a10c19de8d23eb5a41be8a5", size = 2920132, upload-time = "2024-10-16T11:21:16.339Z" }, { 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/2d/70/aa69c9f69cf09a01da224909ff6ce8b68faeef476f00f7ec377e8f03be70/psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3cc28a6fd5a4a26224007712e79b81dbaee2ffb90ff406256158ec4d7b52b47", size = 2959312, upload-time = "2024-10-16T11:21:25.584Z" }, { 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/d3/bd/213e59854fafe87ba47814bf413ace0dcee33a89c8c8c814faca6bc7cf3c/psycopg2_binary-2.9.10-cp312-cp312-win32.whl", hash = "sha256:ec8a77f521a17506a24a5f626cb2aee7850f9b69a0afe704586f63a464f3cd64", size = 1025191, upload-time = "2024-10-16T11:21:29.912Z" }, { 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" },
{ url = "https://files.pythonhosted.org/packages/92/29/06261ea000e2dc1e22907dbbc483a1093665509ea586b29b8986a0e56733/psycopg2_binary-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:18c5ee682b9c6dd3696dad6e54cc7ff3a1a9020df6a5c0f861ef8bfd338c3ca0", size = 1164031, upload-time = "2024-10-16T11:21:34.211Z" },
] ]
[[package]] [[package]]
name = "pytz" name = "python-dateutil"
version = "2024.1" version = "2.9.0.post0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/90/26/9f1f00a5d021fff16dee3de13d43e5e978f3d58928e129c3a62cf7eb9738/pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812", size = 316214, upload-time = "2024-02-02T01:18:41.693Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/9c/3d/a121f284241f08268b21359bd425f7d4825cffc5ac5cd0e1b3d82ffd2b10/pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319", size = 505474, upload-time = "2024-02-02T01:18:37.283Z" }, { 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]] [[package]]
name = "requests" name = "requests"
version = "2.32.3" version = "2.32.4"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "certifi" }, { name = "certifi" },
@@ -446,61 +474,61 @@ dependencies = [
{ name = "idna" }, { name = "idna" },
{ name = "urllib3" }, { name = "urllib3" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload-time = "2024-05-29T15:37:49.536Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload-time = "2024-05-29T15:37:47.027Z" }, { 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]] [[package]]
name = "ruff" name = "ruff"
version = "0.12.4" version = "0.15.1"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/9b/ce/8d7dbedede481245b489b769d27e2934730791a9a82765cb94566c6e6abd/ruff-0.12.4.tar.gz", hash = "sha256:13efa16df6c6eeb7d0f091abae50f58e9522f3843edb40d56ad52a5a4a4b6873", size = 5131435, upload-time = "2025-07-17T17:27:19.138Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/ae/9f/517bc5f61bad205b7f36684ffa5415c013862dee02f55f38a217bdbe7aa4/ruff-0.12.4-py3-none-linux_armv6l.whl", hash = "sha256:cb0d261dac457ab939aeb247e804125a5d521b21adf27e721895b0d3f83a0d0a", size = 10188824, upload-time = "2025-07-17T17:26:31.412Z" }, { 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/28/83/691baae5a11fbbde91df01c565c650fd17b0eabed259e8b7563de17c6529/ruff-0.12.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:55c0f4ca9769408d9b9bac530c30d3e66490bd2beb2d3dae3e4128a1f05c7442", size = 10884521, upload-time = "2025-07-17T17:26:35.084Z" }, { 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/d6/8d/756d780ff4076e6dd035d058fa220345f8c458391f7edfb1c10731eedc75/ruff-0.12.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a8224cc3722c9ad9044da7f89c4c1ec452aef2cfe3904365025dd2f51daeae0e", size = 10277653, upload-time = "2025-07-17T17:26:37.897Z" }, { 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/8d/97/8eeee0f48ece153206dce730fc9e0e0ca54fd7f261bb3d99c0a4343a1892/ruff-0.12.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9949d01d64fa3672449a51ddb5d7548b33e130240ad418884ee6efa7a229586", size = 10485993, upload-time = "2025-07-17T17:26:40.68Z" }, { 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/49/b8/22a43d23a1f68df9b88f952616c8508ea6ce4ed4f15353b8168c48b2d7e7/ruff-0.12.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:be0593c69df9ad1465e8a2d10e3defd111fdb62dcd5be23ae2c06da77e8fcffb", size = 10022824, upload-time = "2025-07-17T17:26:43.564Z" }, { 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/cd/70/37c234c220366993e8cffcbd6cadbf332bfc848cbd6f45b02bade17e0149/ruff-0.12.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7dea966bcb55d4ecc4cc3270bccb6f87a337326c9dcd3c07d5b97000dbff41c", size = 11524414, upload-time = "2025-07-17T17:26:46.219Z" }, { 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/14/77/c30f9964f481b5e0e29dd6a1fae1f769ac3fd468eb76fdd5661936edd262/ruff-0.12.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afcfa3ab5ab5dd0e1c39bf286d829e042a15e966b3726eea79528e2e24d8371a", size = 12419216, upload-time = "2025-07-17T17:26:48.883Z" }, { 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/6e/79/af7fe0a4202dce4ef62c5e33fecbed07f0178f5b4dd9c0d2fcff5ab4a47c/ruff-0.12.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c057ce464b1413c926cdb203a0f858cd52f3e73dcb3270a3318d1630f6395bb3", size = 11976756, upload-time = "2025-07-17T17:26:51.754Z" }, { 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/09/d1/33fb1fc00e20a939c305dbe2f80df7c28ba9193f7a85470b982815a2dc6a/ruff-0.12.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e64b90d1122dc2713330350626b10d60818930819623abbb56535c6466cce045", size = 11020019, upload-time = "2025-07-17T17:26:54.265Z" }, { 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/64/f4/e3cd7f7bda646526f09693e2e02bd83d85fff8a8222c52cf9681c0d30843/ruff-0.12.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2abc48f3d9667fdc74022380b5c745873499ff827393a636f7a59da1515e7c57", size = 11277890, upload-time = "2025-07-17T17:26:56.914Z" }, { 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/5e/d0/69a85fb8b94501ff1a4f95b7591505e8983f38823da6941eb5b6badb1e3a/ruff-0.12.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2b2449dc0c138d877d629bea151bee8c0ae3b8e9c43f5fcaafcd0c0d0726b184", size = 10348539, upload-time = "2025-07-17T17:26:59.381Z" }, { 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/16/a0/91372d1cb1678f7d42d4893b88c252b01ff1dffcad09ae0c51aa2542275f/ruff-0.12.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:56e45bb11f625db55f9b70477062e6a1a04d53628eda7784dce6e0f55fd549eb", size = 10009579, upload-time = "2025-07-17T17:27:02.462Z" }, { 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/23/1b/c4a833e3114d2cc0f677e58f1df6c3b20f62328dbfa710b87a1636a5e8eb/ruff-0.12.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:478fccdb82ca148a98a9ff43658944f7ab5ec41c3c49d77cd99d44da019371a1", size = 10942982, upload-time = "2025-07-17T17:27:05.343Z" }, { 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/ff/ce/ce85e445cf0a5dd8842f2f0c6f0018eedb164a92bdf3eda51984ffd4d989/ruff-0.12.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0fc426bec2e4e5f4c4f182b9d2ce6a75c85ba9bcdbe5c6f2a74fcb8df437df4b", size = 11343331, upload-time = "2025-07-17T17:27:08.652Z" }, { 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/35/cf/441b7fc58368455233cfb5b77206c849b6dfb48b23de532adcc2e50ccc06/ruff-0.12.4-py3-none-win32.whl", hash = "sha256:4de27977827893cdfb1211d42d84bc180fceb7b72471104671c59be37041cf93", size = 10267904, upload-time = "2025-07-17T17:27:11.814Z" }, { 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/ce/7e/20af4a0df5e1299e7368d5ea4350412226afb03d95507faae94c80f00afd/ruff-0.12.4-py3-none-win_amd64.whl", hash = "sha256:fe0b9e9eb23736b453143d72d2ceca5db323963330d5b7859d60d101147d461a", size = 11209038, upload-time = "2025-07-17T17:27:14.417Z" }, { 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/11/02/8857d0dfb8f44ef299a5dfd898f673edefb71e3b533b3b9d2db4c832dd13/ruff-0.12.4-py3-none-win_arm64.whl", hash = "sha256:0618ec4442a83ab545e5b71202a5c0ed7791e8471435b94e655b570a5031a98e", size = 10469336, upload-time = "2025-07-17T17:27:16.913Z" }, { 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]] [[package]]
name = "six" name = "six"
version = "1.16.0" version = "1.17.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041, upload-time = "2021-05-05T14:18:18.379Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053, upload-time = "2021-05-05T14:18:17.237Z" }, { 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]] [[package]]
name = "soupsieve" name = "soupsieve"
version = "2.6" version = "2.7"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/d7/ce/fbaeed4f9fb8b2daa961f90591662df6a86c1abf25c548329a86920aedfb/soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb", size = 101569, upload-time = "2024-08-13T13:39:12.166Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9", size = 36186, upload-time = "2024-08-13T13:39:10.986Z" }, { 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]] [[package]]
name = "sqlparse" name = "sqlparse"
version = "0.5.1" version = "0.5.3"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/73/82/dfa23ec2cbed08a801deab02fe7c904bfb00765256b155941d789a338c68/sqlparse-0.5.1.tar.gz", hash = "sha256:bb6b4df465655ef332548e24f08e205afc81b9ab86cb1c45657a7ff173a3a00e", size = 84502, upload-time = "2024-07-15T19:30:27.085Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/5d/a5/b2860373aa8de1e626b2bdfdd6df4355f0565b47e51f7d0c54fe70faf8fe/sqlparse-0.5.1-py3-none-any.whl", hash = "sha256:773dcbf9a5ab44a090f3441e2180efe2560220203dc2f8c0b0fa141e18b505e4", size = 44156, upload-time = "2024-07-15T19:30:25.033Z" }, { 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]] [[package]]
@@ -522,26 +550,35 @@ wheels = [
] ]
[[package]] [[package]]
name = "tzdata" name = "typing-extensions"
version = "2024.1" version = "4.14.1"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/74/5b/e025d02cb3b66b7b76093404392d4b44343c69101cc85f4d180dd5784717/tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd", size = 190559, upload-time = "2024-02-11T23:22:40.2Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/65/58/f9c9e6be752e9fcb8b6a0ee9fb87e6e7a1f6bcab2cdc73f02bb7ba91ada0/tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252", size = 345370, upload-time = "2024-02-11T23:22:38.223Z" }, { 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]] [[package]]
name = "urllib3" name = "urllib3"
version = "2.2.2" version = "2.5.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/43/6d/fa469ae21497ddc8bc93e5877702dca7cb8f911e337aca7452b5724f1bb6/urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168", size = 292266, upload-time = "2024-06-17T13:40:11.401Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/ca/1c/89ffc63a9605b583d5df2be791a27bc1a42b7c32bab68d3c8f2f73a98cd4/urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472", size = 121444, upload-time = "2024-06-17T13:40:07.795Z" }, { 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]] [[package]]
name = "wagtail" name = "wagtail"
version = "6.2.1" version = "7.3.1"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "anyascii" }, { name = "anyascii" },
@@ -551,34 +588,35 @@ dependencies = [
{ name = "django-modelcluster" }, { name = "django-modelcluster" },
{ name = "django-permissionedforms" }, { name = "django-permissionedforms" },
{ name = "django-taggit" }, { name = "django-taggit" },
{ name = "django-tasks" },
{ name = "django-treebeard" }, { name = "django-treebeard" },
{ name = "djangorestframework" }, { name = "djangorestframework" },
{ name = "draftjs-exporter" }, { name = "draftjs-exporter" },
{ name = "l18n" },
{ name = "laces" }, { name = "laces" },
{ name = "modelsearch" },
{ name = "openpyxl" }, { name = "openpyxl" },
{ name = "pillow" }, { name = "pillow" },
{ name = "requests" }, { name = "requests" },
{ name = "telepath" }, { name = "telepath" },
{ name = "willow", extra = ["heif"] }, { name = "willow", extra = ["heif"] },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/6d/97/97b59c6bcd913f394e9f475dd952466954e9959ca9e10a45d4b251141eae/wagtail-6.2.1.tar.gz", hash = "sha256:0f136ef23b157997a44fa46543a320a31437350951cf13add8ea8b69cc5e8385", size = 6516190, upload-time = "2024-08-20T15:40:59.778Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/ca/b0/942f6bca14bfc2fbe786ebbaa90a831b71cbe3592e3da3f34d6be9f775b1/wagtail-6.2.1-py3-none-any.whl", hash = "sha256:31d073ea8acdc973ef45c5719977a1bb122ad0fc3f01348f37e922128200b42a", size = 8976424, upload-time = "2024-08-20T15:40:54.365Z" }, { 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]] [[package]]
name = "wagtail-grapple" name = "wagtail-grapple"
version = "0.26.0" version = "0.29.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "graphene-django" }, { name = "graphene-django" },
{ name = "wagtail" }, { name = "wagtail" },
{ name = "wagtail-headless-preview" }, { name = "wagtail-headless-preview" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/fc/36/2ad789a09d78b786eccf359ff88a596bcacfff4b9dd6505b68ad3c7f62f5/wagtail_grapple-0.26.0.tar.gz", hash = "sha256:68be091f7feb95bfbe0377bd03c1814a64a6150ae964ec593670d995f11780e5", size = 38362, upload-time = "2024-06-26T10:39:30.511Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/7a/81/189560b651d61d71c81841f56249dcea3ab441bfcb2adb5afe7b5e516085/wagtail_grapple-0.26.0-py3-none-any.whl", hash = "sha256:de9d3c336d151279976d67f781c758ac5efc7d2bb003c2e311e6fbeea1554c41", size = 47759, upload-time = "2024-06-26T10:39:28.849Z" }, { 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]] [[package]]
@@ -595,24 +633,24 @@ wheels = [
[[package]] [[package]]
name = "whitenoise" name = "whitenoise"
version = "6.7.0" version = "6.12.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/64/b8/86451d63ef5e1a9c480b52759d9db25ba85c3420ebdaf039057ed152a4c1/whitenoise-6.7.0.tar.gz", hash = "sha256:58c7a6cd811e275a6c91af22e96e87da0b1109e9a53bb7464116ef4c963bf636", size = 24973, upload-time = "2024-06-19T16:20:09.11Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/b8/42/68400d8ad59f67a1f7e12c2f39089ce005f08f73333f3e215f3d5ed6453c/whitenoise-6.7.0-py3-none-any.whl", hash = "sha256:a1ae85e01fdc9815d12fa33f17765bc132ed2c54fa76daf9e39e879dd93566f6", size = 19905, upload-time = "2024-06-19T16:20:03.269Z" }, { 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]] [[package]]
name = "willow" name = "willow"
version = "1.8.0" version = "1.11.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "defusedxml" }, { name = "defusedxml" },
{ name = "filetype" }, { name = "filetype" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/77/c3/9d19db05d3abe0375e8d6bf2d3f7ea6f8df266d5ddabcc5a114c8a7cce1f/willow-1.8.0.tar.gz", hash = "sha256:ef3df6cde80d4914e719188147bef1d71c240edb118340e0c5957ecc8fe08315", size = 113313, upload-time = "2024-01-17T19:11:58.712Z" } 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 = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/95/7a/a48cf90bbf226f793d830c3bbdb7f0c4aa8087c08ce84cc864a1c882a457/willow-1.8.0-py3-none-any.whl", hash = "sha256:48ccf5ce48ccd29c37a32497cd7af50983f8570543c4de2988b15d583efc66be", size = 119223, upload-time = "2024-01-17T19:11:56.316Z" }, { 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] [package.optional-dependencies]
@@ -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", "")],
),
),
]
+1 -1
View File
@@ -1,6 +1,6 @@
# Based on https://github.com/vercel/next.js/tree/canary/examples/with-docker # 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 # Install dependencies only when needed
FROM base AS deps FROM base AS deps
+1 -1
View File
@@ -1,2 +1,2 @@
[tools] [tools]
node = "22" node = "24"
+7
View File
@@ -1,4 +1,8 @@
/** @type {import('next').NextConfig} */ /** @type {import('next').NextConfig} */
import path from "path";
import { fileURLToPath } from "url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const nextConfig = { const nextConfig = {
output: "standalone", output: "standalone",
images: { images: {
@@ -13,6 +17,9 @@ const nextConfig = {
}, },
], ],
}, },
turbopack: {
root: __dirname,
},
}; };
export default nextConfig; export default nextConfig;
+2323 -1724
View File
File diff suppressed because it is too large Load Diff
+28 -22
View File
@@ -3,38 +3,44 @@
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "next dev --turbopack", "dev": "next dev",
"build": "next build --turbopack", "build": "next build",
"start": "next start", "start": "next start",
"lint": "next lint", "lint": "next lint",
"codegen": "graphql-codegen" "codegen": "graphql-codegen"
}, },
"dependencies": { "dependencies": {
"@graphql-codegen/cli": "^5.0.7", "@graphql-codegen/cli": "^6.1.2",
"@graphql-codegen/client-preset": "^4.8.3", "@graphql-codegen/client-preset": "^5.2.3",
"@parcel/watcher": "^2.5.1", "@parcel/watcher": "^2.5.6",
"@sindresorhus/slugify": "^2.2.1", "@sindresorhus/slugify": "^3.0.0",
"@urql/next": "^1.1.5", "@urql/next": "^2.0.0",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"date-fns-tz": "^3.2.0", "date-fns-tz": "^3.2.0",
"graphql": "^16.11.0", "graphql": "^16.13.1",
"next": "^15.4.2", "next": "^16.1.6",
"nuqs": "^2.4.3", "nuqs": "^2.8.9",
"react": "^19.1.0", "react": "19.2.4",
"react-dom": "^19.1.0", "react-dom": "19.2.4",
"react-intersection-observer": "^9.16.0", "react-intersection-observer": "^10.0.3",
"sass": "^1.89.2", "react-photo-sphere-viewer": "^6.2.3",
"sharp": "^0.34.3", "sass": "^1.97.3",
"swiper": "^11.2.10", "sharp": "^0.34.5",
"urql": "^4.2.2", "swiper": "^12.1.2",
"use-debounce": "^10.0.5" "urql": "^5.0.1",
"use-debounce": "^10.1.0"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^22", "@types/node": "^24",
"@types/react": "^19.1.8", "@types/react": "19.2.14",
"@types/react-dom": "^19.1.6", "@types/react-dom": "19.2.3",
"baseline-browser-mapping": "^2.10.0",
"eslint": "^9", "eslint": "^9",
"eslint-config-next": "15.4.2", "eslint-config-next": "16.1.6",
"typescript": "^5" "typescript": "^5"
},
"overrides": {
"@types/react": "19.2.14",
"@types/react-dom": "19.2.3"
} }
} }
+4
View File
@@ -5,6 +5,7 @@ import { HomeFragment } from "@/gql/graphql";
import { getClient } from "@/app/client"; import { getClient } from "@/app/client";
import { FeaturedEvents } from "@/components/events/FeaturedEvents"; import { FeaturedEvents } from "@/components/events/FeaturedEvents";
import { NewsList } from "@/components/news/NewsList"; import { NewsList } from "@/components/news/NewsList";
import { Newsletter } from "@/components/general/Newsletter";
import { UpcomingEvents } from "@/components/events/UpcomingEvents"; import { UpcomingEvents } from "@/components/events/UpcomingEvents";
import { Pig } from "@/components/general/Pig"; import { Pig } from "@/components/general/Pig";
import Link from "next/link"; import Link from "next/link";
@@ -58,6 +59,7 @@ export default async function Home() {
]; ];
return ( return (
<>
<main className="site-main index" id="main"> <main className="site-main index" id="main">
<FeaturedEvents events={featuredEvents} /> <FeaturedEvents events={featuredEvents} />
<UpcomingEvents events={events} /> <UpcomingEvents events={events} />
@@ -89,5 +91,7 @@ export default async function Home() {
</div> </div>
<NewsList heading="Siste nytt" featured news={news} /> <NewsList heading="Siste nytt" featured news={news} />
</main> </main>
<Newsletter />
</>
); );
} }
+82
View File
@@ -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>
);
}
+17 -13
View File
@@ -6,6 +6,7 @@ import { FeaturedBlock } from "./FeaturedBlock";
import { AccordionBlock } from "./AccordionBlock"; import { AccordionBlock } from "./AccordionBlock";
import { EmbedBlock } from "./EmbedBlock"; import { EmbedBlock } from "./EmbedBlock";
import { FactBoxBlock } from "./FactBoxBlock"; import { FactBoxBlock } from "./FactBoxBlock";
import { PhotoSphereBlock } from "./PhotoSphereBlock";
import { PageSectionBlock, PageSectionNavigationBlock } from "./PageSection"; import { PageSectionBlock, PageSectionNavigationBlock } from "./PageSection";
import { ContactSectionBlock, ContactSubsectionBlock } from "./ContactSection"; import { ContactSectionBlock, ContactSubsectionBlock } from "./ContactSection";
import { ContactListBlock } from "./ContactListBlock"; import { ContactListBlock } from "./ContactListBlock";
@@ -21,46 +22,49 @@ export const Blocks = ({ blocks, pageContent }: { blocks: any, pageContent?: boo
return blocks.map((block: any) => { return blocks.map((block: any) => {
switch (block?.blockType) { switch (block?.blockType) {
case "RichTextBlock": case "RichTextBlock":
return <RichTextBlock block={block} />; return <RichTextBlock key={block.id} block={block} />;
break; break;
case "ImageWithTextBlock": case "ImageWithTextBlock":
return <ImageWithTextBlock block={block} />; return <ImageWithTextBlock key={block.id} block={block} />;
break; break;
case "EmbedBlock": case "EmbedBlock":
return <EmbedBlock block={block} />; return <EmbedBlock key={block.id} block={block} />;
break; break;
case "ImageSliderBlock": case "ImageSliderBlock":
return <ImageSliderBlock block={block} pageContent />; return <ImageSliderBlock key={block.id} block={block} pageContent />;
break; break;
case "HorizontalRuleBlock": case "HorizontalRuleBlock":
return <HorizontalRuleBlock block={block} />; return <HorizontalRuleBlock key={block.id} block={block} />;
break; break;
case "FeaturedBlock": case "FeaturedBlock":
return <FeaturedBlock block={block} />; return <FeaturedBlock key={block.id} block={block} />;
break; break;
case "AccordionBlock": case "AccordionBlock":
return <AccordionBlock block={block} />; return <AccordionBlock key={block.id} block={block} />;
break; break;
case "FactBoxBlock": case "FactBoxBlock":
return <FactBoxBlock block={block} />; return <FactBoxBlock key={block.id} block={block} />;
break;
case "PhotoSphereBlock":
return <PhotoSphereBlock key={block.id} block={block} />;
break; break;
case "PageSectionBlock": case "PageSectionBlock":
return <PageSectionBlock block={block} />; return <PageSectionBlock key={block.id} block={block} />;
break; break;
case "PageSectionNavigationBlock": case "PageSectionNavigationBlock":
return <PageSectionNavigationBlock sections={sections} />; return <PageSectionNavigationBlock sections={sections} />;
break; break;
case "ContactSectionBlock": case "ContactSectionBlock":
return <ContactSectionBlock block={block} />; return <ContactSectionBlock key={block.id} block={block} />;
break; break;
case "ContactSubsectionBlock": case "ContactSubsectionBlock":
return <ContactSubsectionBlock block={block} />; return <ContactSubsectionBlock key={block.id} block={block} />;
break; break;
case "ContactListBlock": case "ContactListBlock":
return <ContactListBlock block={block} />; return <ContactListBlock key={block.id} block={block} />;
break; break;
case "ContactEntityBlock": case "ContactEntityBlock":
return <ContactEntityBlock block={block} />; return <ContactEntityBlock key={block.id} block={block} />;
break; break;
case "NeufAddressSectionBlock": case "NeufAddressSectionBlock":
return <NeufAddressSectionBlock />; return <NeufAddressSectionBlock />;
@@ -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;
}
+31 -2
View File
@@ -1,5 +1,6 @@
"use client"; "use client";
import { useEffect } from "react";
import { import {
useQueryState, useQueryState,
parseAsStringLiteral, parseAsStringLiteral,
@@ -71,7 +72,8 @@ export const EventContainer = ({
/* /*
Allow filtering on all organizers that have upcoming events 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( const uniqueOrganizers: string[] = unique(
events events
@@ -79,12 +81,32 @@ export const EventContainer = ({
.flat() .flat()
.filter((x) => x.__typename === "EventOrganizer") .filter((x) => x.__typename === "EventOrganizer")
.map((x) => x.slug) .map((x) => x.slug)
.filter((x) => typeof x === "string") .filter((x) => typeof x === "string" && x !== "")
); );
const filterableOrganizers = uniqueOrganizers const filterableOrganizers = uniqueOrganizers
.map((slug) => eventOrganizers.find((haystack) => haystack.slug === slug)) .map((slug) => eventOrganizers.find((haystack) => haystack.slug === slug))
.filter((x) => x !== undefined) as EventOrganizer[]; .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 Allow filtering on all venues that have upcoming events
Filtering on a venue with no upcoming events will work, 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)) .map((x) => venues.find((haystack) => haystack.slug === x.slug))
.filter((x) => x !== undefined) as VenueFragment[]; .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 const filteredEvents = events
.filter( .filter(
(x) => (x) =>
@@ -157,6 +157,7 @@
.dates, .dates,
.details { .details {
font-family: var(--font-serif); font-family: var(--font-serif);
line-height: 1.24;
} }
+6
View File
@@ -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"/> <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> </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> </div>
); );
} }
File diff suppressed because one or more lines are too long
+23
View File
@@ -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 vårt nyhetsbrev og hold deg oppdatert arrangementer og siste nytt!</p>
</div>
<a href={link} target="_blank" className="button primary">
Meld deg
<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;
}
}
}
+40 -15
View File
@@ -49,6 +49,13 @@ export const Header = () => {
// let's add a santa hat during December // let's add a santa hat during December
const isChristmas = new Date().getMonth() === 11; 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 ( return (
<> <>
<header <header
@@ -57,7 +64,7 @@ export const Header = () => {
data-small={!isInView} data-small={!isInView}
> >
<Link href="/" aria-label="Hjem"> <Link href="/" aria-label="Hjem">
<Logo christmas={isChristmas} /> <Logo christmas={isChristmas} studentHat={pigWearsHat} />
</Link> </Link>
<nav className={styles.siteMenu}> <nav className={styles.siteMenu}>
<ul className={styles.mainMenu}> <ul className={styles.mainMenu}>
@@ -80,8 +87,13 @@ export const Header = () => {
</Link> </Link>
</li> </li>
<li> <li>
<Link href="/medlem" data-active={pathname === "/medlem"}> <Link href="/frivillig" data-active={pathname === "/frivillig"}>
Bli medlem Bli frivillig
</Link>
</li>
<li>
<Link href="/foreninger" data-active={pathname === "/foreninger"}>
Foreninger
</Link> </Link>
</li> </li>
</ul> </ul>
@@ -113,8 +125,16 @@ export const Header = () => {
</Link> </Link>
</li> </li>
<li className={styles.menuItemLarge}> <li className={styles.menuItemLarge}>
<Link href="/medlem" data-active={pathname === "/medlem"}> <Link href="/frivillig" data-active={pathname === "/frivillig"}>
Bli medlem Bli frivillig
</Link>
</li>
<li className={styles.menuItemLarge}>
<Link
href="/foreninger"
data-active={pathname === "/foreninger"}
>
Foreninger
</Link> </Link>
</li> </li>
<li className={styles.divider}> <li className={styles.divider}>
@@ -133,16 +153,13 @@ export const Header = () => {
</Link> </Link>
</li> </li>
<li> <li>
<Link href="/frivillig" data-active={pathname === "/frivillig"}> <Link href="/medlem" data-active={pathname === "/medlem"}>
Bli frivillig Bli medlem
</Link> </Link>
</li> </li>
<li> <li>
<Link <Link href="/sponsorer" data-active={pathname === "/sponsorer"}>
href="/foreninger" Sponsorer
data-active={pathname === "/foreninger"}
>
Foreninger
</Link> </Link>
</li> </li>
<li className={styles.galtinn}> <li className={styles.galtinn}>
@@ -173,7 +190,7 @@ export const Header = () => {
{!isInView ? ( {!isInView ? (
<LogoIcon face="left" christmas={isChristmas} /> <LogoIcon face="left" christmas={isChristmas} />
) : ( ) : (
<Logo christmas={isChristmas} /> <Logo christmas={isChristmas} studentHat={pigWearsHat} />
)} )}
</Link> </Link>
<nav className={styles.siteMenu}> <nav className={styles.siteMenu}>
@@ -197,8 +214,16 @@ export const Header = () => {
</Link> </Link>
</li> </li>
<li> <li>
<Link href="/medlem" data-active={pathname === "/medlem"}> <Link href="/frivillig" data-active={pathname === "/frivillig"}>
Bli medlem Bli frivillig
</Link>
</li>
<li>
<Link
href="/foreninger"
data-active={pathname === "/foreninger"}
>
Foreninger
</Link> </Link>
</li> </li>
</ul> </ul>
@@ -49,7 +49,6 @@ function capitalizeFirstLetter(s: string) {
} }
function linkTo(page: any): string | null { function linkTo(page: any): string | null {
console.log(page)
if (page.__typename === "EventPage") { if (page.__typename === "EventPage") {
return `/arrangementer/${page.slug}`; 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;
}
}
+27 -9
View File
@@ -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 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 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 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 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 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 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 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 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 ...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 {\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 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 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 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 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, "\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 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 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 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 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 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 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 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 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 ...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 {\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 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 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 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 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, "\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. * 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 "]; 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. * 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. * 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. * 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. * 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 ...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 {\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 {\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. * 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. * 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. * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/ */
+3529 -669
View File
File diff suppressed because one or more lines are too long
+28 -2
View File
@@ -91,8 +91,8 @@ export function formatHumanReadableList(array: (string | number)[]): string {
return array.slice(0, -1).join(", ") + " og " + array[length - 1]; return array.slice(0, -1).join(", ") + " og " + array[length - 1];
} }
const OneLevelOfBlocksFragmentDefinition = graphql(` const LeafBlocksFragmentDefinition = graphql(`
fragment OneLevelOfBlocks on StreamFieldInterface { fragment LeafBlocks on StreamFieldInterface {
id id
blockType blockType
field field
@@ -164,6 +164,32 @@ const OneLevelOfBlocksFragmentDefinition = graphql(`
backgroundColor backgroundColor
factBoxBody: body 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
View File
@@ -44,7 +44,9 @@ export function formatExtendedDateTime(
const timePart = dateOnly ? "" : " 'kl.' HH:mm"; const timePart = dateOnly ? "" : " 'kl.' HH:mm";
const isCurrentYear = parsed.getFullYear() === new Date().getFullYear(); const isCurrentYear = parsed.getFullYear() === new Date().getFullYear();
const yearPart = (!isCurrentYear || alwaysIncludeYear) ? " yyyy" : ""; 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( export function isTodayOrFuture(
+3 -9
View File
@@ -53,7 +53,7 @@ const EventFragmentDefinition = graphql(`
pig pig
} }
} }
occurrences { occurrences(limit: 5000) {
... on EventOccurrence { ... on EventOccurrence {
__typename __typename
id id
@@ -123,24 +123,18 @@ export const eventsOverviewQuery = graphql(`
} }
} }
} }
eventCategories: eventCategories { eventCategories: eventCategories(limit: 5000) {
... on EventCategory { ... on EventCategory {
name name
slug slug
showInFilters showInFilters
} }
} }
eventOrganizers: eventOrganizers { eventOrganizers: eventOrganizers(limit: 5000) {
... on EventOrganizer { ... on EventOrganizer {
id id
name name
slug slug
externalUrl
association {
... on AssociationPage {
url
}
}
} }
} }
venues: pages(contentType: "venues.VenuePage") { venues: pages(contentType: "venues.VenuePage") {
+3 -2
View File
@@ -14,7 +14,7 @@
"moduleResolution": "bundler", "moduleResolution": "bundler",
"resolveJsonModule": true, "resolveJsonModule": true,
"isolatedModules": true, "isolatedModules": true,
"jsx": "preserve", "jsx": "react-jsx",
"incremental": true, "incremental": true,
"plugins": [ "plugins": [
{ {
@@ -32,7 +32,8 @@
"next-env.d.ts", "next-env.d.ts",
"**/*.ts", "**/*.ts",
"**/*.tsx", "**/*.tsx",
".next/types/**/*.ts" ".next/types/**/*.ts",
".next/dev/types/**/*.ts"
], ],
"exclude": [ "exclude": [
"node_modules" "node_modules"