From a1d72c122ab188d0994e7ed42666b0f513351339 Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Mon, 27 Jun 2022 23:29:55 +0100 Subject: [PATCH] Add code block --- requirements.txt | 1 + static/src/scss/_bulma_overrides.scss | 1 + templates/base.html | 1 + ...oglistpage_body_alter_blogpostpage_body.py | 1443 +++++++++++++++++ ...contentpage_body_alter_listingpage_body.py | 1443 +++++++++++++++++ website/common/streamfield.py | 3 + website/contrib/README.md | 0 website/contrib/__init__.py | 0 website/contrib/code_block/README.md | 3 + website/contrib/code_block/__init__.py | 0 website/contrib/code_block/blocks.py | 33 + .../templates/contrib/blocks/code.html | 1 + website/contrib/code_block/tests.py | 20 + website/contrib/code_block/urls.py | 7 + website/contrib/code_block/views.py | 16 + website/settings.py | 1 + website/urls.py | 4 + 17 files changed, 2977 insertions(+) create mode 100644 website/blog/migrations/0006_alter_bloglistpage_body_alter_blogpostpage_body.py create mode 100644 website/common/migrations/0007_alter_contentpage_body_alter_listingpage_body.py create mode 100644 website/contrib/README.md create mode 100644 website/contrib/__init__.py create mode 100644 website/contrib/code_block/README.md create mode 100644 website/contrib/code_block/__init__.py create mode 100644 website/contrib/code_block/blocks.py create mode 100644 website/contrib/code_block/templates/contrib/blocks/code.html create mode 100644 website/contrib/code_block/tests.py create mode 100644 website/contrib/code_block/urls.py create mode 100644 website/contrib/code_block/views.py diff --git a/requirements.txt b/requirements.txt index f1fa167..3a44c8f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,4 @@ Django==4.0.5 wagtail==3.0 django-environ==0.8.1 whitenoise[brotli]==6.2.0 +pygments==2.12.0 diff --git a/static/src/scss/_bulma_overrides.scss b/static/src/scss/_bulma_overrides.scss index 6598979..7ec1bcb 100644 --- a/static/src/scss/_bulma_overrides.scss +++ b/static/src/scss/_bulma_overrides.scss @@ -1,3 +1,4 @@ @use "bulma/sass/utilities/initial-variables" as *; $container-max-width: $widescreen; +$pre-background: unset; diff --git a/templates/base.html b/templates/base.html index e19a83d..c0a4763 100644 --- a/templates/base.html +++ b/templates/base.html @@ -16,6 +16,7 @@ + {% block extra_css %}{% endblock %} diff --git a/website/blog/migrations/0006_alter_bloglistpage_body_alter_blogpostpage_body.py b/website/blog/migrations/0006_alter_bloglistpage_body_alter_blogpostpage_body.py new file mode 100644 index 0000000..2388366 --- /dev/null +++ b/website/blog/migrations/0006_alter_bloglistpage_body_alter_blogpostpage_body.py @@ -0,0 +1,1443 @@ +# Generated by Django 4.0.5 on 2022-06-27 22:29 + +import wagtail.blocks +import wagtail.embeds.blocks +import wagtail.fields +import wagtail.images.blocks +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("blog", "0005_alter_bloglistpage_body_alter_blogpostpage_body"), + ] + + operations = [ + migrations.AlterField( + model_name="bloglistpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("embed", wagtail.embeds.blocks.EmbedBlock()), + ( + "rich_text", + wagtail.blocks.RichTextBlock( + features=[ + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "bold", + "italic", + "ol", + "ul", + "link", + "document-link", + "code", + "strikethrough", + ] + ), + ), + ( + "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", + ] + ), + ), + ] + ), + ), + ( + "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()), + ] + ), + ), + ], + blank=True, + use_json_field=True, + ), + ), + migrations.AlterField( + model_name="blogpostpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("embed", wagtail.embeds.blocks.EmbedBlock()), + ( + "rich_text", + wagtail.blocks.RichTextBlock( + features=[ + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "bold", + "italic", + "ol", + "ul", + "link", + "document-link", + "code", + "strikethrough", + ] + ), + ), + ( + "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", + ] + ), + ), + ] + ), + ), + ( + "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()), + ] + ), + ), + ], + blank=True, + use_json_field=True, + ), + ), + ] diff --git a/website/common/migrations/0007_alter_contentpage_body_alter_listingpage_body.py b/website/common/migrations/0007_alter_contentpage_body_alter_listingpage_body.py new file mode 100644 index 0000000..f5a80f8 --- /dev/null +++ b/website/common/migrations/0007_alter_contentpage_body_alter_listingpage_body.py @@ -0,0 +1,1443 @@ +# Generated by Django 4.0.5 on 2022-06-27 22:29 + +import wagtail.blocks +import wagtail.embeds.blocks +import wagtail.fields +import wagtail.images.blocks +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("common", "0006_alter_contentpage_body_alter_listingpage_body"), + ] + + operations = [ + migrations.AlterField( + model_name="contentpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("embed", wagtail.embeds.blocks.EmbedBlock()), + ( + "rich_text", + wagtail.blocks.RichTextBlock( + features=[ + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "bold", + "italic", + "ol", + "ul", + "link", + "document-link", + "code", + "strikethrough", + ] + ), + ), + ( + "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", + ] + ), + ), + ] + ), + ), + ( + "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()), + ] + ), + ), + ], + blank=True, + use_json_field=True, + ), + ), + migrations.AlterField( + model_name="listingpage", + name="body", + field=wagtail.fields.StreamField( + [ + ("embed", wagtail.embeds.blocks.EmbedBlock()), + ( + "rich_text", + wagtail.blocks.RichTextBlock( + features=[ + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "bold", + "italic", + "ol", + "ul", + "link", + "document-link", + "code", + "strikethrough", + ] + ), + ), + ( + "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", + ] + ), + ), + ] + ), + ), + ( + "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()), + ] + ), + ), + ], + blank=True, + use_json_field=True, + ), + ), + ] diff --git a/website/common/streamfield.py b/website/common/streamfield.py index e63dce0..b67280e 100644 --- a/website/common/streamfield.py +++ b/website/common/streamfield.py @@ -7,6 +7,8 @@ from wagtail import blocks from wagtail.embeds.blocks import EmbedBlock from wagtail.images.blocks import ImageChooserBlock +from website.contrib.code_block.blocks import CodeBlock + IGNORE_PLAINTEXT_BLOCKS = (blocks.RawHTMLBlock, EmbedBlock) RICH_TEXT_FEATURES = [ @@ -68,6 +70,7 @@ def get_blocks() -> list[tuple[str, blocks.BaseBlock]]: ("lorem", LoremBlock()), ("html", blocks.RawHTMLBlock()), ("image", ImageCaptionBlock()), + ("code", CodeBlock()), ] diff --git a/website/contrib/README.md b/website/contrib/README.md new file mode 100644 index 0000000..e69de29 diff --git a/website/contrib/__init__.py b/website/contrib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/website/contrib/code_block/README.md b/website/contrib/code_block/README.md new file mode 100644 index 0000000..254cffc --- /dev/null +++ b/website/contrib/code_block/README.md @@ -0,0 +1,3 @@ +# `code_block` + +Heavily based on [`wagtail-pygments`](https://github.com/truongvan/wagtail-pygments), with several changes to the block, as well as a view for exposing the CSS styles. diff --git a/website/contrib/code_block/__init__.py b/website/contrib/code_block/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/website/contrib/code_block/blocks.py b/website/contrib/code_block/blocks.py new file mode 100644 index 0000000..0f76a5d --- /dev/null +++ b/website/contrib/code_block/blocks.py @@ -0,0 +1,33 @@ +from typing import Iterator + +from django.utils.safestring import mark_safe +from pygments import highlight +from pygments.formatters.html import HtmlFormatter +from pygments.lexers import get_all_lexers, get_lexer_by_name +from wagtail.blocks import ChoiceBlock, StructBlock, StructValue, TextBlock + + +def get_language_choices() -> Iterator[tuple[str, str]]: + for name, _, _, _ in sorted(get_all_lexers()): + yield (name, name) + + +class CodeStructValue(StructValue): + def code(self) -> str: + lexer = get_lexer_by_name(self.get("language")) + formatter = HtmlFormatter( + linenos=None, + ) + return mark_safe(highlight(self.get("source"), lexer, formatter)) + + +class CodeBlock(StructBlock): + language = ChoiceBlock( + choices=get_language_choices(), + ) + source = TextBlock() + + class Meta: + icon = "code" + value_class = CodeStructValue + template = "contrib/blocks/code.html" diff --git a/website/contrib/code_block/templates/contrib/blocks/code.html b/website/contrib/code_block/templates/contrib/blocks/code.html new file mode 100644 index 0000000..97af219 --- /dev/null +++ b/website/contrib/code_block/templates/contrib/blocks/code.html @@ -0,0 +1 @@ +{{ value.code }} diff --git a/website/contrib/code_block/tests.py b/website/contrib/code_block/tests.py new file mode 100644 index 0000000..2c5edd8 --- /dev/null +++ b/website/contrib/code_block/tests.py @@ -0,0 +1,20 @@ +from django.test import TestCase +from django.urls import reverse +from pygments.styles import get_all_styles + + +class PygmentsStylesTestCase(TestCase): + def test_accessible(self) -> None: + for style in get_all_styles(): + with self.subTest(style=style): + response = self.client.get( + reverse("static-pygments:styles", args=[style]) + ) + self.assertEqual(response.status_code, 200) + self.assertEqual(response["Cache-Control"], "max-age=3600, public") + + def test_unknown_style(self) -> None: + response = self.client.get( + reverse("static-pygments:styles", args=["not-a-style"]) + ) + self.assertEqual(response.status_code, 404) diff --git a/website/contrib/code_block/urls.py b/website/contrib/code_block/urls.py new file mode 100644 index 0000000..8e61e93 --- /dev/null +++ b/website/contrib/code_block/urls.py @@ -0,0 +1,7 @@ +from django.urls import path + +from .views import pygments_styles + +app_name = "code_block" + +urlpatterns = [path(".css", pygments_styles, name="styles")] diff --git a/website/contrib/code_block/views.py b/website/contrib/code_block/views.py new file mode 100644 index 0000000..cd79ff5 --- /dev/null +++ b/website/contrib/code_block/views.py @@ -0,0 +1,16 @@ +from django.http import Http404, HttpRequest, HttpResponse +from django.views.decorators.cache import cache_control +from pygments.formatters.html import HtmlFormatter +from pygments.util import ClassNotFound + + +@cache_control(max_age=3600, public=True) +def pygments_styles(request: HttpRequest, name: str) -> HttpResponse: + try: + formatter = HtmlFormatter(style=name) + except ClassNotFound: + # Raising an exception here bypasses the cache header + raise Http404 + return HttpResponse( + formatter.get_style_defs("." + formatter.cssclass), content_type="text/css" + ) diff --git a/website/settings.py b/website/settings.py index 83b9148..b940d91 100644 --- a/website/settings.py +++ b/website/settings.py @@ -23,6 +23,7 @@ INSTALLED_APPS = [ "website.home", "website.search", "website.blog", + "website.contrib.code_block", "wagtail.contrib.forms", "wagtail.contrib.redirects", "wagtail.contrib.modeladmin", diff --git a/website/urls.py b/website/urls.py index d4d06bb..7644ea4 100644 --- a/website/urls.py +++ b/website/urls.py @@ -13,6 +13,10 @@ urlpatterns = [ path("admin/", include(wagtailadmin_urls)), path("documents/", include(wagtaildocs_urls)), path("search/", search_views.search, name="search"), + path( + "static-pygments/", + include("website.contrib.code_block.urls", namespace="static-pygments"), + ), re_path( r"^images/([^/]*)/(\d*)/([^/]*)/[^/]*$", ServeView.as_view(action="redirect"),