Install curlylint

This commit is contained in:
Jake Howard 2022-08-03 20:22:02 +01:00
parent 668bcc7d5b
commit e096dd8cf5
Signed by: jake
GPG key ID: 57AFB45680EDD477
20 changed files with 193 additions and 171 deletions

View file

@ -103,6 +103,11 @@ mypy:
script: script:
- mypy . - mypy .
curlylint:
<<: *python_test_template
script:
- curlylint .
prettier: prettier:
<<: *node_test_template <<: *node_test_template
script: script:

View file

@ -37,6 +37,7 @@ lint_python:
isort --check . isort --check .
flake8 flake8
mypy . --show-error-codes mypy . --show-error-codes
curlylint .
@lint_node: @lint_node:
npm run lint npm run lint

15
pyproject.toml Normal file
View file

@ -0,0 +1,15 @@
[tool.curlylint]
include = '/(website|templates)/.*\.html'
exclude = '''
(
navbar\.html
| referrallink_snippet_link\.html
| onlineaccount_snippet_link\.html
| base\.html
| 500\.html
)
'''
[tool.curlylint.rules]
indent = 2
html_has_lang = 'en-GB'

View file

@ -10,3 +10,4 @@ django-browser-reload
django-debug-toolbar django-debug-toolbar
types-requests types-requests
mypy mypy
curlylint

View file

@ -7,13 +7,15 @@
anyascii==0.3.1 # via -r requirements/base.txt, wagtail anyascii==0.3.1 # via -r requirements/base.txt, wagtail
asgiref==3.5.2 # via -r requirements/base.txt, django asgiref==3.5.2 # via -r requirements/base.txt, django
async-timeout==4.0.2 # via -r requirements/base.txt, redis async-timeout==4.0.2 # via -r requirements/base.txt, redis
attrs==22.1.0 # via curlylint
beautifulsoup4==4.9.3 # via -r requirements/base.txt, wagtail beautifulsoup4==4.9.3 # via -r requirements/base.txt, wagtail
black==22.6.0 # via -r requirements/dev.in black==22.6.0 # via -r requirements/dev.in
brotli==1.0.9 # via -r requirements/base.txt, whitenoise brotli==1.0.9 # via -r requirements/base.txt, whitenoise
build==0.8.0 # via pip-tools build==0.8.0 # via pip-tools
certifi==2022.6.15 # via -r requirements/base.txt, requests certifi==2022.6.15 # via -r requirements/base.txt, requests
charset-normalizer==2.1.0 # via -r requirements/base.txt, requests charset-normalizer==2.1.0 # via -r requirements/base.txt, requests
click==8.1.3 # via -r requirements/base.txt, black, pip-tools, rq click==8.1.3 # via -r requirements/base.txt, black, curlylint, pip-tools, rq
curlylint==0.13.1 # via -r requirements/dev.in
deprecated==1.2.13 # via -r requirements/base.txt, redis deprecated==1.2.13 # via -r requirements/base.txt, redis
django==4.0.6 # via -r requirements/base.txt, django-browser-reload, django-debug-toolbar, django-filter, django-htmx, django-modelcluster, django-permissionedforms, django-redis, django-rq, django-taggit, django-treebeard, djangorestframework, wagtail django==4.0.6 # via -r requirements/base.txt, django-browser-reload, django-debug-toolbar, django-filter, django-htmx, django-modelcluster, django-permissionedforms, django-redis, django-rq, django-taggit, django-treebeard, djangorestframework, wagtail
django-browser-reload==1.6.0 # via -r requirements/dev.in django-browser-reload==1.6.0 # via -r requirements/dev.in
@ -44,7 +46,8 @@ mypy==0.971 # via -r requirements/dev.in
mypy-extensions==0.4.3 # via black, mypy mypy-extensions==0.4.3 # via black, mypy
openpyxl==3.0.10 # via -r requirements/base.txt, tablib openpyxl==3.0.10 # via -r requirements/base.txt, tablib
packaging==21.3 # via -r requirements/base.txt, build, redis packaging==21.3 # via -r requirements/base.txt, build, redis
pathspec==0.9.0 # via black parsy==1.1.0 # via curlylint
pathspec==0.9.0 # via black, curlylint
pep517==0.12.0 # via build pep517==0.12.0 # via build
pillow==9.2.0 # via -r requirements/base.txt, wagtail pillow==9.2.0 # via -r requirements/base.txt, wagtail
pip-tools==6.8.0 # via -r requirements/dev.in pip-tools==6.8.0 # via -r requirements/dev.in
@ -63,6 +66,7 @@ soupsieve==2.3.2.post1 # via -r requirements/base.txt, beautifulsoup4
sqlparse==0.4.2 # via -r requirements/base.txt, django, django-debug-toolbar sqlparse==0.4.2 # via -r requirements/base.txt, django, django-debug-toolbar
tablib[xls,xlsx]==3.2.1 # via -r requirements/base.txt, wagtail tablib[xls,xlsx]==3.2.1 # via -r requirements/base.txt, wagtail
telepath==0.2 # via -r requirements/base.txt, wagtail telepath==0.2 # via -r requirements/base.txt, wagtail
toml==0.10.2 # via curlylint
tomli==2.0.1 # via black, build, mypy, pep517 tomli==2.0.1 # via black, build, mypy, pep517
types-requests==2.28.5 # via -r requirements/dev.in types-requests==2.28.5 # via -r requirements/dev.in
types-urllib3==1.26.17 # via types-requests types-urllib3==1.26.17 # via types-requests

