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:
- mypy .
curlylint:
<<: *python_test_template
script:
- curlylint .
prettier:
<<: *node_test_template
script:

View File

@ -37,6 +37,7 @@ lint_python:
isort --check .
flake8
mypy . --show-error-codes
curlylint .
@lint_node:
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
types-requests
mypy
curlylint

View File

@ -7,13 +7,15 @@
anyascii==0.3.1 # via -r requirements/base.txt, wagtail
asgiref==3.5.2 # via -r requirements/base.txt, django
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
black==22.6.0 # via -r requirements/dev.in
brotli==1.0.9 # via -r requirements/base.txt, whitenoise
build==0.8.0 # via pip-tools
certifi==2022.6.15 # 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
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
@ -44,7 +46,8 @@ mypy==0.971 # via -r requirements/dev.in
mypy-extensions==0.4.3 # via black, mypy
openpyxl==3.0.10 # via -r requirements/base.txt, tablib
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
pillow==9.2.0 # via -r requirements/base.txt, wagtail
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
tablib[xls,xlsx]==3.2.1 # 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
types-requests==2.28.5 # via -r requirements/dev.in
types-urllib3==1.26.17 # via types-requests

View File

@ -5,7 +5,7 @@
{% block body_class %}template-404{% endblock %}
{% 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 %}

View File

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

View File

@ -1,14 +1,14 @@
{% load static wagtailcore_tags wagtailuserbar navbar_tags footer_tags cache %}
<!DOCTYPE html>
<html lang="en">
<html lang="en-GB">
<head>
<meta charset="utf-8" />
<title>
{% block title %}{% endblock %}
{% block title_suffix %}
{% wagtail_site as current_site %}
{% if current_site and current_site.site_name %}:: {{ current_site.site_name }}{% endif %}
{% wagtail_site as current_site %}
{% if current_site and current_site.site_name %}:: {{ current_site.site_name }}{% endif %}
{% endblock %}
</title>
<meta name="description" content="" />
@ -25,7 +25,7 @@
{% wagtailuserbar %}
{% cache 3600 "navbar" %}
{% navbar %}
{% navbar %}
{% endcache %}
{% block main %}
@ -35,10 +35,9 @@
{% endblock %}
{% cache 3600 "footer" %}
{% footer %}
{% footer %}
{% endcache %}
<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>

View File

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

View File

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

View File

@ -2,26 +2,26 @@
{% block content %}
{% include "common/hero.html" %}
{% include "common/hero.html" %}
{% if page.body_html %}
<section class="container content">
{{ page.body_html|safe }}
{% if page.body_html %}
<section class="container content">
{{ 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>
{% 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 %}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -3,16 +3,16 @@
{% load wagtailcore_tags wagtailimages_tags %}
{% block main %}
<main {% if page.image %}style="background-image: url({% image_url page.image 'width-1200' %})"{% endif %}>
<div class="heading-wrapper">
<h1>{{ page.heading }}</h1>
<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;
<main {% if page.image %}style="background-image: url({% image_url page.image 'width-1200' %})"{% endif %}>
<div class="heading-wrapper">
<h1>{{ page.heading }}</h1>
<input id="search-input" class="input" type="text" placeholder="Search">
</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 %}

View File

@ -4,48 +4,48 @@
{% block content %}
{% include "common/hero.html" %}
{% include "common/hero.html" %}
{% if page.body_html %}
<section class="container content">
{{ page.body_html|safe }}
{% if page.body_html %}
<section class="container content">
{{ 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>
{% 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 class="container" id="search-results-container">
<p id="result-count"></p>
<section class="container" id="search-results-container">
<p id="result-count"></p>
<div id="search-results">
{% if not search_query %}
{% include "search/enter-search-term.html" %}
{% endif %}
</div>
</section>
<div id="search-results">
{% if not search_query %}
{% include "search/enter-search-term.html" %}
{% endif %}
</div>
</section>
{% endblock %}