Add the basics of a contact page with accounts list

This commit is contained in:
Jake Howard 2022-07-20 09:15:20 +01:00
parent 9b7a2b2c21
commit 10094515da
Signed by: jake
GPG Key ID: 57AFB45680EDD477
3 changed files with 1039 additions and 0 deletions

View File

@ -0,0 +1,978 @@
# Generated by Django 4.0.5 on 2022-07-20 07:58
import django.db.models.deletion
import wagtail.blocks
import wagtail.embeds.blocks
import wagtail.fields
import wagtail.images.blocks
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("images", "0001_initial"),
("unsplash", "0002_unsplashphoto_created_and_more"),
("wagtailcore", "0069_log_entry_jsonfield"),
("contact", "0001_initial"),
]
operations = [
migrations.CreateModel(
name="ContactPage",
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",
),
),
("subtitle", models.CharField(blank=True, max_length=255)),
(
"body",
wagtail.fields.StreamField(
[
("embed", wagtail.embeds.blocks.EmbedBlock()),
(
"rich_text",
wagtail.blocks.RichTextBlock(
features=[
"h2",
"h3",
"h4",
"h5",
"h6",
"bold",
"italic",
"ol",
"ul",
"link",
"document-link",
"code",
"strikethrough",
"snippet-link",
"snippet-embed",
]
),
),
(
"lorem",
wagtail.blocks.StructBlock(
[
(
"paragraphs",
wagtail.blocks.IntegerBlock(min_value=1),
)
]
),
),
("html", wagtail.blocks.RawHTMLBlock()),
(
"image",
wagtail.blocks.StructBlock(
[
(
"image",
wagtail.images.blocks.ImageChooserBlock(),
),
(
"caption",
wagtail.blocks.RichTextBlock(
features=[
"bold",
"italic",
"link",
"document-link",
"code",
"strikethrough",
"snippet-link",
]
),
),
]
),
),
(
"code",
wagtail.blocks.StructBlock(
[
(
"language",
wagtail.blocks.ChoiceBlock(
choices=[
("ABAP", "ABAP"),
("ABNF", "ABNF"),
("ADL", "ADL"),
("AMDGPU", "AMDGPU"),
(
"ANSYS parametric design language",
"ANSYS parametric design language",
),
("ANTLR", "ANTLR"),
(
"ANTLR With ActionScript Target",
"ANTLR With ActionScript Target",
),
(
"ANTLR With C# Target",
"ANTLR With C# Target",
),
(
"ANTLR With CPP Target",
"ANTLR With CPP Target",
),
(
"ANTLR With Java Target",
"ANTLR With Java Target",
),
(
"ANTLR With ObjectiveC Target",
"ANTLR With ObjectiveC Target",
),
(
"ANTLR With Perl Target",
"ANTLR With Perl Target",
),
(
"ANTLR With Python Target",
"ANTLR With Python Target",
),
(
"ANTLR With Ruby Target",
"ANTLR With Ruby Target",
),
("APL", "APL"),
("ASCII armored", "ASCII armored"),
("ActionScript", "ActionScript"),
(
"ActionScript 3",
"ActionScript 3",
),
("Ada", "Ada"),
("Agda", "Agda"),
("Aheui", "Aheui"),
("Alloy", "Alloy"),
("AmbientTalk", "AmbientTalk"),
("Ampl", "Ampl"),
("Angular2", "Angular2"),
("ApacheConf", "ApacheConf"),
("AppleScript", "AppleScript"),
("Arduino", "Arduino"),
("Arrow", "Arrow"),
("AspectJ", "AspectJ"),
("Asymptote", "Asymptote"),
("Augeas", "Augeas"),
("AutoIt", "AutoIt"),
("Awk", "Awk"),
("BARE", "BARE"),
("BBC Basic", "BBC Basic"),
("BBCode", "BBCode"),
("BC", "BC"),
("BNF", "BNF"),
("BST", "BST"),
("BUGS", "BUGS"),
("Base Makefile", "Base Makefile"),
("Bash", "Bash"),
("Bash Session", "Bash Session"),
("Batchfile", "Batchfile"),
("Bdd", "Bdd"),
("Befunge", "Befunge"),
("Berry", "Berry"),
("BibTeX", "BibTeX"),
("BlitzBasic", "BlitzBasic"),
("BlitzMax", "BlitzMax"),
("Boa", "Boa"),
("Boo", "Boo"),
("Boogie", "Boogie"),
("Brainfuck", "Brainfuck"),
("C", "C"),
("C#", "C#"),
("C++", "C++"),
("CAmkES", "CAmkES"),
("CBM BASIC V2", "CBM BASIC V2"),
("CDDL", "CDDL"),
("CFEngine3", "CFEngine3"),
("CMake", "CMake"),
("COBOL", "COBOL"),
("COBOLFree", "COBOLFree"),
("CPSA", "CPSA"),
("CSS", "CSS"),
(
"CSS+Django/Jinja",
"CSS+Django/Jinja",
),
(
"CSS+Genshi Text",
"CSS+Genshi Text",
),
("CSS+Lasso", "CSS+Lasso"),
("CSS+Mako", "CSS+Mako"),
("CSS+Myghty", "CSS+Myghty"),
("CSS+PHP", "CSS+PHP"),
("CSS+Ruby", "CSS+Ruby"),
("CSS+Smarty", "CSS+Smarty"),
("CSS+UL4", "CSS+UL4"),
(
"CSS+mozpreproc",
"CSS+mozpreproc",
),
("CUDA", "CUDA"),
("Cap'n Proto", "Cap'n Proto"),
("CapDL", "CapDL"),
("Ceylon", "Ceylon"),
("ChaiScript", "ChaiScript"),
("Chapel", "Chapel"),
("Charmci", "Charmci"),
("Cheetah", "Cheetah"),
("Cirru", "Cirru"),
("Clay", "Clay"),
("Clean", "Clean"),
("Clojure", "Clojure"),
("ClojureScript", "ClojureScript"),
("CoffeeScript", "CoffeeScript"),
(
"Coldfusion CFC",
"Coldfusion CFC",
),
(
"Coldfusion HTML",
"Coldfusion HTML",
),
("Common Lisp", "Common Lisp"),
(
"Component Pascal",
"Component Pascal",
),
("Coq", "Coq"),
("Crmsh", "Crmsh"),
("Croc", "Croc"),
("Cryptol", "Cryptol"),
("Crystal", "Crystal"),
(
"Csound Document",
"Csound Document",
),
(
"Csound Orchestra",
"Csound Orchestra",
),
("Csound Score", "Csound Score"),
("Cypher", "Cypher"),
("Cython", "Cython"),
("D", "D"),
("DASM16", "DASM16"),
("DTD", "DTD"),
("Darcs Patch", "Darcs Patch"),
("Dart", "Dart"),
(
"Debian Control file",
"Debian Control file",
),
(
"Debian Sourcelist",
"Debian Sourcelist",
),
("Delphi", "Delphi"),
("Devicetree", "Devicetree"),
("Diff", "Diff"),
("Django/Jinja", "Django/Jinja"),
("Docker", "Docker"),
("Duel", "Duel"),
("Dylan", "Dylan"),
("Dylan session", "Dylan session"),
("DylanLID", "DylanLID"),
("E-mail", "E-mail"),
("EBNF", "EBNF"),
("ECL", "ECL"),
("ERB", "ERB"),
("Earl Grey", "Earl Grey"),
("Easytrieve", "Easytrieve"),
("Eiffel", "Eiffel"),
("Elixir", "Elixir"),
(
"Elixir iex session",
"Elixir iex session",
),
("Elm", "Elm"),
("Elpi", "Elpi"),
("EmacsLisp", "EmacsLisp"),
(
"Embedded Ragel",
"Embedded Ragel",
),
("Erlang", "Erlang"),
(
"Erlang erl session",
"Erlang erl session",
),
("Evoque", "Evoque"),
("Ezhil", "Ezhil"),
("F#", "F#"),
("FStar", "FStar"),
("Factor", "Factor"),
("Fancy", "Fancy"),
("Fantom", "Fantom"),
("Felix", "Felix"),
("Fennel", "Fennel"),
("Fish", "Fish"),
("Flatline", "Flatline"),
("FloScript", "FloScript"),
("Forth", "Forth"),
("Fortran", "Fortran"),
("FortranFixed", "FortranFixed"),
("FoxPro", "FoxPro"),
("Freefem", "Freefem"),
("Futhark", "Futhark"),
("GAP", "GAP"),
("GAS", "GAS"),
("GDScript", "GDScript"),
("GLSL", "GLSL"),
("GSQL", "GSQL"),
("Genshi", "Genshi"),
("Genshi Text", "Genshi Text"),
(
"Gettext Catalog",
"Gettext Catalog",
),
("Gherkin", "Gherkin"),
("Gnuplot", "Gnuplot"),
("Go", "Go"),
("Golo", "Golo"),
("GoodData-CL", "GoodData-CL"),
("Gosu", "Gosu"),
("Gosu Template", "Gosu Template"),
("Graphviz", "Graphviz"),
("Groff", "Groff"),
("Groovy", "Groovy"),
("HLSL", "HLSL"),
("HSAIL", "HSAIL"),
("HTML", "HTML"),
(
"HTML + Angular2",
"HTML + Angular2",
),
("HTML+Cheetah", "HTML+Cheetah"),
(
"HTML+Django/Jinja",
"HTML+Django/Jinja",
),
("HTML+Evoque", "HTML+Evoque"),
("HTML+Genshi", "HTML+Genshi"),
(
"HTML+Handlebars",
"HTML+Handlebars",
),
("HTML+Lasso", "HTML+Lasso"),
("HTML+Mako", "HTML+Mako"),
("HTML+Myghty", "HTML+Myghty"),
("HTML+PHP", "HTML+PHP"),
("HTML+Smarty", "HTML+Smarty"),
("HTML+Twig", "HTML+Twig"),
("HTML+UL4", "HTML+UL4"),
("HTML+Velocity", "HTML+Velocity"),
("HTTP", "HTTP"),
("Haml", "Haml"),
("Handlebars", "Handlebars"),
("Haskell", "Haskell"),
("Haxe", "Haxe"),
("Hexdump", "Hexdump"),
("Hspec", "Hspec"),
("Hxml", "Hxml"),
("Hy", "Hy"),
("Hybris", "Hybris"),
("IDL", "IDL"),
("INI", "INI"),
("IRC logs", "IRC logs"),
("Icon", "Icon"),
("Idris", "Idris"),
("Igor", "Igor"),
("Inform 6", "Inform 6"),
(
"Inform 6 template",
"Inform 6 template",
),
("Inform 7", "Inform 7"),
("Io", "Io"),
("Ioke", "Ioke"),
("Isabelle", "Isabelle"),
("J", "J"),
("JAGS", "JAGS"),
("JCL", "JCL"),
("JSGF", "JSGF"),
("JSLT", "JSLT"),
("JSON", "JSON"),
("JSON-LD", "JSON-LD"),
(
"JSONBareObject",
"JSONBareObject",
),
("Jasmin", "Jasmin"),
("Java", "Java"),
(
"Java Server Page",
"Java Server Page",
),
("JavaScript", "JavaScript"),
(
"JavaScript+Cheetah",
"JavaScript+Cheetah",
),
(
"JavaScript+Django/Jinja",
"JavaScript+Django/Jinja",
),
(
"JavaScript+Genshi Text",
"JavaScript+Genshi Text",
),
(
"JavaScript+Lasso",
"JavaScript+Lasso",
),
(
"JavaScript+Mako",
"JavaScript+Mako",
),
(
"JavaScript+Myghty",
"JavaScript+Myghty",
),
(
"JavaScript+PHP",
"JavaScript+PHP",
),
(
"JavaScript+Ruby",
"JavaScript+Ruby",
),
(
"JavaScript+Smarty",
"JavaScript+Smarty",
),
(
"Javascript+UL4",
"Javascript+UL4",
),
(
"Javascript+mozpreproc",
"Javascript+mozpreproc",
),
("Julia", "Julia"),
("Julia console", "Julia console"),
("Juttle", "Juttle"),
("K", "K"),
("Kal", "Kal"),
("Kconfig", "Kconfig"),
("Kernel log", "Kernel log"),
("Koka", "Koka"),
("Kotlin", "Kotlin"),
("Kuin", "Kuin"),
("LLVM", "LLVM"),
("LLVM-MIR", "LLVM-MIR"),
("LLVM-MIR Body", "LLVM-MIR Body"),
("LSL", "LSL"),
("Lasso", "Lasso"),
("Lean", "Lean"),
("LessCss", "LessCss"),
(
"Lighttpd configuration file",
"Lighttpd configuration file",
),
("LilyPond", "LilyPond"),
("Limbo", "Limbo"),
("Literate Agda", "Literate Agda"),
(
"Literate Cryptol",
"Literate Cryptol",
),
(
"Literate Haskell",
"Literate Haskell",
),
(
"Literate Idris",
"Literate Idris",
),
("LiveScript", "LiveScript"),
("Logos", "Logos"),
("Logtalk", "Logtalk"),
("Lua", "Lua"),
("MAQL", "MAQL"),
("MCFunction", "MCFunction"),
("MIME", "MIME"),
("MOOCode", "MOOCode"),
("MQL", "MQL"),
("MSDOS Session", "MSDOS Session"),
("MXML", "MXML"),
("Macaulay2", "Macaulay2"),
("Makefile", "Makefile"),
("Mako", "Mako"),
("Markdown", "Markdown"),
("Mask", "Mask"),
("Mason", "Mason"),
("Mathematica", "Mathematica"),
("Matlab", "Matlab"),
(
"Matlab session",
"Matlab session",
),
("Maxima", "Maxima"),
("Meson", "Meson"),
("MiniD", "MiniD"),
("MiniScript", "MiniScript"),
("Modelica", "Modelica"),
("Modula-2", "Modula-2"),
(
"MoinMoin/Trac Wiki markup",
"MoinMoin/Trac Wiki markup",
),
("Monkey", "Monkey"),
("Monte", "Monte"),
("MoonScript", "MoonScript"),
("Mosel", "Mosel"),
("Mscgen", "Mscgen"),
("MuPAD", "MuPAD"),
("MySQL", "MySQL"),
("Myghty", "Myghty"),
("NASM", "NASM"),
("NCL", "NCL"),
("NSIS", "NSIS"),
("Nemerle", "Nemerle"),
("NestedText", "NestedText"),
("NewLisp", "NewLisp"),
("Newspeak", "Newspeak"),
(
"Nginx configuration file",
"Nginx configuration file",
),
("Nimrod", "Nimrod"),
("Nit", "Nit"),
("Nix", "Nix"),
(
"Node.js REPL console session",
"Node.js REPL console session",
),
("Notmuch", "Notmuch"),
("NuSMV", "NuSMV"),
("NumPy", "NumPy"),
("OCaml", "OCaml"),
("ODIN", "ODIN"),
(
"OMG Interface Definition Language",
"OMG Interface Definition Language",
),
("Objective-C", "Objective-C"),
("Objective-C++", "Objective-C++"),
("Objective-J", "Objective-J"),
("Octave", "Octave"),
("Ooc", "Ooc"),
("Opa", "Opa"),
("OpenEdge ABL", "OpenEdge ABL"),
("PEG", "PEG"),
("PHP", "PHP"),
("PL/pgSQL", "PL/pgSQL"),
("POVRay", "POVRay"),
("PacmanConf", "PacmanConf"),
("Pan", "Pan"),
("ParaSail", "ParaSail"),
("Pawn", "Pawn"),
("Perl", "Perl"),
("Perl6", "Perl6"),
("Pig", "Pig"),
("Pike", "Pike"),
("PkgConfig", "PkgConfig"),
("Pointless", "Pointless"),
("Pony", "Pony"),
("PostScript", "PostScript"),
(
"PostgreSQL SQL dialect",
"PostgreSQL SQL dialect",
),
(
"PostgreSQL console (psql)",
"PostgreSQL console (psql)",
),
("PowerShell", "PowerShell"),
(
"PowerShell Session",
"PowerShell Session",
),
("Praat", "Praat"),
("Procfile", "Procfile"),
("Prolog", "Prolog"),
("PromQL", "PromQL"),
("Properties", "Properties"),
(
"Protocol Buffer",
"Protocol Buffer",
),
(
"PsySH console session for PHP",
"PsySH console session for PHP",
),
("Pug", "Pug"),
("Puppet", "Puppet"),
("PyPy Log", "PyPy Log"),
("Python", "Python"),
("Python 2.x", "Python 2.x"),
(
"Python 2.x Traceback",
"Python 2.x Traceback",
),
(
"Python Traceback",
"Python Traceback",
),
(
"Python console session",
"Python console session",
),
("Python+UL4", "Python+UL4"),
("Q", "Q"),
("QBasic", "QBasic"),
("QML", "QML"),
("QVTO", "QVTO"),
("Qlik", "Qlik"),
("RConsole", "RConsole"),
("REBOL", "REBOL"),
("RHTML", "RHTML"),
("RPMSpec", "RPMSpec"),
("RQL", "RQL"),
("RSL", "RSL"),
("Racket", "Racket"),
("Ragel", "Ragel"),
(
"Ragel in C Host",
"Ragel in C Host",
),
(
"Ragel in CPP Host",
"Ragel in CPP Host",
),
(
"Ragel in D Host",
"Ragel in D Host",
),
(
"Ragel in Java Host",
"Ragel in Java Host",
),
(
"Ragel in Objective C Host",
"Ragel in Objective C Host",
),
(
"Ragel in Ruby Host",
"Ragel in Ruby Host",
),
(
"Raw token data",
"Raw token data",
),
("Rd", "Rd"),
("ReasonML", "ReasonML"),
("Red", "Red"),
("Redcode", "Redcode"),
(
"Relax-NG Compact",
"Relax-NG Compact",
),
(
"ResourceBundle",
"ResourceBundle",
),
("Rexx", "Rexx"),
("Ride", "Ride"),
("Rita", "Rita"),
(
"Roboconf Graph",
"Roboconf Graph",
),
(
"Roboconf Instances",
"Roboconf Instances",
),
(
"RobotFramework",
"RobotFramework",
),
("Ruby", "Ruby"),
(
"Ruby irb session",
"Ruby irb session",
),
("Rust", "Rust"),
("S", "S"),
("SARL", "SARL"),
("SAS", "SAS"),
("SCSS", "SCSS"),
("SNBT", "SNBT"),
("SPARQL", "SPARQL"),
("SQL", "SQL"),
("SWIG", "SWIG"),
("Sass", "Sass"),
("Savi", "Savi"),
("Scala", "Scala"),
(
"Scalate Server Page",
"Scalate Server Page",
),
("Scaml", "Scaml"),
("Scheme", "Scheme"),
("Scilab", "Scilab"),
("Sed", "Sed"),
("ShExC", "ShExC"),
("Shen", "Shen"),
("Sieve", "Sieve"),
("Silver", "Silver"),
("Singularity", "Singularity"),
("Slash", "Slash"),
("Slim", "Slim"),
("Slurm", "Slurm"),
("Smali", "Smali"),
("Smalltalk", "Smalltalk"),
(
"SmartGameFormat",
"SmartGameFormat",
),
("Smarty", "Smarty"),
("Smithy", "Smithy"),
("Snobol", "Snobol"),
("Snowball", "Snowball"),
("Solidity", "Solidity"),
("Sophia", "Sophia"),
("SourcePawn", "SourcePawn"),
("Spice", "Spice"),
("SquidConf", "SquidConf"),
("Srcinfo", "Srcinfo"),
("Stan", "Stan"),
("Standard ML", "Standard ML"),
("Stata", "Stata"),
("SuperCollider", "SuperCollider"),
("Swift", "Swift"),
("TADS 3", "TADS 3"),
("TAP", "TAP"),
("TASM", "TASM"),
("TOML", "TOML"),
("Tal", "Tal"),
("Tcl", "Tcl"),
("Tcsh", "Tcsh"),
("Tcsh Session", "Tcsh Session"),
("TeX", "TeX"),
("Tea", "Tea"),
(
"Tera Term macro",
"Tera Term macro",
),
("Termcap", "Termcap"),
("Terminfo", "Terminfo"),
("Terraform", "Terraform"),
("Text only", "Text only"),
("Text output", "Text output"),
("ThingsDB", "ThingsDB"),
("Thrift", "Thrift"),
("Todotxt", "Todotxt"),
("TrafficScript", "TrafficScript"),
("Transact-SQL", "Transact-SQL"),
("Treetop", "Treetop"),
("Turtle", "Turtle"),
("Twig", "Twig"),
("TypeScript", "TypeScript"),
("TypoScript", "TypoScript"),
(
"TypoScriptCssData",
"TypoScriptCssData",
),
(
"TypoScriptHtmlData",
"TypoScriptHtmlData",
),
(
"Typographic Number Theory",
"Typographic Number Theory",
),
("UL4", "UL4"),
("USD", "USD"),
("Unicon", "Unicon"),
(
"Unix/Linux config files",
"Unix/Linux config files",
),
("UrbiScript", "UrbiScript"),
("VB.net", "VB.net"),
("VBScript", "VBScript"),
("VCL", "VCL"),
("VCLSnippets", "VCLSnippets"),
("VCTreeStatus", "VCTreeStatus"),
("VGL", "VGL"),
("Vala", "Vala"),
("Velocity", "Velocity"),
("VimL", "VimL"),
("WDiff", "WDiff"),
("Web IDL", "Web IDL"),
("WebAssembly", "WebAssembly"),
("Whiley", "Whiley"),
("X10", "X10"),
("XML", "XML"),
("XML+Cheetah", "XML+Cheetah"),
(
"XML+Django/Jinja",
"XML+Django/Jinja",
),
("XML+Evoque", "XML+Evoque"),
("XML+Lasso", "XML+Lasso"),
("XML+Mako", "XML+Mako"),
("XML+Myghty", "XML+Myghty"),
("XML+PHP", "XML+PHP"),
("XML+Ruby", "XML+Ruby"),
("XML+Smarty", "XML+Smarty"),
("XML+UL4", "XML+UL4"),
("XML+Velocity", "XML+Velocity"),
("XQuery", "XQuery"),
("XSLT", "XSLT"),
(
"XUL+mozpreproc",
"XUL+mozpreproc",
),
("Xorg", "Xorg"),
("Xtend", "Xtend"),
("YAML", "YAML"),
("YAML+Jinja", "YAML+Jinja"),
("YANG", "YANG"),
("Zeek", "Zeek"),
("Zephir", "Zephir"),
("Zig", "Zig"),
("aspx-cs", "aspx-cs"),
("aspx-vb", "aspx-vb"),
("autohotkey", "autohotkey"),
("c-objdump", "c-objdump"),
("cADL", "cADL"),
(
"ca65 assembler",
"ca65 assembler",
),
("cfstatement", "cfstatement"),
("cplint", "cplint"),
("cpp-objdump", "cpp-objdump"),
("d-objdump", "d-objdump"),
("dg", "dg"),
("eC", "eC"),
("execline", "execline"),
("g-code", "g-code"),
("liquid", "liquid"),
(
"mozhashpreproc",
"mozhashpreproc",
),
(
"mozpercentpreproc",
"mozpercentpreproc",
),
("nesC", "nesC"),
("objdump", "objdump"),
("objdump-nasm", "objdump-nasm"),
(
"reStructuredText",
"reStructuredText",
),
("reg", "reg"),
("scdoc", "scdoc"),
("sqlite3con", "sqlite3con"),
("systemverilog", "systemverilog"),
("teal", "teal"),
("tiddler", "tiddler"),
("ucode", "ucode"),
("verilog", "verilog"),
("vhdl", "vhdl"),
("xtlang", "xtlang"),
]
),
),
("source", wagtail.blocks.TextBlock()),
]
),
),
(
"tangent",
wagtail.blocks.StructBlock(
[
(
"name",
wagtail.blocks.CharBlock(max_length=64),
),
(
"content",
wagtail.blocks.RichTextBlock(
features=[
"bold",
"italic",
"ol",
"ul",
"link",
"document-link",
"code",
"strikethrough",
"snippet-link",
]
),
),
]
),
),
(
"mermaid",
wagtail.blocks.StructBlock(
[
("source", wagtail.blocks.TextBlock()),
(
"caption",
wagtail.blocks.RichTextBlock(
features=[
"bold",
"italic",
"link",
"document-link",
"code",
"strikethrough",
"snippet-link",
]
),
),
]
),
),
],
blank=True,
use_json_field=True,
),
),
(
"hero_image",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="images.customimage",
),
),
(
"hero_unsplash_photo",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="unsplash.unsplashphoto",
),
),
],
options={
"abstract": False,
},
bases=("wagtailcore.page", models.Model),
),
]