View file

@ -5,7 +5,7 @@
{% block body_class %}template-404{% endblock %} {% block body_class %}template-404{% endblock %}
{% block content %} {% block content %}
<h1>Page not found</h1> <h1>Page not found</h1>
<h2>Sorry, this page could not be found.</h2> <h2>Sorry, this page could not be found.</h2>
{% endblock %} {% endblock %}

View file

@ -1,13 +1,12 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en" dir="ltr"> <html lang="en-GB">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Internal server error</title> <title>Internal server error</title>
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
</head> </head>
<body> <body>
<h1>Internal server error</h1> <h1>Internal server error</h1>
<h2>Sorry, there seems to be an error. Please try again soon.</h2>
<h2>Sorry, there seems to be an error. Please try again soon.</h2> </body>
</body>
</html> </html>

View file

@ -1,14 +1,14 @@
{% load static wagtailcore_tags wagtailuserbar navbar_tags footer_tags cache %} {% load static wagtailcore_tags wagtailuserbar navbar_tags footer_tags cache %}
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en-GB">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title> <title>
{% block title %}{% endblock %} {% block title %}{% endblock %}
{% block title_suffix %} {% block title_suffix %}
{% wagtail_site as current_site %} {% wagtail_site as current_site %}
{% if current_site and current_site.site_name %}:: {{ current_site.site_name }}{% endif %} {% if current_site and current_site.site_name %}:: {{ current_site.site_name }}{% endif %}
{% endblock %} {% endblock %}
</title> </title>
<meta name="description" content="" /> <meta name="description" content="" />
@ -25,7 +25,7 @@
{% wagtailuserbar %} {% wagtailuserbar %}
{% cache 3600 "navbar" %} {% cache 3600 "navbar" %}
{% navbar %} {% navbar %}
{% endcache %} {% endcache %}
{% block main %} {% block main %}
@ -35,10 +35,9 @@
{% endblock %} {% endblock %}
{% cache 3600 "footer" %} {% cache 3600 "footer" %}
{% footer %} {% footer %}
{% endcache %} {% endcache %}
<script async defer type="text/javascript" src="{% static 'js/base.js' %}"></script> <script async defer type="text/javascript" src="{% static 'js/base.js' %}"></script>
<script async defer type="text/javascript" src="{% static 'contrib/htmx/htmx.min.js' %}"></script> <script async defer type="text/javascript" src="{% static 'contrib/htmx/htmx.min.js' %}"></script>

View file

@ -2,18 +2,18 @@
{% block content %} {% block content %}
{% include "common/hero.html" %} {% include "common/hero.html" %}
{% if page.body_html %} {% if page.body_html %}
<section class="container content"> <section class="container content">
{{ page.body_html|safe }} {{ page.body_html|safe }}
</section>
{% endif %}
<section class="container">
{% for collection in collections %}
{% include "common/listing-item.html" with page=collection %}
{% endfor %}
</section> </section>
{% endif %}
<section class="container">
{% for collection in collections %}
{% include "common/listing-item.html" with page=collection %}
{% endfor %}
</section>
{% endblock content %} {% endblock content %}

