Add a Wagtail search page
It doesn't do any searching, yet
This commit is contained in:
parent
0601ced3f5
commit
b92f2f4043
7 changed files with 1012 additions and 79 deletions
979
website/search/migrations/0001_initial.py
Normal file
979
website/search/migrations/0001_initial.py
Normal file
|
@ -0,0 +1,979 @@
|
|||
# Generated by Django 4.0.5 on 2022-07-26 07:38
|
||||
|
||||
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):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0069_log_entry_jsonfield"),
|
||||
("unsplash", "0002_unsplashphoto_created_and_more"),
|
||||
("images", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="SearchPage",
|
||||
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),
|
||||
),
|
||||
]
|
0
website/search/migrations/__init__.py
Normal file
0
website/search/migrations/__init__.py
Normal file
22
website/search/models.py
Normal file
22
website/search/models.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
from django.utils.functional import cached_property
|
||||
|
||||
from website.common.models import BaseContentMixin, BasePage
|
||||
from website.common.utils import TocEntry
|
||||
|
||||
|
||||
class SearchPage(BaseContentMixin, BasePage): # type: ignore[misc]
|
||||
max_count = 1
|
||||
subpage_types: list = []
|
||||
parent_page_types = ["home.HomePage"]
|
||||
content_panels = BasePage.content_panels + BaseContentMixin.content_panels
|
||||
|
||||
@cached_property
|
||||
def reading_time(self) -> int:
|
||||
"""
|
||||
How does one read a search page?
|
||||
"""
|
||||
return 0
|
||||
|
||||
@cached_property
|
||||
def table_of_contents(self) -> list[TocEntry]:
|
||||
return []
|
|
@ -1,38 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
{% load static wagtailcore_tags %}
|
||||
|
||||
{% block body_class %}template-searchresults{% endblock %}
|
||||
|
||||
{% block title %}Search{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Search</h1>
|
||||
|
||||
<form action="{% url 'search' %}" method="get">
|
||||
<input type="text" name="query"{% if search_query %} value="{{ search_query }}"{% endif %}>
|
||||
<input type="submit" value="Search" class="button">
|
||||
</form>
|
||||
|
||||
{% if search_results %}
|
||||
<ul>
|
||||
{% for result in search_results %}
|
||||
<li>
|
||||
<h4><a href="{% pageurl result %}">{{ result }}</a></h4>
|
||||
{% if result.search_description %}
|
||||
{{ result.search_description }}
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% if search_results.has_previous %}
|
||||
<a href="{% url 'search' %}?query={{ search_query|urlencode }}&page={{ search_results.previous_page_number }}">Previous</a>
|
||||
{% endif %}
|
||||
|
||||
{% if search_results.has_next %}
|
||||
<a href="{% url 'search' %}?query={{ search_query|urlencode }}&page={{ search_results.next_page_number }}">Next</a>
|
||||
{% endif %}
|
||||
{% elif search_query %}
|
||||
No results found
|
||||
{% endif %}
|
||||
{% endblock %}
|
11
website/search/templates/search/search_page.html
Normal file
11
website/search/templates/search/search_page.html
Normal file
|
@ -0,0 +1,11 @@
|
|||
{% extends "wagtail_base.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% include "common/hero.html" %}
|
||||
|
||||
<section class="container content">
|
||||
{{ page.body_html|safe }}
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
|
@ -1,38 +0,0 @@
|
|||
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
|
||||
from django.http.request import HttpRequest
|
||||
from django.template.response import TemplateResponse
|
||||
from wagtail.models import Page
|
||||
from wagtail.search.models import Query
|
||||
|
||||
|
||||
def search(request: HttpRequest) -> TemplateResponse:
|
||||
search_query = request.GET.get("query", None)
|
||||
page = request.GET.get("page", 1)
|
||||
|
||||
# Search
|
||||
if search_query:
|
||||
search_results = Page.objects.live().search(search_query)
|
||||
query = Query.get(search_query)
|
||||
|
||||
# Record hit
|
||||
query.add_hit()
|
||||
else:
|
||||
search_results = Page.objects.none()
|
||||
|
||||
# Pagination
|
||||
paginator = Paginator(search_results, 10)
|
||||
try:
|
||||
search_results = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
search_results = paginator.page(1)
|
||||
except EmptyPage:
|
||||
search_results = paginator.page(paginator.num_pages)
|
||||
|
||||
return TemplateResponse(
|
||||
request,
|
||||
"search/search.html",
|
||||
{
|
||||
"search_query": search_query,
|
||||
"search_results": search_results,
|
||||
},
|
||||
)
|
|
@ -6,13 +6,10 @@ from wagtail.admin import urls as wagtailadmin_urls
|
|||
from wagtail.documents import urls as wagtaildocs_urls
|
||||
from wagtail.images.views.serve import ServeView
|
||||
|
||||
from website.search import views as search_views
|
||||
|
||||
urlpatterns = [
|
||||
path("django-admin/", admin.site.urls),
|
||||
path("admin/", include(wagtailadmin_urls)),
|
||||
path("documents/", include(wagtaildocs_urls)),
|
||||
path("search/", search_views.search, name="search"),
|
||||
path(
|
||||
"code-block/",
|
||||
include("website.contrib.code_block.urls"),
|
||||
|
|
Loading…
Reference in a new issue