View File

@ -1,7 +1,13 @@
from django.db import models
from django.http.request import HttpRequest
from django.utils.functional import cached_property
from django.utils.text import slugify
from wagtail.admin.panels import FieldPanel
from wagtail.snippets.models import register_snippet
from website.common.models import BaseContentMixin, BasePage
from website.common.utils import TocEntry
@register_snippet
class OnlineAccount(models.Model):
@ -17,3 +23,32 @@ class OnlineAccount(models.Model):
def __str__(self) -> str:
return self.name
@cached_property
def slug(self) -> str:
return slugify(self.name)
class ContactPage(BaseContentMixin, BasePage): # type: ignore[misc]
max_count = 1
subpage_types: list = []
content_panels = BasePage.content_panels + BaseContentMixin.content_panels
@cached_property
def reading_time(self) -> int:
"""
How does one read a list page?
"""
return 0
@cached_property
def table_of_contents(self) -> list[TocEntry]:
return [
TocEntry(account.name, account.slug, 0, [])
for account in OnlineAccount.objects.all().order_by("name")
]
def get_context(self, request: HttpRequest) -> dict:
context = super().get_context(request)
context["accounts"] = OnlineAccount.objects.all().order_by("name")
return context

View File

@ -0,0 +1,26 @@
{% extends "wagtail_base.html" %}
{% block content %}
{% include "common/hero.html" %}
<section class="container content">
{{ page.body_html|safe }}
</section>
<section class="container">
{% for account in accounts %}
<div class="card mt-4" id="{{ account.slug }}">
<div class="card-content">
<div class="media">
<div class="media-content">
<p class="title is-4"><a href="{{ account.url }}">{{ account.name }}</a></p>
<p class="subtitle is-6">{{ account.username }}</p>
</div>
</div>
</div>
</div>
{% endfor %}
</section>
{% endblock %}