View file

@ -2,18 +2,18 @@
{% block content %} {% block content %}
{% include "common/hero.html" %} {% include "common/hero.html" %}
{% if page.body_html %} {% if page.body_html %}
<section class="container content"> <section class="container content">
{{ page.body_html|safe }} {{ page.body_html|safe }}
</section>
{% endif %}
<section class="container">
{% for page in pages %}
{% include "common/listing-item.html" %}
{% endfor %}
</section> </section>
{% endif %}
<section class="container">
{% for page in pages %}
{% include "common/listing-item.html" %}
{% endfor %}
</section>
{% endblock content %} {% endblock content %}

View file

@ -2,26 +2,26 @@
{% block content %} {% block content %}
{% include "common/hero.html" %} {% include "common/hero.html" %}
{% if page.body_html %} {% if page.body_html %}
<section class="container content"> <section class="container content">
{{ page.body_html|safe }} {{ page.body_html|safe }}
</section>
{% endif %}
<section class="container">
{% for page in child_pages %}
{% if not filtering_by_tag %}
{% ifchanged %}
<time datetime="{{ page.date|date:'c' }}" title='{{ page.date|date:"F Y" }}'>
<h3 id="{{ page.date|date:'Y-m' }}" class="date-header">{{ page.date|date:"Y-m" }}</h3>
</time>
{% endifchanged %}
{% endif %}
{% include "common/listing-item.html" %}
{% endfor %}
</section> </section>
{% endif %}
<section class="container">
{% for page in child_pages %}
{% if not filtering_by_tag %}
{% ifchanged %}
<time datetime="{{ page.date|date:'c' }}" title='{{ page.date|date:"F Y" }}'>
<h3 id="{{ page.date|date:'Y-m' }}" class="date-header">{{ page.date|date:"Y-m" }}</h3>
</time>
{% endifchanged %}
{% endif %}
{% include "common/listing-item.html" %}
{% endfor %}
</section>
{% endblock content %} {% endblock content %}

View file

@ -2,18 +2,18 @@
{% block content %} {% block content %}
{% include "common/hero.html" %} {% include "common/hero.html" %}
{% if page.body_html %} {% if page.body_html %}
<section class="container content"> <section class="container content">
{{ page.body_html|safe }} {{ page.body_html|safe }}
</section>
{% endif %}
<section class="container">
{% for tag in tags %}
{% include "common/listing-item.html" with page=tag %}
{% endfor %}
</section> </section>
{% endif %}
<section class="container">
{% for tag in tags %}
{% include "common/listing-item.html" with page=tag %}
{% endfor %}
</section>
{% endblock content %} {% endblock content %}

View file

@ -2,18 +2,18 @@
{% block content %} {% block content %}
{% include "common/hero.html" %} {% include "common/hero.html" %}
{% if page.body_html %} {% if page.body_html %}
<section class="container content"> <section class="container content">
{{ page.body_html|safe }} {{ page.body_html|safe }}
</section>
{% endif %}
<section class="container">
{% for page in pages %}
{% include "common/listing-item.html" %}
{% endfor %}
</section> </section>
{% endif %}
<section class="container">
{% for page in pages %}
{% include "common/listing-item.html" %}
{% endfor %}
</section>
{% endblock content %} {% endblock content %}

View file

@ -4,13 +4,13 @@
{% block content %} {% block content %}
{% include "common/hero.html" %} {% include "common/hero.html" %}
<section class="container content"> <section class="container content">
{{ page.body_html|safe }} {{ page.body_html|safe }}
</section> </section>
{% include "common/shareon.html" %} {% include "common/shareon.html" %}
{% endblock %} {% endblock %}

View file

@ -2,18 +2,18 @@
{% block content %} {% block content %}
{% include "common/hero.html" %} {% include "common/hero.html" %}
{% if page.body_html %} {% if page.body_html %}
<section class="container content"> <section class="container content">
{{ page.body_html|safe }} {{ page.body_html|safe }}
</section>
{% endif %}
<section class="container">
{% for page in child_pages %}
{% include "common/listing-item.html" %}
{% endfor %}
</section> </section>
{% endif %}
<section class="container">
{% for page in child_pages %}
{% include "common/listing-item.html" %}
{% endfor %}
</section>
{% endblock content %} {% endblock content %}

View file

@ -35,5 +35,4 @@
</a> </a>
</div> </div>
</div> </div>
</div>
</nav> </nav>

View file

@ -1,10 +1,10 @@
<li> <li>
<a href="#{{ toc_item.slug }}">{{ toc_item.title }}</a> <a href="#{{ toc_item.slug }}">{{ toc_item.title }}</a>
{% if toc_item.children %} {% if toc_item.children %}
<ul> <ul>
{% for toc_item in toc_item.children %} {% for toc_item in toc_item.children %}
{% include "common/toc-item.html" %} {% include "common/toc-item.html" %}
{% endfor %} {% endfor %}
</ul> </ul>
{% endif %} {% endif %}
</li> </li>

View file

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

View file

@ -3,16 +3,16 @@
{% load wagtailcore_tags wagtailimages_tags %} {% load wagtailcore_tags wagtailimages_tags %}
{% block main %} {% block main %}
<main {% if page.image %}style="background-image: url({% image_url page.image 'width-1200' %})"{% endif %}> <main {% if page.image %}style="background-image: url({% image_url page.image 'width-1200' %})"{% endif %}>
<div class="heading-wrapper"> <div class="heading-wrapper">
<h1>{{ page.heading }}</h1> <h1>{{ page.heading }}</h1>
<input id="search-input" class="input" type="text" placeholder="Search"> <input id="search-input" class="input" type="text" placeholder="Search">
</div>
{% if latest_blog_post %}
<div class="box latest">
<strong>Latest Post</strong>: <a href="{% pageurl latest_blog_post %}">{{ latest_blog_post.title }}</a> &rarr;
</div> </div>
{% endif %}
</main> {% if latest_blog_post %}
<div class="box latest">
<strong>Latest Post</strong>: <a href="{% pageurl latest_blog_post %}">{{ latest_blog_post.title }}</a> &rarr;
</div>
{% endif %}
</main>
{% endblock %} {% endblock %}

View file

@ -4,48 +4,48 @@
{% block content %} {% block content %}
{% include "common/hero.html" %} {% include "common/hero.html" %}
{% if page.body_html %} {% if page.body_html %}
<section class="container content"> <section class="container content">
{{ page.body_html|safe }} {{ page.body_html|safe }}
</section>
{% endif %}
<section class="container search-controls">
<div class="field">
<p class="control has-icons-left has-icons-right">
<input
type="search"
class="input"
name="q"
placeholder="Search"
hx-get="{{ search_url }}"
hx-trigger="keyup changed delay:300ms, search{% if search_query %}, load{% endif %}"
hx-target="#search-results"
autocomplete="off"
value="{{ search_query }}"
hx-indicator="#search-indicator"
>
<span class="icon is-small is-left">
<i class="fas fa-search"></i>
</span>
<span class="icon is-small is-right htmx-indicator" id="search-indicator">
<i class="fas fa-circle-notch"></i>
</span>
</p>
</div>
</section> </section>
{% endif %}
<section class="container search-controls"> <section class="container" id="search-results-container">
<div class="field"> <p id="result-count"></p>
<p class="control has-icons-left has-icons-right">
<input
type="search"
class="input"
name="q"
placeholder="Search"
hx-get="{{ search_url }}"
hx-trigger="keyup changed delay:300ms, search{% if search_query %}, load{% endif %}"
hx-target="#search-results"
autocomplete="off"
value="{{ search_query }}"
hx-indicator="#search-indicator"
>
<span class="icon is-small is-left">
<i class="fas fa-search"></i>
</span>
<span class="icon is-small is-right htmx-indicator" id="search-indicator">
<i class="fas fa-circle-notch"></i>
</span>
</p>
</div>
</section>
<section class="container" id="search-results-container"> <div id="search-results">
<p id="result-count"></p> {% if not search_query %}
{% include "search/enter-search-term.html" %}
<div id="search-results"> {% endif %}
{% if not search_query %} </div>
{% include "search/enter-search-term.html" %} </section>
{% endif %}
</div>
</section>
{% endblock %} {% endblock %}