mirror of
https://github.com/Hopiu/djLint.git
synced 2026-03-16 21:40:24 +00:00
changed build system to poetry, added more dj tags, added pyproject.toml support, fixed #11, closed #12, closed #1
This commit is contained in:
parent
94c1dd5958
commit
5495516c74
714 changed files with 1379 additions and 58893 deletions
11
.github/workflows/python-publish.yml
vendored
11
.github/workflows/python-publish.yml
vendored
|
|
@ -22,15 +22,12 @@ jobs:
|
|||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.x'
|
||||
python-version: 3.x
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install build
|
||||
- name: Build package
|
||||
run: python -m build
|
||||
- name: Publish package
|
||||
uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
|
||||
pip install poetry
|
||||
- name: Build and publish package
|
||||
users: JRubics/poetry-publish@v1.8
|
||||
with:
|
||||
user: __token__
|
||||
password: ${{ secrets.PYPI_API_TOKEN }}
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
# Changelog
|
||||
|
||||
## 0.0.8
|
||||
|
||||
Added rules.
|
||||
|
||||
## 0.0.1
|
||||
|
||||
Initial release.
|
||||
46
README.md
46
README.md
|
|
@ -1,19 +1,51 @@
|
|||

|
||||
|
||||
Simple html template linter and reformatter to find common formatting issues. djLint is intended as a django template linter and django template formatter.
|
||||
Find common formatting issues and *reformat* HTML templates.
|
||||
|
||||
<style>
|
||||
.types {
|
||||
text-align: center;
|
||||
font-size: 110%;
|
||||
font-style: italic;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.types::after {
|
||||
position: absolute;
|
||||
top: 11px;
|
||||
left:0;
|
||||
right:0;
|
||||
border: 1px solid rgba(0,0,0,.2);
|
||||
content: "";
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.types span {
|
||||
padding: 15px;
|
||||
margin: 5px;
|
||||
background: #fff;
|
||||
z-index:1;
|
||||
}
|
||||
</style>
|
||||
<p class="types">
|
||||
<span>Django</span>
|
||||
<span>Jinja</span>
|
||||
<span>Nunjucks</span>
|
||||
<span>Handlebars</span>
|
||||
</p>
|
||||
|
||||
Ps, ```--check``` it out on Jinja and Handlebar templates as well!
|
||||
|
||||
[](https://codecov.io/gh/Riverside-Healthcare/djlint) [](https://github.com/Riverside-Healthcare/djlint/actions/workflows/test.yml) [](https://www.codacy.com/gh/Riverside-Healthcare/djlint/dashboard?utm_source=github.com&utm_medium=referral&utm_content=Riverside-Healthcare/djlint&utm_campaign=Badge_Grade) [](https://codeclimate.com/github/Riverside-Healthcare/djlint/maintainability) [](https://pepy.tech/project/djlint)
|
||||
[](https://codecov.io/gh/Riverside-Healthcare/djlint) [](https://github.com/Riverside-Healthcare/djlint/actions/workflows/test.yml) [](https://www.codacy.com/gh/Riverside-Healthcare/djlint/dashboard?utm_source=github.com&utm_medium=referral&utm_content=Riverside-Healthcare/djlint&utm_campaign=Badge_Grade) [](https://codeclimate.com/github/Riverside-Healthcare/djlint/maintainability) [](https://pepy.tech/project/djlint)[](https://discord.gg/taghAqebzU)
|
||||
|
||||
## Documentation
|
||||
|
||||
Read the [documentation](https://djlint.readthedocs.io)
|
||||
|
||||
|
||||
## Installation and Usage
|
||||
|
||||
djLint can be installed with `pip install djlint`, and is easy to run:
|
||||
**djLint** can be installed with `pip install djlint`, and is easy to run:
|
||||
|
||||
```sh
|
||||
# to lint a directory
|
||||
|
|
@ -35,7 +67,7 @@ djlint /path --reformat --quiet
|
|||
Add a badge to your projects ```readme.md```:
|
||||
|
||||
```md
|
||||
[](https://github.com/Riverside-Healthcare/djlint)
|
||||
[](https://github.com/Riverside-Healthcare/djlint)
|
||||
```
|
||||
|
||||
Add a badge to your ```readme.rst```:
|
||||
|
|
@ -49,6 +81,6 @@ Looks like this:
|
|||
[](https://github.com/Riverside-Healthcare/djlint)
|
||||
|
||||
|
||||
## Contributing - Please Help!
|
||||
## Contributing
|
||||
|
||||
Checkout the [issue](https://github.com/Riverside-Healthcare/djlint/issues) list and help where you can!
|
||||
Checkout the [issue](https://github.com/Riverside-Healthcare/djlint/issues) list and help where you can.
|
||||
|
|
|
|||
BIN
docs/_static/icon-square.indd
vendored
Normal file
BIN
docs/_static/icon-square.indd
vendored
Normal file
Binary file not shown.
BIN
docs/_static/icon-square.png
vendored
Normal file
BIN
docs/_static/icon-square.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 705 KiB |
|
|
@ -12,7 +12,7 @@
|
|||
project = "djlint"
|
||||
copyright = "2021, Riverside Healthcare"
|
||||
author = "Christopher Pickering"
|
||||
release = "0.3.4"
|
||||
release = "0.3.5"
|
||||
version = release
|
||||
|
||||
# -- General configuration ---------------------------------------------------
|
||||
|
|
|
|||
41
docs/djlint/changelog.rst
Normal file
41
docs/djlint/changelog.rst
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
Changelog
|
||||
=========
|
||||
|
||||
0.3.5
|
||||
-----
|
||||
- Added support for more Django blocks
|
||||
- Added support for custom blocks
|
||||
- Added support for config in ``pyproject.toml``
|
||||
|
||||
0.3.4
|
||||
-----
|
||||
- Fixed Nunjucks spaceless tag ``-%}`` format
|
||||
|
||||
0.3.3
|
||||
-----
|
||||
- Allowed short ``div`` tags to be single line
|
||||
|
||||
0.3.2
|
||||
-----
|
||||
- Fixed Django comment formatting
|
||||
- Ignored textarea from formatting
|
||||
|
||||
0.3.1
|
||||
-----
|
||||
- Updated attribute formatting regex
|
||||
- Updated lint rule W010
|
||||
|
||||
0.3.0
|
||||
-----
|
||||
- Changed exit code to 1 if there were any formatting changes
|
||||
- Added support for Jinja ``asset`` tags
|
||||
|
||||
0.2.9
|
||||
-----
|
||||
- Updated W018 regex
|
||||
- Removed duplicate lint messages
|
||||
- Updated E001 for Handlebars
|
||||
|
||||
0.2.8
|
||||
-----
|
||||
- Fixed progress bar error for old Click version
|
||||
|
|
@ -1,7 +1,10 @@
|
|||
Configuration
|
||||
=============
|
||||
|
||||
Linter rules can easily be ignored with the `-i` or `--ignore` flag.
|
||||
Ignoring Linter Rules
|
||||
---------------------
|
||||
|
||||
Linter rules can be ignored with the `-i` or `--ignore` flag.
|
||||
|
||||
For example:
|
||||
|
||||
|
|
@ -10,7 +13,15 @@ For example:
|
|||
djlint src -i "W013,W014"
|
||||
|
||||
|
||||
Help needed!
|
||||
------------
|
||||
Pyproject.toml Configuration
|
||||
----------------------------
|
||||
|
||||
Ideally we'd also like to be able to ignore rules through pyproject.toml/tox.ini/setup.cfg.
|
||||
Configuration options can also be added to your projects `pyproject.toml` file. Command line args will always override any settings in `pyproject.toml`.
|
||||
|
||||
.. code:: toml
|
||||
|
||||
[tool.djlint]
|
||||
ignore = "W013"
|
||||
extension = "html.dj"
|
||||
custom_blocks = "toc,example" # custom code blocks {% toc %}...{% endtoc %}
|
||||
indent = " " # change indentation level
|
||||
|
|
|
|||
|
|
@ -3,11 +3,9 @@ Formatter
|
|||
|
||||
djLint's formatter will take sloppy html templates and make it look pretty nice!
|
||||
|
||||
For an example of what the output will be, check out the `/tests/ <https://github.com/Riverside-Healthcare/djlint/tree/master/tests>`_ folder to see over 300 **formatted** templates from the top django and flask projects.
|
||||
|
||||
Before
|
||||
------
|
||||
.. code :: html
|
||||
.. code ::
|
||||
|
||||
{% load admin_list %} {% load i18n %}
|
||||
<p class="paginator">
|
||||
|
|
|
|||
|
|
@ -18,10 +18,10 @@ Linter Usage
|
|||
# with custom extensions
|
||||
djlint src -e html.dj
|
||||
|
||||
Reformatter Usage
|
||||
Formatter Usage
|
||||
-----------------
|
||||
|
||||
Reforamtting is a beta product. Check the output before applying changes.
|
||||
Foramtting is a beta tool. ``--check`` the output before applying changes.
|
||||
|
||||
Reformatting does not work with long json/html embedded into attribute data.
|
||||
|
||||
|
|
@ -29,16 +29,16 @@ To check what may change in formatting run:
|
|||
|
||||
.. code:: sh
|
||||
|
||||
djlint src --check --ignore="W013,W014"
|
||||
djlint . --check --ignore="W013,W014"
|
||||
|
||||
To reformat run:
|
||||
To format code run:
|
||||
|
||||
.. code:: sh
|
||||
|
||||
djlint src --reformat
|
||||
djlint . --reformat
|
||||
|
||||
CLI Args
|
||||
-------------
|
||||
--------
|
||||
|
||||
.. code:: sh
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
.. djlint documentation master file, created by
|
||||
sphinx-quickstart on Tue Jul 27 15:28:35 2021.
|
||||
|
||||
Html Template Linter and Formatter
|
||||
HTML Template Linter and Formatter
|
||||
==================================
|
||||
|
||||
.. toctree::
|
||||
|
|
@ -15,21 +15,57 @@ Html Template Linter and Formatter
|
|||
djlint/rules
|
||||
djlint/formatter
|
||||
djlint/configuration
|
||||
djlint/changelog
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
GitHub ↪ <https://github.com/Riverside-Healthcare/djlint>
|
||||
PyPI ↪ <https://pypi.org/project/djlint/>
|
||||
Discord ↪ <https://discord.gg/taghAqebzU>
|
||||
|
||||
|
||||
Simple html template linter and reformatter to find common formatting issues with and *reformat* django html templates
|
||||
Find common formatting issues and *reformat* HTML templates.
|
||||
|
||||
Ps, ``--check`` it out on Jinja and Handlebar templates as well!
|
||||
.. raw:: html
|
||||
<style>
|
||||
.types {
|
||||
text-align: center;
|
||||
font-size: 110%;
|
||||
font-style: italic;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.types::after {
|
||||
position: absolute;
|
||||
top: 11px;
|
||||
left:0;
|
||||
right:0;
|
||||
border: 1px solid rgba(0,0,0,.2);
|
||||
content: "";
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.types span {
|
||||
padding: 15px;
|
||||
margin: 5px;
|
||||
background: #fff;
|
||||
z-index:1;
|
||||
}
|
||||
</style>
|
||||
<p class="types">
|
||||
<span>Django</span>
|
||||
<span>Jinja</span>
|
||||
<span>Nunjucks</span>
|
||||
<span>Handlebars</span>
|
||||
</p>
|
||||
|
||||
Ps, ``--check`` it out on other templates as well!
|
||||
|
||||
.. image:: /_static/demo.gif
|
||||
|
||||
|codecov| |test| |Codacy Badge| |Maintainability| |Downloads|
|
||||
|codecov| |test| |Codacy Badge| |Maintainability| |Downloads| |chat|
|
||||
|
||||
.. note:: djLint is not an html parser or syntax validator.
|
||||
|
||||
|
|
@ -40,7 +76,7 @@ Add a badge to your projects `readme.md`:
|
|||
|
||||
.. code-block:: md
|
||||
|
||||
[](https://github.com/Riverside-Healthcare/djlint)
|
||||
[](https://github.com/Riverside-Healthcare/djlint)
|
||||
|
||||
|
||||
Add a badge to your `readme.rst`:
|
||||
|
|
@ -72,3 +108,5 @@ Checkout the `issue <https://github.com/Riverside-Healthcare/djlint/issues>`_ li
|
|||
:target: https://codeclimate.com/github/Riverside-Healthcare/djlint/maintainability
|
||||
.. |Downloads| image:: https://img.shields.io/pypi/dm/djlint.svg
|
||||
:target: https://pypi.org/project/djlint/
|
||||
.. |chat| image:: https://discord.gg/taghAqebzU
|
||||
:target: https://img.shields.io/badge/chat-discord-green
|
||||
|
|
|
|||
429
poetry.lock
generated
Normal file
429
poetry.lock
generated
Normal file
|
|
@ -0,0 +1,429 @@
|
|||
[[package]]
|
||||
name = "atomicwrites"
|
||||
version = "1.4.0"
|
||||
description = "Atomic file writes."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
|
||||
[[package]]
|
||||
name = "attrs"
|
||||
version = "21.2.0"
|
||||
description = "Classes Without Boilerplate"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||
|
||||
[package.extras]
|
||||
dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"]
|
||||
docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
|
||||
tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"]
|
||||
tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"]
|
||||
|
||||
[[package]]
|
||||
name = "click"
|
||||
version = "8.0.1"
|
||||
description = "Composable command line interface toolkit"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.dependencies]
|
||||
colorama = {version = "*", markers = "platform_system == \"Windows\""}
|
||||
importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
|
||||
|
||||
[[package]]
|
||||
name = "colorama"
|
||||
version = "0.4.4"
|
||||
description = "Cross-platform colored terminal text."
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||
|
||||
[[package]]
|
||||
name = "coverage"
|
||||
version = "5.5"
|
||||
description = "Code coverage measurement for Python"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
|
||||
|
||||
[package.extras]
|
||||
toml = ["toml"]
|
||||
|
||||
[[package]]
|
||||
name = "importlib-metadata"
|
||||
version = "4.8.1"
|
||||
description = "Read metadata from Python packages"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.dependencies]
|
||||
typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""}
|
||||
zipp = ">=0.5"
|
||||
|
||||
[package.extras]
|
||||
docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
|
||||
perf = ["ipython"]
|
||||
testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"]
|
||||
|
||||
[[package]]
|
||||
name = "iniconfig"
|
||||
version = "1.1.1"
|
||||
description = "iniconfig: brain-dead simple config-ini parsing"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "packaging"
|
||||
version = "21.0"
|
||||
description = "Core utilities for Python packages"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.dependencies]
|
||||
pyparsing = ">=2.0.2"
|
||||
|
||||
[[package]]
|
||||
name = "pluggy"
|
||||
version = "1.0.0"
|
||||
description = "plugin and hook calling mechanisms for python"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.dependencies]
|
||||
importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
|
||||
|
||||
[package.extras]
|
||||
dev = ["pre-commit", "tox"]
|
||||
testing = ["pytest", "pytest-benchmark"]
|
||||
|
||||
[[package]]
|
||||
name = "py"
|
||||
version = "1.10.0"
|
||||
description = "library with cross-python path, ini-parsing, io, code, log facilities"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
|
||||
[[package]]
|
||||
name = "pyparsing"
|
||||
version = "2.4.7"
|
||||
description = "Python parsing module"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||
|
||||
[[package]]
|
||||
name = "pytest"
|
||||
version = "6.2.5"
|
||||
description = "pytest: simple powerful testing with Python"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.dependencies]
|
||||
atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
|
||||
attrs = ">=19.2.0"
|
||||
colorama = {version = "*", markers = "sys_platform == \"win32\""}
|
||||
importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
|
||||
iniconfig = "*"
|
||||
packaging = "*"
|
||||
pluggy = ">=0.12,<2.0"
|
||||
py = ">=1.8.2"
|
||||
toml = "*"
|
||||
|
||||
[package.extras]
|
||||
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
|
||||
|
||||
[[package]]
|
||||
name = "pytest-cov"
|
||||
version = "2.12.1"
|
||||
description = "Pytest plugin for measuring coverage."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||
|
||||
[package.dependencies]
|
||||
coverage = ">=5.2.1"
|
||||
pytest = ">=4.6"
|
||||
toml = "*"
|
||||
|
||||
[package.extras]
|
||||
testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtualenv"]
|
||||
|
||||
[[package]]
|
||||
name = "pyyaml"
|
||||
version = "5.4.1"
|
||||
description = "YAML parser and emitter for Python"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "2021.8.28"
|
||||
description = "Alternative regular expression module, to replace re."
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
version = "0.10.2"
|
||||
description = "Python Library for Tom's Obvious, Minimal Language"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||
|
||||
[[package]]
|
||||
name = "tomlkit"
|
||||
version = "0.7.2"
|
||||
description = "Style preserving TOML library"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||
|
||||
[[package]]
|
||||
name = "tqdm"
|
||||
version = "4.62.2"
|
||||
description = "Fast, Extensible Progress Meter"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
|
||||
|
||||
[package.dependencies]
|
||||
colorama = {version = "*", markers = "platform_system == \"Windows\""}
|
||||
|
||||
[package.extras]
|
||||
dev = ["py-make (>=0.1.0)", "twine", "wheel"]
|
||||
notebook = ["ipywidgets (>=6)"]
|
||||
telegram = ["requests"]
|
||||
|
||||
[[package]]
|
||||
name = "typing-extensions"
|
||||
version = "3.10.0.2"
|
||||
description = "Backported and Experimental Type Hints for Python 3.5+"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "zipp"
|
||||
version = "3.5.0"
|
||||
description = "Backport of pathlib-compatible object wrapper for zip files"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.extras]
|
||||
docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
|
||||
testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
|
||||
|
||||
[metadata]
|
||||
lock-version = "1.1"
|
||||
python-versions = "^3.6"
|
||||
content-hash = "0acb2ff4e9339c8cbcb21b6be1c0da5c0356b582cc60766a9dfd3b7b7c718ca6"
|
||||
|
||||
[metadata.files]
|
||||
atomicwrites = [
|
||||
{file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"},
|
||||
{file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
|
||||
]
|
||||
attrs = [
|
||||
{file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"},
|
||||
{file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"},
|
||||
]
|
||||
click = [
|
||||
{file = "click-8.0.1-py3-none-any.whl", hash = "sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6"},
|
||||
{file = "click-8.0.1.tar.gz", hash = "sha256:8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a"},
|
||||
]
|
||||
colorama = [
|
||||
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
|
||||
{file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
|
||||
]
|
||||
coverage = [
|
||||
{file = "coverage-5.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf"},
|
||||
{file = "coverage-5.5-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:b7895207b4c843c76a25ab8c1e866261bcfe27bfaa20c192de5190121770672b"},
|
||||
{file = "coverage-5.5-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:c2723d347ab06e7ddad1a58b2a821218239249a9e4365eaff6649d31180c1669"},
|
||||
{file = "coverage-5.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:900fbf7759501bc7807fd6638c947d7a831fc9fdf742dc10f02956ff7220fa90"},
|
||||
{file = "coverage-5.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c"},
|
||||
{file = "coverage-5.5-cp27-cp27m-win32.whl", hash = "sha256:06191eb60f8d8a5bc046f3799f8a07a2d7aefb9504b0209aff0b47298333302a"},
|
||||
{file = "coverage-5.5-cp27-cp27m-win_amd64.whl", hash = "sha256:7501140f755b725495941b43347ba8a2777407fc7f250d4f5a7d2a1050ba8e82"},
|
||||
{file = "coverage-5.5-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:372da284cfd642d8e08ef606917846fa2ee350f64994bebfbd3afb0040436905"},
|
||||
{file = "coverage-5.5-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:8963a499849a1fc54b35b1c9f162f4108017b2e6db2c46c1bed93a72262ed083"},
|
||||
{file = "coverage-5.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:869a64f53488f40fa5b5b9dcb9e9b2962a66a87dab37790f3fcfb5144b996ef5"},
|
||||
{file = "coverage-5.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:4a7697d8cb0f27399b0e393c0b90f0f1e40c82023ea4d45d22bce7032a5d7b81"},
|
||||
{file = "coverage-5.5-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:8d0a0725ad7c1a0bcd8d1b437e191107d457e2ec1084b9f190630a4fb1af78e6"},
|
||||
{file = "coverage-5.5-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:51cb9476a3987c8967ebab3f0fe144819781fca264f57f89760037a2ea191cb0"},
|
||||
{file = "coverage-5.5-cp310-cp310-win_amd64.whl", hash = "sha256:c0891a6a97b09c1f3e073a890514d5012eb256845c451bd48f7968ef939bf4ae"},
|
||||
{file = "coverage-5.5-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:3487286bc29a5aa4b93a072e9592f22254291ce96a9fbc5251f566b6b7343cdb"},
|
||||
{file = "coverage-5.5-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:deee1077aae10d8fa88cb02c845cfba9b62c55e1183f52f6ae6a2df6a2187160"},
|
||||
{file = "coverage-5.5-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6"},
|
||||
{file = "coverage-5.5-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:6c90e11318f0d3c436a42409f2749ee1a115cd8b067d7f14c148f1ce5574d701"},
|
||||
{file = "coverage-5.5-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:30c77c1dc9f253283e34c27935fded5015f7d1abe83bc7821680ac444eaf7793"},
|
||||
{file = "coverage-5.5-cp35-cp35m-win32.whl", hash = "sha256:9a1ef3b66e38ef8618ce5fdc7bea3d9f45f3624e2a66295eea5e57966c85909e"},
|
||||
{file = "coverage-5.5-cp35-cp35m-win_amd64.whl", hash = "sha256:972c85d205b51e30e59525694670de6a8a89691186012535f9d7dbaa230e42c3"},
|
||||
{file = "coverage-5.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:af0e781009aaf59e25c5a678122391cb0f345ac0ec272c7961dc5455e1c40066"},
|
||||
{file = "coverage-5.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:74d881fc777ebb11c63736622b60cb9e4aee5cace591ce274fb69e582a12a61a"},
|
||||
{file = "coverage-5.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:92b017ce34b68a7d67bd6d117e6d443a9bf63a2ecf8567bb3d8c6c7bc5014465"},
|
||||
{file = "coverage-5.5-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:d636598c8305e1f90b439dbf4f66437de4a5e3c31fdf47ad29542478c8508bbb"},
|
||||
{file = "coverage-5.5-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:41179b8a845742d1eb60449bdb2992196e211341818565abded11cfa90efb821"},
|
||||
{file = "coverage-5.5-cp36-cp36m-win32.whl", hash = "sha256:040af6c32813fa3eae5305d53f18875bedd079960822ef8ec067a66dd8afcd45"},
|
||||
{file = "coverage-5.5-cp36-cp36m-win_amd64.whl", hash = "sha256:5fec2d43a2cc6965edc0bb9e83e1e4b557f76f843a77a2496cbe719583ce8184"},
|
||||
{file = "coverage-5.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:18ba8bbede96a2c3dde7b868de9dcbd55670690af0988713f0603f037848418a"},
|
||||
{file = "coverage-5.5-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:2910f4d36a6a9b4214bb7038d537f015346f413a975d57ca6b43bf23d6563b53"},
|
||||
{file = "coverage-5.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:f0b278ce10936db1a37e6954e15a3730bea96a0997c26d7fee88e6c396c2086d"},
|
||||
{file = "coverage-5.5-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:796c9c3c79747146ebd278dbe1e5c5c05dd6b10cc3bcb8389dfdf844f3ead638"},
|
||||
{file = "coverage-5.5-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:53194af30d5bad77fcba80e23a1441c71abfb3e01192034f8246e0d8f99528f3"},
|
||||
{file = "coverage-5.5-cp37-cp37m-win32.whl", hash = "sha256:184a47bbe0aa6400ed2d41d8e9ed868b8205046518c52464fde713ea06e3a74a"},
|
||||
{file = "coverage-5.5-cp37-cp37m-win_amd64.whl", hash = "sha256:2949cad1c5208b8298d5686d5a85b66aae46d73eec2c3e08c817dd3513e5848a"},
|
||||
{file = "coverage-5.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:217658ec7187497e3f3ebd901afdca1af062b42cfe3e0dafea4cced3983739f6"},
|
||||
{file = "coverage-5.5-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1aa846f56c3d49205c952d8318e76ccc2ae23303351d9270ab220004c580cfe2"},
|
||||
{file = "coverage-5.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:24d4a7de75446be83244eabbff746d66b9240ae020ced65d060815fac3423759"},
|
||||
{file = "coverage-5.5-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d1f8bf7b90ba55699b3a5e44930e93ff0189aa27186e96071fac7dd0d06a1873"},
|
||||
{file = "coverage-5.5-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:970284a88b99673ccb2e4e334cfb38a10aab7cd44f7457564d11898a74b62d0a"},
|
||||
{file = "coverage-5.5-cp38-cp38-win32.whl", hash = "sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6"},
|
||||
{file = "coverage-5.5-cp38-cp38-win_amd64.whl", hash = "sha256:2e0d881ad471768bf6e6c2bf905d183543f10098e3b3640fc029509530091502"},
|
||||
{file = "coverage-5.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d1f9ce122f83b2305592c11d64f181b87153fc2c2bbd3bb4a3dde8303cfb1a6b"},
|
||||
{file = "coverage-5.5-cp39-cp39-manylinux1_i686.whl", hash = "sha256:13c4ee887eca0f4c5a247b75398d4114c37882658300e153113dafb1d76de529"},
|
||||
{file = "coverage-5.5-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:52596d3d0e8bdf3af43db3e9ba8dcdaac724ba7b5ca3f6358529d56f7a166f8b"},
|
||||
{file = "coverage-5.5-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:2cafbbb3af0733db200c9b5f798d18953b1a304d3f86a938367de1567f4b5bff"},
|
||||
{file = "coverage-5.5-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:44d654437b8ddd9eee7d1eaee28b7219bec228520ff809af170488fd2fed3e2b"},
|
||||
{file = "coverage-5.5-cp39-cp39-win32.whl", hash = "sha256:d314ed732c25d29775e84a960c3c60808b682c08d86602ec2c3008e1202e3bb6"},
|
||||
{file = "coverage-5.5-cp39-cp39-win_amd64.whl", hash = "sha256:13034c4409db851670bc9acd836243aeee299949bd5673e11844befcb0149f03"},
|
||||
{file = "coverage-5.5-pp36-none-any.whl", hash = "sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079"},
|
||||
{file = "coverage-5.5-pp37-none-any.whl", hash = "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4"},
|
||||
{file = "coverage-5.5.tar.gz", hash = "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c"},
|
||||
]
|
||||
importlib-metadata = [
|
||||
{file = "importlib_metadata-4.8.1-py3-none-any.whl", hash = "sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15"},
|
||||
{file = "importlib_metadata-4.8.1.tar.gz", hash = "sha256:f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1"},
|
||||
]
|
||||
iniconfig = [
|
||||
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
|
||||
{file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
|
||||
]
|
||||
packaging = [
|
||||
{file = "packaging-21.0-py3-none-any.whl", hash = "sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14"},
|
||||
{file = "packaging-21.0.tar.gz", hash = "sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7"},
|
||||
]
|
||||
pluggy = [
|
||||
{file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
|
||||
{file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
|
||||
]
|
||||
py = [
|
||||
{file = "py-1.10.0-py2.py3-none-any.whl", hash = "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a"},
|
||||
{file = "py-1.10.0.tar.gz", hash = "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3"},
|
||||
]
|
||||
pyparsing = [
|
||||
{file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"},
|
||||
{file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"},
|
||||
]
|
||||
pytest = [
|
||||
{file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
|
||||
{file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"},
|
||||
]
|
||||
pytest-cov = [
|
||||
{file = "pytest-cov-2.12.1.tar.gz", hash = "sha256:261ceeb8c227b726249b376b8526b600f38667ee314f910353fa318caa01f4d7"},
|
||||
{file = "pytest_cov-2.12.1-py2.py3-none-any.whl", hash = "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a"},
|
||||
]
|
||||
pyyaml = [
|
||||
{file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"},
|
||||
{file = "PyYAML-5.4.1-cp27-cp27m-win32.whl", hash = "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393"},
|
||||
{file = "PyYAML-5.4.1-cp27-cp27m-win_amd64.whl", hash = "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8"},
|
||||
{file = "PyYAML-5.4.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185"},
|
||||
{file = "PyYAML-5.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253"},
|
||||
{file = "PyYAML-5.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc"},
|
||||
{file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347"},
|
||||
{file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541"},
|
||||
{file = "PyYAML-5.4.1-cp36-cp36m-win32.whl", hash = "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5"},
|
||||
{file = "PyYAML-5.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df"},
|
||||
{file = "PyYAML-5.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018"},
|
||||
{file = "PyYAML-5.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63"},
|
||||
{file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa"},
|
||||
{file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0"},
|
||||
{file = "PyYAML-5.4.1-cp37-cp37m-win32.whl", hash = "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b"},
|
||||
{file = "PyYAML-5.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf"},
|
||||
{file = "PyYAML-5.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46"},
|
||||
{file = "PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb"},
|
||||
{file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247"},
|
||||
{file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc"},
|
||||
{file = "PyYAML-5.4.1-cp38-cp38-win32.whl", hash = "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc"},
|
||||
{file = "PyYAML-5.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696"},
|
||||
{file = "PyYAML-5.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77"},
|
||||
{file = "PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183"},
|
||||
{file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122"},
|
||||
{file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6"},
|
||||
{file = "PyYAML-5.4.1-cp39-cp39-win32.whl", hash = "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10"},
|
||||
{file = "PyYAML-5.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db"},
|
||||
{file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"},
|
||||
]
|
||||
regex = [
|
||||
{file = "regex-2021.8.28-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9d05ad5367c90814099000442b2125535e9d77581855b9bee8780f1b41f2b1a2"},
|
||||
{file = "regex-2021.8.28-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3bf1bc02bc421047bfec3343729c4bbbea42605bcfd6d6bfe2c07ade8b12d2a"},
|
||||
{file = "regex-2021.8.28-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f6a808044faae658f546dd5f525e921de9fa409de7a5570865467f03a626fc0"},
|
||||
{file = "regex-2021.8.28-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a617593aeacc7a691cc4af4a4410031654f2909053bd8c8e7db837f179a630eb"},
|
||||
{file = "regex-2021.8.28-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:79aef6b5cd41feff359acaf98e040844613ff5298d0d19c455b3d9ae0bc8c35a"},
|
||||
{file = "regex-2021.8.28-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0fc1f8f06977c2d4f5e3d3f0d4a08089be783973fc6b6e278bde01f0544ff308"},
|
||||
{file = "regex-2021.8.28-cp310-cp310-win32.whl", hash = "sha256:6eebf512aa90751d5ef6a7c2ac9d60113f32e86e5687326a50d7686e309f66ed"},
|
||||
{file = "regex-2021.8.28-cp310-cp310-win_amd64.whl", hash = "sha256:ac88856a8cbccfc14f1b2d0b829af354cc1743cb375e7f04251ae73b2af6adf8"},
|
||||
{file = "regex-2021.8.28-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c206587c83e795d417ed3adc8453a791f6d36b67c81416676cad053b4104152c"},
|
||||
{file = "regex-2021.8.28-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8690ed94481f219a7a967c118abaf71ccc440f69acd583cab721b90eeedb77c"},
|
||||
{file = "regex-2021.8.28-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:328a1fad67445550b982caa2a2a850da5989fd6595e858f02d04636e7f8b0b13"},
|
||||
{file = "regex-2021.8.28-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c7cb4c512d2d3b0870e00fbbac2f291d4b4bf2634d59a31176a87afe2777c6f0"},
|
||||
{file = "regex-2021.8.28-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66256b6391c057305e5ae9209941ef63c33a476b73772ca967d4a2df70520ec1"},
|
||||
{file = "regex-2021.8.28-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8e44769068d33e0ea6ccdf4b84d80c5afffe5207aa4d1881a629cf0ef3ec398f"},
|
||||
{file = "regex-2021.8.28-cp36-cp36m-win32.whl", hash = "sha256:08d74bfaa4c7731b8dac0a992c63673a2782758f7cfad34cf9c1b9184f911354"},
|
||||
{file = "regex-2021.8.28-cp36-cp36m-win_amd64.whl", hash = "sha256:abb48494d88e8a82601af905143e0de838c776c1241d92021e9256d5515b3645"},
|
||||
{file = "regex-2021.8.28-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b4c220a1fe0d2c622493b0a1fd48f8f991998fb447d3cd368033a4b86cf1127a"},
|
||||
{file = "regex-2021.8.28-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4a332404baa6665b54e5d283b4262f41f2103c255897084ec8f5487ce7b9e8e"},
|
||||
{file = "regex-2021.8.28-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c61dcc1cf9fd165127a2853e2c31eb4fb961a4f26b394ac9fe5669c7a6592892"},
|
||||
{file = "regex-2021.8.28-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ee329d0387b5b41a5dddbb6243a21cb7896587a651bebb957e2d2bb8b63c0791"},
|
||||
{file = "regex-2021.8.28-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f60667673ff9c249709160529ab39667d1ae9fd38634e006bec95611f632e759"},
|
||||
{file = "regex-2021.8.28-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b844fb09bd9936ed158ff9df0ab601e2045b316b17aa8b931857365ea8586906"},
|
||||
{file = "regex-2021.8.28-cp37-cp37m-win32.whl", hash = "sha256:4cde065ab33bcaab774d84096fae266d9301d1a2f5519d7bd58fc55274afbf7a"},
|
||||
{file = "regex-2021.8.28-cp37-cp37m-win_amd64.whl", hash = "sha256:1413b5022ed6ac0d504ba425ef02549a57d0f4276de58e3ab7e82437892704fc"},
|
||||
{file = "regex-2021.8.28-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ed4b50355b066796dacdd1cf538f2ce57275d001838f9b132fab80b75e8c84dd"},
|
||||
{file = "regex-2021.8.28-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28fc475f560d8f67cc8767b94db4c9440210f6958495aeae70fac8faec631797"},
|
||||
{file = "regex-2021.8.28-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdc178caebd0f338d57ae445ef8e9b737ddf8fbc3ea187603f65aec5b041248f"},
|
||||
{file = "regex-2021.8.28-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:999ad08220467b6ad4bd3dd34e65329dd5d0df9b31e47106105e407954965256"},
|
||||
{file = "regex-2021.8.28-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:808ee5834e06f57978da3e003ad9d6292de69d2bf6263662a1a8ae30788e080b"},
|
||||
{file = "regex-2021.8.28-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d5111d4c843d80202e62b4fdbb4920db1dcee4f9366d6b03294f45ed7b18b42e"},
|
||||
{file = "regex-2021.8.28-cp38-cp38-win32.whl", hash = "sha256:473858730ef6d6ff7f7d5f19452184cd0caa062a20047f6d6f3e135a4648865d"},
|
||||
{file = "regex-2021.8.28-cp38-cp38-win_amd64.whl", hash = "sha256:31a99a4796bf5aefc8351e98507b09e1b09115574f7c9dbb9cf2111f7220d2e2"},
|
||||
{file = "regex-2021.8.28-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:04f6b9749e335bb0d2f68c707f23bb1773c3fb6ecd10edf0f04df12a8920d468"},
|
||||
{file = "regex-2021.8.28-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b006628fe43aa69259ec04ca258d88ed19b64791693df59c422b607b6ece8bb"},
|
||||
{file = "regex-2021.8.28-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:121f4b3185feaade3f85f70294aef3f777199e9b5c0c0245c774ae884b110a2d"},
|
||||
{file = "regex-2021.8.28-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a577a21de2ef8059b58f79ff76a4da81c45a75fe0bfb09bc8b7bb4293fa18983"},
|
||||
{file = "regex-2021.8.28-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1743345e30917e8c574f273f51679c294effba6ad372db1967852f12c76759d8"},
|
||||
{file = "regex-2021.8.28-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e1e8406b895aba6caa63d9fd1b6b1700d7e4825f78ccb1e5260551d168db38ed"},
|
||||
{file = "regex-2021.8.28-cp39-cp39-win32.whl", hash = "sha256:ed283ab3a01d8b53de3a05bfdf4473ae24e43caee7dcb5584e86f3f3e5ab4374"},
|
||||
{file = "regex-2021.8.28-cp39-cp39-win_amd64.whl", hash = "sha256:610b690b406653c84b7cb6091facb3033500ee81089867ee7d59e675f9ca2b73"},
|
||||
{file = "regex-2021.8.28.tar.gz", hash = "sha256:f585cbbeecb35f35609edccb95efd95a3e35824cd7752b586503f7e6087303f1"},
|
||||
]
|
||||
toml = [
|
||||
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
|
||||
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
|
||||
]
|
||||
tomlkit = [
|
||||
{file = "tomlkit-0.7.2-py2.py3-none-any.whl", hash = "sha256:173ad840fa5d2aac140528ca1933c29791b79a374a0861a80347f42ec9328117"},
|
||||
{file = "tomlkit-0.7.2.tar.gz", hash = "sha256:d7a454f319a7e9bd2e249f239168729327e4dd2d27b17dc68be264ad1ce36754"},
|
||||
]
|
||||
tqdm = [
|
||||
{file = "tqdm-4.62.2-py2.py3-none-any.whl", hash = "sha256:80aead664e6c1672c4ae20dc50e1cdc5e20eeff9b14aa23ecd426375b28be588"},
|
||||
{file = "tqdm-4.62.2.tar.gz", hash = "sha256:a4d6d112e507ef98513ac119ead1159d286deab17dffedd96921412c2d236ff5"},
|
||||
]
|
||||
typing-extensions = [
|
||||
{file = "typing_extensions-3.10.0.2-py2-none-any.whl", hash = "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7"},
|
||||
{file = "typing_extensions-3.10.0.2-py3-none-any.whl", hash = "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34"},
|
||||
{file = "typing_extensions-3.10.0.2.tar.gz", hash = "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e"},
|
||||
]
|
||||
zipp = [
|
||||
{file = "zipp-3.5.0-py3-none-any.whl", hash = "sha256:957cfda87797e389580cb8b9e3870841ca991e2125350677b2ca83a0e99390a3"},
|
||||
{file = "zipp-3.5.0.tar.gz", hash = "sha256:f5812b1e007e48cff63449a5e9f4e7ebea716b4111f9c4f9a645f91d579bf0c4"},
|
||||
]
|
||||
|
|
@ -1,15 +1,50 @@
|
|||
[build-system]
|
||||
requires = ["setuptools>=41.0", "setuptools-scm", "wheel"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
requires = ["poetry_core>=1.0.0"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
|
||||
|
||||
[tool]
|
||||
|
||||
|
||||
[tool.poetry]
|
||||
name="djlint"
|
||||
version="0.3.5"
|
||||
description="HTML Template Linter and Formatter"
|
||||
license="GPL-3.0-or-later"
|
||||
authors=["Christopher Pickering <cpickering@rhc.net>"]
|
||||
maintainers=["Christopher Pickering <cpickering@rhc.net>"]
|
||||
readme="README.md"
|
||||
repository="https://github.com/Riverside-Healthcare/djlint"
|
||||
documentation="https://djlint.readthedocs.io"
|
||||
classifiers=[
|
||||
"Programming Language :: Python :: 3",
|
||||
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
|
||||
"Operating System :: OS Independent",
|
||||
]
|
||||
packages = [
|
||||
{ include = "djlint", from = "src" },
|
||||
]
|
||||
include = ["rules.yaml"]
|
||||
[tool.black]
|
||||
max_line_length = 99
|
||||
quiet = true
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.6"
|
||||
click = "^8.0.1"
|
||||
PyYAML = "^5.4.1"
|
||||
colorama = "^0.4.4"
|
||||
regex = "^2021.8.28"
|
||||
tqdm = "^4.62.2"
|
||||
tomlkit = "^0.7.2"
|
||||
coverage = { version = "^5.5", optional = true }
|
||||
pytest = { version = "^6.2.5", optional = true }
|
||||
pytest-cov = { version = "^2.12.1", optional = true }
|
||||
|
||||
[tool.poetry.extras]
|
||||
test = ["coverage", "pytest", "pytest-cov"]
|
||||
|
||||
[tool.poetry.scripts]
|
||||
djlint = "djlint:main"
|
||||
|
||||
[tool.isort]
|
||||
multi_line_output = 3
|
||||
|
|
@ -22,4 +57,4 @@ quiet = true
|
|||
|
||||
|
||||
[tool.pylint.messages_control]
|
||||
disable = "E1120, R0914, E0401, R0912, R0916, R0913, W0104, R0801, W1404"
|
||||
disable = "E1120, R0914, E0401, R0912, R0916, R0913, W0104, R0801, W1404, R0902, R0903"
|
||||
|
|
|
|||
65
setup.py
65
setup.py
|
|
@ -1,65 +0,0 @@
|
|||
"""Djlint setup."""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from setuptools import find_packages, setup
|
||||
|
||||
project_path = Path(__file__).parent
|
||||
|
||||
__version__ = "0.3.4"
|
||||
|
||||
|
||||
def long_description():
|
||||
"""Build long description from readme and changelog."""
|
||||
return (
|
||||
(project_path / "README.md").read_text(encoding="utf8")
|
||||
+ "\n\n"
|
||||
+ (project_path / "CHANGELOG.md").read_text(encoding="utf8")
|
||||
)
|
||||
|
||||
|
||||
test_deps = ["coverage", "pytest", "pytest-xdist", "pytest-cov"]
|
||||
|
||||
extras = {
|
||||
"test": test_deps,
|
||||
}
|
||||
|
||||
setup(
|
||||
name="djlint",
|
||||
version=__version__,
|
||||
author="Christopher Pickering",
|
||||
author_email="cpickering@rhc.net",
|
||||
description="Django Template Linter",
|
||||
long_description=long_description(),
|
||||
long_description_content_type="text/markdown",
|
||||
project_urls={
|
||||
"Documentation": "https://djlint.readthedocs.io",
|
||||
"Source": "https://github.com/Riverside-Healthcare/djlint",
|
||||
},
|
||||
url="",
|
||||
include_package_data=True,
|
||||
package_data={"djlint": ["rules.yaml"]},
|
||||
classifiers=[
|
||||
"Programming Language :: Python :: 3",
|
||||
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
|
||||
"Operating System :: OS Independent",
|
||||
],
|
||||
package_dir={"": "src"},
|
||||
packages=find_packages(where="src"),
|
||||
python_requires=">=3.6",
|
||||
install_requires=[
|
||||
"click>=7.1.2",
|
||||
"pyyaml>=5.4.1",
|
||||
"colorama>=0.4.3",
|
||||
"regex>=2020.11.13",
|
||||
"tqdm>=4.61.2",
|
||||
],
|
||||
test_suite="tests.test_djlint",
|
||||
entry_points={
|
||||
"console_scripts": [
|
||||
"djlint=djlint:main",
|
||||
]
|
||||
},
|
||||
tests_require=test_deps,
|
||||
extras_require=extras,
|
||||
)
|
||||
1
tests/config_custom_tags/html.html
Normal file
1
tests/config_custom_tags/html.html
Normal file
|
|
@ -0,0 +1 @@
|
|||
{% example stuff %}<p>this is a long paragraph</p>{% endexample %}
|
||||
3
tests/config_custom_tags/pyproject.toml
Normal file
3
tests/config_custom_tags/pyproject.toml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
[tool]
|
||||
[tool.djlint]
|
||||
custom_blocks = "toc,example"
|
||||
1
tests/config_extension/html.test
Normal file
1
tests/config_extension/html.test
Normal file
|
|
@ -0,0 +1 @@
|
|||
<div></div>
|
||||
3
tests/config_extension/pyproject.toml
Normal file
3
tests/config_extension/pyproject.toml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
[tool]
|
||||
[tool.djlint]
|
||||
extension = "test"
|
||||
1
tests/config_ignores/html.html
Normal file
1
tests/config_ignores/html.html
Normal file
|
|
@ -0,0 +1 @@
|
|||
{{missing space}}
|
||||
3
tests/config_ignores/pyproject.toml
Normal file
3
tests/config_ignores/pyproject.toml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
[tool]
|
||||
[tool.djlint]
|
||||
ignore = "E001"
|
||||
1
tests/config_indent/html.html
Normal file
1
tests/config_indent/html.html
Normal file
|
|
@ -0,0 +1 @@
|
|||
<section><p><div><span></span></div></p></section>
|
||||
3
tests/config_indent/pyproject.toml
Normal file
3
tests/config_indent/pyproject.toml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
[tool]
|
||||
[tool.djlint]
|
||||
indent = " "
|
||||
|
|
@ -1,18 +1,38 @@
|
|||
"""Djlint test config."""
|
||||
import os
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
from typing import Generator, TextIO
|
||||
|
||||
import pytest
|
||||
from click.testing import CliRunner
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def runner():
|
||||
yield CliRunner()
|
||||
from src.djlint import main as djlint
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def tmp_file():
|
||||
@pytest.fixture()
|
||||
def runner() -> CliRunner:
|
||||
"""Click runner for djlint tests."""
|
||||
return CliRunner()
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def tmp_file() -> Generator:
|
||||
"""Create a temp file for formatting."""
|
||||
# pylint: disable=R1732
|
||||
tmp = tempfile.NamedTemporaryFile(delete=False)
|
||||
yield tmp
|
||||
tmp.close()
|
||||
os.unlink(tmp.name)
|
||||
|
||||
|
||||
def write_to_file(the_file: str, the_text: bytes) -> None:
|
||||
"""Shortcode for write some bytes to a file."""
|
||||
with open(the_file, mode="w+b") as open_file:
|
||||
open_file.write(the_text)
|
||||
|
||||
|
||||
def reformat(the_file: TextIO, runner: CliRunner, the_text: bytes) -> dict:
|
||||
write_to_file(the_file.name, the_text)
|
||||
result = runner.invoke(djlint, [the_file.name, "--reformat"])
|
||||
return {"text": Path(the_file.name).read_text(), "exit_code": result.exit_code}
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n %}
|
||||
{% block title %}
|
||||
{% translate 'Page not found' %}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<h2>{% translate 'Page not found' %}</h2>
|
||||
<p>
|
||||
{% translate 'We’re sorry, but the requested page could not be found.' %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
› {% translate 'Server error' %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block title %}
|
||||
{% translate 'Server error (500)' %}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<h1>
|
||||
{% translate 'Server Error
|
||||
<em>(500)</em>
|
||||
' %}
|
||||
</h1>
|
||||
<p>
|
||||
{% translate 'There’s been an error. It’s been reported to the site administrators via email and should be fixed shortly. Thanks for your patience.' %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
{% load i18n %}
|
||||
<div class="actions">
|
||||
{% block actions %}
|
||||
{% block actions-form %}
|
||||
{% for field in action_form %}
|
||||
{% if field.label %}
|
||||
<label>
|
||||
{{ field.label }}
|
||||
{% endif %}
|
||||
{{ field }}
|
||||
{% if field.label %}</label>{% endif %}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
{% block actions-submit %}
|
||||
<button type="submit"
|
||||
class="button"
|
||||
title="{% translate "
|
||||
Run the selected action" %}" name="index"
|
||||
value="{{ action_index|default:0 }}">
|
||||
{% translate "Go" %}
|
||||
</button>
|
||||
{% endblock %}
|
||||
{% block actions-counter %}
|
||||
{% if actions_selection_counter %}
|
||||
<span class="action-counter" data-actions-icnt="{{ cl.result_list|length }}">
|
||||
{{ selection_note }}
|
||||
</span>
|
||||
{% if cl.result_count != cl.result_list|length %}
|
||||
<span class="all hidden">{{ selection_note_all }}</span>
|
||||
<span class="question hidden">
|
||||
<a href="#" title="{% translate ">
|
||||
{% blocktranslate with cl.result_count as total_count %}
|
||||
Select all {{ total_count }} {{ module_name }}
|
||||
{% endblocktranslate %}
|
||||
</a>
|
||||
</span>
|
||||
<span class="clear hidden">
|
||||
<a href="#">{% translate "Clear selection" %}</a>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{% extends "admin/index.html" %}
|
||||
{% load i18n %}
|
||||
{% block bodyclass %}{{ block.super }} app-{{ app_label }}{% endblock %}
|
||||
{% if not is_popup %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
›
|
||||
{% for app in app_list %}{{ app.name }}{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endif %}
|
||||
{% block sidebar %}{% endblock %}
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
{% load i18n %}
|
||||
{% if app_list %}
|
||||
{% for app in app_list %}
|
||||
<div class="app-{{ app.app_label }} module{% if app.app_url in request.path %}current-app{% endif %}">
|
||||
<table>
|
||||
<caption>
|
||||
<a href="{{ app.app_url }}"
|
||||
class="section"
|
||||
title="{% blocktranslate with name=app.name %}Models in the {{ name }} application{% endblocktranslate %}">
|
||||
{{ app.name }}
|
||||
</a>
|
||||
</caption>
|
||||
{% for model in app.models %}
|
||||
<tr class="model-{{ model.object_name|lower }}{% if model.admin_url in request.path %} current-model{% endif %}">
|
||||
{% if model.admin_url %}
|
||||
<th scope="row">
|
||||
<a href="{{ model.admin_url }}"
|
||||
{% if model.admin_url in request.path %}
|
||||
aria-current="page"
|
||||
{% endif %}
|
||||
>
|
||||
{{ model.name }}
|
||||
</a>
|
||||
</th>
|
||||
{% else %}
|
||||
<th scope="row">{{ model.name }}</th>
|
||||
{% endif %}
|
||||
{% if model.add_url %}
|
||||
<td>
|
||||
<a href="{{ model.add_url }}" class="addlink">
|
||||
{% translate 'Add' %}
|
||||
</a>
|
||||
</td>
|
||||
{% else %}
|
||||
<td></td>
|
||||
{% endif %}
|
||||
{% if model.admin_url and show_changelinks %}
|
||||
{% if model.view_only %}
|
||||
<td>
|
||||
<a href="{{ model.admin_url }}" class="viewlink">
|
||||
{% translate 'View' %}
|
||||
</a>
|
||||
</td>
|
||||
{% else %}
|
||||
<td>
|
||||
<a href="{{ model.admin_url }}" class="changelink">
|
||||
{% translate 'Change' %}
|
||||
</a>
|
||||
</td>
|
||||
{% endif %}
|
||||
{% elif show_changelinks %}
|
||||
<td></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<p>
|
||||
{% translate 'You don’t have permission to view or edit anything.' %}
|
||||
</p>
|
||||
{% endif %}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{% extends "admin/change_form.html" %}
|
||||
{% load i18n %}
|
||||
{% block form_top %}
|
||||
{% if not is_popup %}
|
||||
<p>
|
||||
{% translate 'First, enter a username and password. Then, you’ll be able to edit more user options.' %}
|
||||
</p>
|
||||
{% else %}
|
||||
<p>
|
||||
{% translate "Enter a username and password." %}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
@ -1,85 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n static %}
|
||||
{% load admin_urls %}
|
||||
{% block extrastyle %}
|
||||
{{ block.super }}
|
||||
<link rel="stylesheet" type="text/css" href="{% static ">
|
||||
{% endblock %}
|
||||
{% block bodyclass %}
|
||||
{{ block.super }} {{ opts.app_label }}-{{ opts.model_name }} change-form
|
||||
{% endblock %}
|
||||
{% if not is_popup %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
›
|
||||
<a href="{% url 'admin:app_list' app_label=opts.app_label %}">
|
||||
{{ opts.app_config.verbose_name }}
|
||||
</a>
|
||||
›
|
||||
<a href="{% url opts|admin_urlname:'changelist' %}">
|
||||
{{ opts.verbose_name_plural|capfirst }}
|
||||
</a>
|
||||
›
|
||||
<a href="{% url opts|admin_urlname:'change' original.pk|admin_urlquote %}">
|
||||
{{ original|truncatewords:"18" }}
|
||||
</a>
|
||||
› {% translate 'Change password' %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endif %}
|
||||
{% block content %}
|
||||
<div id="content-main">
|
||||
<form
|
||||
{% if form_url %}action="{{ form_url }}" {% endif %}
|
||||
method="post" id="{{ opts.model_name }}_form">
|
||||
{% csrf_token %}
|
||||
{% block form_top %}{% endblock %}
|
||||
<input type="text" name="username" value="{{ original.get_username }}" class="hidden">
|
||||
<div>
|
||||
{% if is_popup %}
|
||||
<input type="hidden" name="{{ is_popup_var }}" value="1">
|
||||
{% endif %}
|
||||
{% if form.errors %}
|
||||
<p class="errornote">
|
||||
{% if form.errors.items|length == 1 %}
|
||||
{% translate "Please correct the error below." %}
|
||||
{% else %}
|
||||
{% translate "Please correct the errors below." %}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endif %}
|
||||
<p>
|
||||
{% blocktranslate with username=original %}
|
||||
Enter a new password for the user
|
||||
<strong>{{ username }}</strong>
|
||||
.
|
||||
{% endblocktranslate %}
|
||||
</p>
|
||||
<fieldset class="module aligned">
|
||||
<div class="form-row">
|
||||
{{ form.password1.errors }}
|
||||
{{ form.password1.label_tag }} {{ form.password1 }}
|
||||
{% if form.password1.help_text %}
|
||||
<div class="help">
|
||||
{{ form.password1.help_text|safe }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="form-row">
|
||||
{{ form.password2.errors }}
|
||||
{{ form.password2.label_tag }} {{ form.password2 }}
|
||||
{% if form.password2.help_text %}
|
||||
<div class="help">
|
||||
{{ form.password2.help_text|safe }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="submit-row">
|
||||
<input type="submit" value="{% translate 'Change password' %}" class="default">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
@ -1,118 +0,0 @@
|
|||
{% load i18n static %}
|
||||
<!DOCTYPE html>
|
||||
{% get_current_language as LANGUAGE_CODE %}{% get_current_language_bidi as LANGUAGE_BIDI %}
|
||||
<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" dir="{{ LANGUAGE_BIDI|yesno:'rtl,ltr,auto' }}">
|
||||
<head>
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
<link rel="stylesheet" type="text/css" href=" {% block stylesheet %} {% static "admin/css/base.css" %}
|
||||
{% endblock %}
|
||||
">
|
||||
{% if not is_popup and is_nav_sidebar_enabled %}
|
||||
<link rel="stylesheet" type="text/css" href="{% static "admin/css/nav_sidebar.css" %}">
|
||||
<script src="{% static 'admin/js/nav_sidebar.js' %}" defer></script>
|
||||
{% endif %}
|
||||
{% block extrastyle %}{% endblock %}
|
||||
{% if LANGUAGE_BIDI %}
|
||||
<link rel="stylesheet" type="text/css" href=" {% block stylesheet_rtl %} {% static "admin/css/rtl.css" %}
|
||||
{% endblock %}
|
||||
">
|
||||
{% endif %}
|
||||
{% block extrahead %}{% endblock %}
|
||||
{% block responsive %}
|
||||
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
<link rel="stylesheet" type="text/css" href="{% static "admin/css/responsive.css" %}">
|
||||
{% if LANGUAGE_BIDI %}
|
||||
<link rel="stylesheet" type="text/css" href="{% static ">
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE">{% endblock %}
|
||||
</head>
|
||||
<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}"
|
||||
data-admin-utc-offset="{% now ">
|
||||
<!-- Container -->
|
||||
<div id="container">
|
||||
{% if not is_popup %}
|
||||
<!-- Header -->
|
||||
{% block header %}
|
||||
<div id="header">
|
||||
<div id="branding">
|
||||
{% block branding %}{% endblock %}
|
||||
</div>
|
||||
{% block usertools %}
|
||||
{% if has_permission %}
|
||||
<div id="user-tools">
|
||||
{% block welcome-msg %}
|
||||
{% translate 'Welcome,' %}
|
||||
<strong>{% firstof user.get_short_name user.get_username %}</strong>
|
||||
.
|
||||
{% endblock %}
|
||||
{% block userlinks %}
|
||||
{% if site_url %}
|
||||
<a href="{{ site_url }}">{% translate 'View site' %}</a>
|
||||
/
|
||||
{% endif %}
|
||||
{% if user.is_active and user.is_staff %}
|
||||
{% url 'django-admindocs-docroot' as docsroot %}
|
||||
{% if docsroot %}
|
||||
<a href="{{ docsroot }}">{% translate 'Documentation' %}</a>
|
||||
/
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if user.has_usable_password %}
|
||||
<a href="{% url 'admin:password_change' %}">{% translate 'Change password' %}</a>
|
||||
/
|
||||
{% endif %}
|
||||
<a href="{% url 'admin:logout' %}">{% translate 'Log out' %}</a>
|
||||
{% endblock %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% block nav-global %}{% endblock %}</div>{% endblock %}
|
||||
<!-- END Header -->
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
{% if title %}› {{ title }}{% endif %}
|
||||
</div>
|
||||
{% endblock %}{% endif %}
|
||||
<div class="main" id="main">
|
||||
{% if not is_popup and is_nav_sidebar_enabled %}
|
||||
{% block nav-sidebar %}
|
||||
{% include "admin/nav_sidebar.html" %}{% endblock %}{% endif %}
|
||||
<div class="content">
|
||||
{% block messages %}
|
||||
{% if messages %}
|
||||
<ul class="messagelist">
|
||||
{% for message in messages %}
|
||||
<li{% if message.tags %}class="{{ message.tags }}"{% endif %}>{{ message|capfirst }}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endblock messages %}
|
||||
<!-- Content -->
|
||||
<div id="content" class="{% block coltype %}colM{% endblock %}">
|
||||
{% block pretitle %}{% endblock %}
|
||||
{% block content_title %}{% if title %}
|
||||
<h1>{{ title }}</h1>
|
||||
{% endif %}{% endblock %}
|
||||
{% block content_subtitle %}{% if subtitle %}
|
||||
<h2>{{ subtitle }}</h2>
|
||||
{% endif %}{% endblock %}
|
||||
{% block content %}
|
||||
{% block object-tools %}{% endblock %}
|
||||
{{ content }}
|
||||
{% endblock %}
|
||||
{% block sidebar %}{% endblock %}
|
||||
<br class="clear">
|
||||
</div>
|
||||
<!-- END Content -->
|
||||
{% block footer %}
|
||||
<div id="footer"></div>
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END Container -->
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{% extends "admin/base.html" %}
|
||||
{% block title %}
|
||||
{% if subtitle %}{{ subtitle }} |{% endif %}
|
||||
{{ title }} | {{ site_title|default:_('Django site admin') }}
|
||||
{% endblock %}
|
||||
{% block branding %}
|
||||
<h1 id="site-name">
|
||||
<a href="{% url 'admin:index' %}">
|
||||
{{ site_header|default:_('Django administration') }}
|
||||
</a>
|
||||
</h1>
|
||||
{% endblock %}
|
||||
{% block nav-global %}{% endblock %}
|
||||
|
|
@ -1,97 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n admin_urls static admin_modify %}
|
||||
{% block extrahead %}
|
||||
{{ block.super }}
|
||||
<script src="{% url 'admin:jsi18n' %}"></script>
|
||||
{{ media }}
|
||||
{% endblock %}
|
||||
{% block extrastyle %}
|
||||
{{ block.super }}
|
||||
<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">
|
||||
{% endblock %}
|
||||
{% block coltype %}colM{% endblock %}
|
||||
{% block bodyclass %}
|
||||
{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form
|
||||
{% endblock %}
|
||||
{% if not is_popup %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
›
|
||||
<a href="{% url 'admin:app_list' app_label=opts.app_label %}">
|
||||
{{ opts.app_config.verbose_name }}
|
||||
</a>
|
||||
›
|
||||
{% if has_view_permission %}
|
||||
<a href="{% url opts|admin_urlname:'changelist' %}">
|
||||
{{ opts.verbose_name_plural|capfirst }}
|
||||
</a>
|
||||
{% else %}
|
||||
{{ opts.verbose_name_plural|capfirst }}
|
||||
{% endif %}
|
||||
›
|
||||
{% if add %}
|
||||
{% blocktranslate with name=opts.verbose_name %}
|
||||
Add {{ name }}
|
||||
{% endblocktranslate %}
|
||||
{% else %}
|
||||
{{ original|truncatewords:"18" }}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}{% endif %}
|
||||
{% block content %}
|
||||
<div id="content-main">
|
||||
{% block object-tools %}
|
||||
{% if change %}
|
||||
{% if not is_popup %}
|
||||
<ul class="object-tools">
|
||||
{% block object-tools-items %}
|
||||
{% change_form_object_tools %}
|
||||
{% endblock %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
<form {% if has_file_field %}enctype="multipart/form-data"
|
||||
{% endif %} {% if form_url %}action="{{ form_url }}"
|
||||
{% endif %} method="post"
|
||||
id="{{ opts.model_name }}_form">
|
||||
{% csrf_token %}{% block form_top %}{% endblock %}
|
||||
<div>
|
||||
{% if is_popup %}
|
||||
<input type="hidden" name="{{ is_popup_var }}" value="1">
|
||||
{% endif %}
|
||||
{% if to_field %}
|
||||
<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}">
|
||||
{% endif %}
|
||||
{% if save_on_top %}
|
||||
{% block submit_buttons_top %}
|
||||
{% submit_row %}{% endblock %}{% endif %}
|
||||
{% if errors %}
|
||||
<p class="errornote">
|
||||
{% if errors|length == 1 %}{% translate "Please correct the error below." %}{% else %}
|
||||
{% translate "Please correct the errors below." %}{% endif %}
|
||||
</p>
|
||||
{{ adminform.form.non_field_errors }}
|
||||
{% endif %}
|
||||
{% block field_sets %}
|
||||
{% for fieldset in adminform %}
|
||||
{% include "admin/includes/fieldset.html" %}{% endfor %}
|
||||
{% endblock %}
|
||||
{% block after_field_sets %}{% endblock %}
|
||||
{% block inline_field_sets %}
|
||||
{% for inline_admin_formset in inline_admin_formsets %}
|
||||
{% include inline_admin_formset.opts.template %}{% endfor %}
|
||||
{% endblock %}
|
||||
{% block after_related_objects %}{% endblock %}
|
||||
{% block submit_buttons_bottom %}
|
||||
{% submit_row %}{% endblock %}
|
||||
{% block admin_change_form_document_ready %}
|
||||
<script id="django-admin-form-add-constants" src="{% static 'admin/js/change_form.js' %}" {% if adminform and add %}data-model-name="{{ opts.model_name }}" {% endif %} async></script>
|
||||
{% endblock %}
|
||||
{# JavaScript for prepopulated fields #}
|
||||
{% prepopulated_fields_js %}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
{% load i18n admin_urls %}
|
||||
{% block object-tools-items %}
|
||||
<li>
|
||||
{% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
|
||||
<a href="{% add_preserved_filters history_url %}" class="historylink">
|
||||
{% translate "History" %}
|
||||
</a>
|
||||
</li>
|
||||
{% if has_absolute_url %}
|
||||
<li>
|
||||
<a href="{{ absolute_url }}" class="viewsitelink">
|
||||
{% translate "View on site" %}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
@ -1,111 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n admin_urls static admin_list %}
|
||||
{% block extrastyle %}
|
||||
{{ block.super }}
|
||||
<link rel="stylesheet" type="text/css" href="{% static "admin/css/changelists.css" %}">
|
||||
{% if cl.formset %}
|
||||
<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">
|
||||
{% endif %}
|
||||
{% if cl.formset or action_form %}
|
||||
<script src="{% url 'admin:jsi18n' %}"></script>
|
||||
{% endif %}
|
||||
{{ media.css }}
|
||||
{% if not actions_on_top and not actions_on_bottom %}
|
||||
<style>
|
||||
#changelist table thead th:first-child {width: inherit}
|
||||
|
||||
</style>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% block extrahead %}
|
||||
{{ block.super }}
|
||||
{{ media.js }}
|
||||
{% endblock %}
|
||||
{% block bodyclass %}
|
||||
{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-list
|
||||
{% endblock %}
|
||||
{% if not is_popup %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
›
|
||||
<a href="{% url 'admin:app_list' app_label=cl.opts.app_label %}">
|
||||
{{ cl.opts.app_config.verbose_name }}
|
||||
</a>
|
||||
› {{ cl.opts.verbose_name_plural|capfirst }}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endif %}
|
||||
{% block coltype %}{% endblock %}
|
||||
{% block content %}
|
||||
<div id="content-main">
|
||||
{% block object-tools %}
|
||||
<ul class="object-tools">
|
||||
{% block object-tools-items %}
|
||||
{% change_list_object_tools %}
|
||||
{% endblock %}
|
||||
</ul>
|
||||
{% endblock %}
|
||||
{% if cl.formset and cl.formset.errors %}
|
||||
<p class="errornote">
|
||||
{% if cl.formset.total_error_count == 1 %}
|
||||
{% translate "Please correct the error below." %}
|
||||
{% else %}
|
||||
{% translate "Please correct the errors below." %}
|
||||
{% endif %}
|
||||
</p>
|
||||
{{ cl.formset.non_form_errors }}
|
||||
{% endif %}
|
||||
<div class="module{% if cl.has_filters %}filtered{% endif %}" id="changelist">
|
||||
<div class="changelist-form-container">
|
||||
{% block search %}
|
||||
{% search_form cl %}
|
||||
{% endblock %}
|
||||
{% block date_hierarchy %}
|
||||
{% if cl.date_hierarchy %}
|
||||
{% date_hierarchy cl %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
<form id="changelist-form" method="post"
|
||||
{% if cl.formset and cl.formset.is_multipart %}
|
||||
enctype="multipart/form-data"
|
||||
{% endif %}
|
||||
novalidate>
|
||||
{% csrf_token %}
|
||||
{% if cl.formset %}
|
||||
<div>
|
||||
{{ cl.formset.management_form }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% block result_list %}
|
||||
{% if action_form and actions_on_top and cl.show_admin_actions %}
|
||||
{% admin_actions %}
|
||||
{% endif %}
|
||||
{% result_list cl %}
|
||||
{% if action_form and actions_on_bottom and cl.show_admin_actions %}
|
||||
{% admin_actions %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% block pagination %}
|
||||
{% pagination cl %}
|
||||
{% endblock %}
|
||||
</form>
|
||||
</div>
|
||||
{% block filters %}
|
||||
{% if cl.has_filters %}
|
||||
<div id="changelist-filter">
|
||||
<h2>{% translate 'Filter' %}</h2>
|
||||
{% if cl.has_active_filters %}
|
||||
<h3 id="changelist-filter-clear">
|
||||
<a href="{{ cl.clear_all_filters_qs }}">✖ {% translate "Clear all filters" %}</a>
|
||||
</h3>
|
||||
{% endif %}
|
||||
{% for spec in cl.filter_specs %}
|
||||
{% admin_list_filter cl spec %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{% load i18n admin_urls %}
|
||||
{% block object-tools-items %}
|
||||
{% if has_add_permission %}
|
||||
<li>
|
||||
{% url cl.opts|admin_urlname:'add' as add_url %}
|
||||
<a href="{% add_preserved_filters add_url is_popup to_field %}" class="addlink">
|
||||
{% blocktranslate with cl.opts.verbose_name as name %}
|
||||
Add {{ name }}
|
||||
{% endblocktranslate %}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
{% load i18n %}
|
||||
{% if result_hidden_fields %}
|
||||
<div class="hiddenfields">
|
||||
{# DIV for HTML validation #}
|
||||
{% for item in result_hidden_fields %}{{ item }}{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if results %}
|
||||
<div class="results">
|
||||
<table id="result_list">
|
||||
<thead>
|
||||
<tr>
|
||||
{% for header in result_headers %}
|
||||
<th scope="col"{{ header.class_attrib }}>
|
||||
{% if header.sortable %}
|
||||
{% if header.sort_priority > 0 %}
|
||||
<div class="sortoptions">
|
||||
<a class="sortremove" href="{{ header.url_remove }}" title="{% translate "></a>
|
||||
{% if num_sorted_fields > 1 %}
|
||||
<span class="sortpriority"
|
||||
title="{% blocktranslate with priority_number=header.sort_priority %}Sorting priority: {{ priority_number }}{% endblocktranslate %}">
|
||||
{{ header.sort_priority }}
|
||||
</span>
|
||||
{% endif %}
|
||||
<a href="{{ header.url_toggle }}"
|
||||
class="toggle {% if header.ascending %}ascending{% else %}descending{% endif %}"
|
||||
title="{% translate "></a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<div class="text">
|
||||
{% if header.sortable %}
|
||||
<a href="{{ header.url_primary }}">{{ header.text|capfirst }}</a>
|
||||
{% else %}
|
||||
<span>{{ header.text|capfirst }}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for result in results %}
|
||||
{% if result.form and result.form.non_field_errors %}
|
||||
<tr>
|
||||
<td colspan="{{ result|length }}">{{ result.form.non_field_errors }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
<tr>
|
||||
{% for item in result %}{{ item }}{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
{% if show %}
|
||||
<div class="xfull">
|
||||
<ul class="toplinks">
|
||||
{% block date-hierarchy-toplinks %}
|
||||
{% block date-hierarchy-back %}
|
||||
{% if back %}
|
||||
<li class="date-back">
|
||||
<a href="{{ back.link }}">‹ {{ back.title }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% block date-hierarchy-choices %}
|
||||
{% for choice in choices %}
|
||||
<li>
|
||||
{% if choice.link %}<a href="{{ choice.link }}">{% endif %}
|
||||
{{ choice.title }}
|
||||
{% if choice.link %}</a>{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
</ul>
|
||||
<br class="clear">
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n admin_urls static %}
|
||||
{% block extrahead %}
|
||||
{{ block.super }}
|
||||
{{ media }}
|
||||
<script src="{% static 'admin/js/cancel.js' %}" async></script>
|
||||
{% endblock %}
|
||||
{% block bodyclass %}
|
||||
{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} delete-confirmation
|
||||
{% endblock %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
›
|
||||
<a href="{% url 'admin:app_list' app_label=opts.app_label %}">
|
||||
{{ opts.app_config.verbose_name }}
|
||||
</a>
|
||||
›
|
||||
<a href="{% url opts|admin_urlname:'changelist' %}">
|
||||
{{ opts.verbose_name_plural|capfirst }}
|
||||
</a>
|
||||
›
|
||||
<a href="{% url opts|admin_urlname:'change' object.pk|admin_urlquote %}">
|
||||
{{ object|truncatewords:"18" }}
|
||||
</a>
|
||||
› {% translate 'Delete' %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
{% if perms_lacking %}
|
||||
<p>
|
||||
{% blocktranslate with escaped_object=object %}
|
||||
Deleting the {{ object_name }} '{{ escaped_object }}' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:
|
||||
{% endblocktranslate %}
|
||||
</p>
|
||||
<ul>
|
||||
{% for obj in perms_lacking %}
|
||||
<li>
|
||||
{{ obj }}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% elif protected %}
|
||||
<p>
|
||||
{% blocktranslate with escaped_object=object %}
|
||||
Deleting the {{ object_name }} '{{ escaped_object }}' would require deleting the following protected related objects:
|
||||
{% endblocktranslate %}
|
||||
</p>
|
||||
<ul>
|
||||
{% for obj in protected %}
|
||||
<li>
|
||||
{{ obj }}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
<p>
|
||||
{% blocktranslate with escaped_object=object %}
|
||||
Are you sure you want to delete the {{ object_name }} "{{ escaped_object }}"? All of the following related items will be deleted:
|
||||
{% endblocktranslate %}
|
||||
</p>
|
||||
{% include "admin/includes/object_delete_summary.html" %}
|
||||
<h2>{% translate "Objects" %}</h2>
|
||||
<ul>
|
||||
{{ deleted_objects|unordered_list }}
|
||||
</ul>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<div>
|
||||
<input type="hidden" name="post" value="yes">
|
||||
{% if is_popup %}
|
||||
<input type="hidden" name="{{ is_popup_var }}" value="1">
|
||||
{% endif %}
|
||||
{% if to_field %}
|
||||
<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}">
|
||||
{% endif %}
|
||||
<input type="submit" value="{% translate 'Yes, I’m sure' %}">
|
||||
<a href="#" class="button cancel-link">{% translate "No, take me back" %}</a>
|
||||
</div>
|
||||
</form>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
@ -1,78 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n l10n admin_urls static %}
|
||||
{% block extrahead %}
|
||||
{{ block.super }}
|
||||
{{ media }}
|
||||
<script src="{% static 'admin/js/cancel.js' %}" async></script>
|
||||
{% endblock %}
|
||||
{% block bodyclass %}
|
||||
{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} delete-confirmation delete-selected-confirmation
|
||||
{% endblock %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
›
|
||||
<a href="{% url 'admin:app_list' app_label=opts.app_label %}">
|
||||
{{ opts.app_config.verbose_name }}
|
||||
</a>
|
||||
›
|
||||
<a href="{% url opts|admin_urlname:'changelist' %}">
|
||||
{{ opts.verbose_name_plural|capfirst }}
|
||||
</a>
|
||||
› {% translate 'Delete multiple objects' %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
{% if perms_lacking %}
|
||||
<p>
|
||||
{% blocktranslate %}
|
||||
Deleting the selected {{ objects_name }} would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:
|
||||
{% endblocktranslate %}
|
||||
</p>
|
||||
<ul>
|
||||
{% for obj in perms_lacking %}
|
||||
<li>
|
||||
{{ obj }}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% elif protected %}
|
||||
<p>
|
||||
{% blocktranslate %}
|
||||
Deleting the selected {{ objects_name }} would require deleting the following protected related objects:
|
||||
{% endblocktranslate %}
|
||||
</p>
|
||||
<ul>
|
||||
{% for obj in protected %}
|
||||
<li>
|
||||
{{ obj }}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
<p>
|
||||
{% blocktranslate %}
|
||||
Are you sure you want to delete the selected {{ objects_name }}? All of the following objects and their related items will be deleted:
|
||||
{% endblocktranslate %}
|
||||
</p>
|
||||
{% include "admin/includes/object_delete_summary.html" %}
|
||||
<h2>{% translate "Objects" %}</h2>
|
||||
{% for deletable_object in deletable_objects %}
|
||||
<ul>
|
||||
{{ deletable_object|unordered_list }}
|
||||
</ul>
|
||||
{% endfor %}
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<div>
|
||||
{% for obj in queryset %}
|
||||
<input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk|unlocalize }}">
|
||||
{% endfor %}
|
||||
<input type="hidden" name="action" value="delete_selected">
|
||||
<input type="hidden" name="post" value="yes">
|
||||
<input type="submit" value="{% translate 'Yes, I’m sure' %}">
|
||||
<a href="#" class="button cancel-link">{% translate "No, take me back" %}</a>
|
||||
</div>
|
||||
</form>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
{% load i18n admin_urls %}
|
||||
<div class="js-inline-admin-formset inline-group"
|
||||
id="{{ inline_admin_formset.formset.prefix }}-group"
|
||||
data-inline-type="stacked"
|
||||
data-inline-formset="{{ inline_admin_formset.inline_formset_data }}">
|
||||
<fieldset class="module {{ inline_admin_formset.classes }}">
|
||||
{% if inline_admin_formset.formset.max_num == 1 %}
|
||||
<h2>{{ inline_admin_formset.opts.verbose_name|capfirst }}</h2>
|
||||
{% else %}
|
||||
<h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
|
||||
{% endif %}
|
||||
{{ inline_admin_formset.formset.management_form }}
|
||||
{{ inline_admin_formset.formset.non_form_errors }}
|
||||
{% for inline_admin_form in inline_admin_formset %}
|
||||
<div class="inline-related{% if inline_admin_form.original or inline_admin_form.show_url %} has_original{% endif %}{% if forloop.last and inline_admin_formset.has_add_permission %} empty-form last-related{% endif %}"
|
||||
id="{{ inline_admin_formset.formset.prefix }}-{% if not forloop.last %}{{ forloop.counter0 }}{% else %}empty{% endif %}">
|
||||
<h3>
|
||||
<b>
|
||||
{{ inline_admin_formset.opts.verbose_name|capfirst }}:
|
||||
</b>
|
||||
<span class="inline_label">
|
||||
{% if inline_admin_form.original %}
|
||||
{{ inline_admin_form.original }}
|
||||
{% if inline_admin_form.model_admin.show_change_link and inline_admin_form.model_admin.has_registered_model %}
|
||||
<a href="{% url inline_admin_form.model_admin.opts|admin_urlname:'change' inline_admin_form.original.pk|admin_urlquote %}"
|
||||
class="{% if inline_admin_formset.has_change_permission %}inlinechangelink{% else %}inlineviewlink{% endif %}">
|
||||
{% if inline_admin_formset.has_change_permission %}{% translate "Change" %}{% else %}{% translate "View" %}{% endif %}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
#{{ forloop.counter }}
|
||||
{% endif %}
|
||||
</span>
|
||||
{% if inline_admin_form.show_url %}
|
||||
<a href="{{ inline_admin_form.absolute_url }}">
|
||||
{% translate "View on site" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if inline_admin_formset.formset.can_delete and inline_admin_formset.has_delete_permission and inline_admin_form.original %}
|
||||
<span class="delete">
|
||||
{{ inline_admin_form.deletion_field.field }} {{ inline_admin_form.deletion_field.label_tag }}
|
||||
</span>
|
||||
{% endif %}
|
||||
</h3>
|
||||
{% if inline_admin_form.form.non_field_errors %}{{ inline_admin_form.form.non_field_errors }}{% endif %}
|
||||
{% for fieldset in inline_admin_form %}
|
||||
{% include "admin/includes/fieldset.html" %}{% endfor %}
|
||||
{% if inline_admin_form.needs_explicit_pk_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
|
||||
{% if inline_admin_form.fk_field %}{{ inline_admin_form.fk_field.field }}{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</fieldset>
|
||||
</div>
|
||||
|
|
@ -1,110 +0,0 @@
|
|||
{% load i18n admin_urls static admin_modify %}
|
||||
<div class="js-inline-admin-formset inline-group"
|
||||
id="{{ inline_admin_formset.formset.prefix }}-group"
|
||||
data-inline-type="tabular"
|
||||
data-inline-formset="{{ inline_admin_formset.inline_formset_data }}">
|
||||
<div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
|
||||
{{ inline_admin_formset.formset.management_form }}
|
||||
<fieldset class="module {{ inline_admin_formset.classes }}">
|
||||
{% if inline_admin_formset.formset.max_num == 1 %}
|
||||
<h2>{{ inline_admin_formset.opts.verbose_name|capfirst }}</h2>
|
||||
{% else %}
|
||||
<h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
|
||||
{% endif %}
|
||||
{{ inline_admin_formset.formset.non_form_errors }}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="original"></th>
|
||||
{% for field in inline_admin_formset.fields %}
|
||||
{% if not field.widget.is_hidden %}
|
||||
<th class="column-{{ field.name }}{% if field.required %}required{% endif %}">
|
||||
{{ field.label|capfirst }}
|
||||
{% if field.help_text %}
|
||||
<img src="{% static "
|
||||
admin/img/icon-unknown.svg" %}" class="help help-tooltip"
|
||||
width="10"
|
||||
height="10"
|
||||
alt="({{ field.help_text|striptags }})"
|
||||
title="{{ field.help_text|striptags }}">
|
||||
{% endif %}
|
||||
</th>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if inline_admin_formset.formset.can_delete and inline_admin_formset.has_delete_permission %}
|
||||
<th>{% translate "Delete?" %}</th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for inline_admin_form in inline_admin_formset %}
|
||||
{% if inline_admin_form.form.non_field_errors %}
|
||||
<tr class="row-form-errors">
|
||||
<td colspan="{{ inline_admin_form|cell_count }}">
|
||||
{{ inline_admin_form.form.non_field_errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
<tr class="form-row {% if inline_admin_form.original or inline_admin_form.show_url %}has_original{% endif %}{% if forloop.last and inline_admin_formset.has_add_permission %} empty-form{% endif %}"
|
||||
id="{{ inline_admin_formset.formset.prefix }}-{% if not forloop.last %}{{ forloop.counter0 }}{% else %}empty{% endif %}">
|
||||
<td class="original">
|
||||
{% if inline_admin_form.original or inline_admin_form.show_url %}
|
||||
<p>
|
||||
{% if inline_admin_form.original %}
|
||||
{{ inline_admin_form.original }}
|
||||
{% if inline_admin_form.model_admin.show_change_link and inline_admin_form.model_admin.has_registered_model %}
|
||||
<a href="{% url inline_admin_form.model_admin.opts|admin_urlname:'change' inline_admin_form.original.pk|admin_urlquote %}"
|
||||
class="{% if inline_admin_formset.has_change_permission %}inlinechangelink{% else %}inlineviewlink{% endif %}">
|
||||
{% if inline_admin_formset.has_change_permission %}{% translate "Change" %}{% else %}{% translate "View" %}{% endif %}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if inline_admin_form.show_url %}
|
||||
<a href="{{ inline_admin_form.absolute_url }}">
|
||||
{% translate "View on site" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if inline_admin_form.needs_explicit_pk_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
|
||||
{% if inline_admin_form.fk_field %}{{ inline_admin_form.fk_field.field }}{% endif %}
|
||||
{% spaceless %}
|
||||
{% for fieldset in inline_admin_form %}
|
||||
{% for line in fieldset %}
|
||||
{% for field in line %}
|
||||
{% if not field.is_readonly and field.field.is_hidden %}{{ field.field }}{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endspaceless %}
|
||||
</td>
|
||||
{% for fieldset in inline_admin_form %}
|
||||
{% for line in fieldset %}
|
||||
{% for field in line %}
|
||||
{% if field.is_readonly or not field.field.is_hidden %}
|
||||
<td{% if field.field.name %}class="field-{{ field.field.name }}"{% endif %}>
|
||||
{% if field.is_readonly %}
|
||||
<p>
|
||||
{{ field.contents }}
|
||||
</p>
|
||||
{% else %}
|
||||
{{ field.field.errors.as_ul }}
|
||||
{{ field.field }}
|
||||
{% endif %}
|
||||
</td>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% if inline_admin_formset.formset.can_delete and inline_admin_formset.has_delete_permission %}
|
||||
<td class="delete">
|
||||
{% if inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }}{% endif %}
|
||||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
{% load i18n %}
|
||||
<h3>
|
||||
{% blocktranslate with filter_title=title %}
|
||||
By {{ filter_title }}
|
||||
{% endblocktranslate %}
|
||||
</h3>
|
||||
<ul>
|
||||
{% for choice in choices %}
|
||||
<li
|
||||
{% if choice.selected %}class="selected" {% endif %}
|
||||
>
|
||||
<a href="{{ choice.query_string|iriencode }}" title="{{ choice.display }}">
|
||||
{{ choice.display }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
<fieldset class="module aligned {{ fieldset.classes }}">
|
||||
{% if fieldset.name %}<h2>{{ fieldset.name }}</h2>{% endif %}
|
||||
{% if fieldset.description %}
|
||||
<div class="description">
|
||||
{{ fieldset.description|safe }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% for line in fieldset %}
|
||||
<div class="form-row{% if line.fields|length_is:'1' and line.errors %} errors{% endif %}{% if not line.has_visible_field %}hidden{% endif %}{% for field in line %}{% if field.field.name %}field-{{ field.field.name }}{% endif %}{% endfor %}">
|
||||
{% if line.fields|length_is:'1' %}{{ line.errors }}{% endif %}
|
||||
{% for field in line %}
|
||||
<div
|
||||
{% if not line.fields|length_is:'1' %}
|
||||
class="fieldBox {% if field.field.name %}field-{{ field.field.name }}{% endif %}{% if not field.is_readonly and field.errors %} errors{% endif %}{% if field.field.is_hidden %}hidden{% endif %}"{% elif field.is_checkbox %} class="checkbox-row"{% endif %}>
|
||||
{% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}
|
||||
{% if field.is_checkbox %}
|
||||
{{ field.field }}{{ field.label_tag }}
|
||||
{% else %}
|
||||
{{ field.label_tag }}
|
||||
{% if field.is_readonly %}
|
||||
<div class="readonly">
|
||||
{{ field.contents }}
|
||||
</div>
|
||||
{% else %}
|
||||
{{ field.field }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if field.field.help_text %}
|
||||
<div class="help">
|
||||
{{ field.field.help_text|safe }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</fieldset>
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
{% load i18n %}
|
||||
<h2>{% translate "Summary" %}</h2>
|
||||
<ul>
|
||||
{% for model_name, object_count in model_count %}
|
||||
<li>
|
||||
{{ model_name|capfirst }}: {{ object_count }}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n static %}
|
||||
{% block extrastyle %}
|
||||
{{ block.super }}
|
||||
<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}">
|
||||
{% endblock %}
|
||||
{% block coltype %}colMS{% endblock %}
|
||||
{% block bodyclass %}{{ block.super }} dashboard{% endblock %}
|
||||
{% block breadcrumbs %}{% endblock %}
|
||||
{% block nav-sidebar %}{% endblock %}
|
||||
{% block content %}
|
||||
<div id="content-main">
|
||||
{% include "admin/app_list.html" with app_list=app_list show_changelinks=True %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block sidebar %}
|
||||
<div id="content-related">
|
||||
<div class="module" id="recent-actions-module">
|
||||
<h2>{% translate 'Recent actions' %}</h2>
|
||||
<h3>{% translate 'My actions' %}</h3>
|
||||
{% load log %}
|
||||
{% get_admin_log 10 as admin_log for_user user %}
|
||||
{% if not admin_log %}
|
||||
<p>
|
||||
{% translate 'None available' %}
|
||||
</p>
|
||||
{% else %}
|
||||
<ul class="actionlist">
|
||||
{% for entry in admin_log %}
|
||||
<li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">
|
||||
{% if entry.is_deletion or not entry.get_admin_url %}
|
||||
{{ entry.object_repr }}
|
||||
{% else %}
|
||||
<a href="{{ entry.get_admin_url }}">{{ entry.object_repr }}</a>
|
||||
{% endif %}
|
||||
<br>
|
||||
{% if entry.content_type %}
|
||||
<span class="mini quiet">
|
||||
{% filter capfirst %}{{ entry.content_type.name }}
|
||||
{% endfilter %}
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="mini quiet">{% translate 'Unknown content' %}</span>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
› {{ title }}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<p>
|
||||
{% translate 'Something’s wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user.' %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n static %}
|
||||
{% block extrastyle %}
|
||||
{{ block.super }}
|
||||
<link rel="stylesheet" type="text/css" href="{% static "admin/css/login.css" %}">
|
||||
{{ form.media }}
|
||||
{% endblock %}
|
||||
{% block bodyclass %}{{ block.super }} login{% endblock %}
|
||||
{% block usertools %}{% endblock %}
|
||||
{% block nav-global %}{% endblock %}
|
||||
{% block nav-sidebar %}{% endblock %}
|
||||
{% block content_title %}{% endblock %}
|
||||
{% block breadcrumbs %}{% endblock %}
|
||||
{% block content %}
|
||||
{% if form.errors and not form.non_field_errors %}
|
||||
<p class="errornote">
|
||||
{% if form.errors.items|length == 1 %}
|
||||
{% translate "Please correct the error below." %}
|
||||
{% else %}
|
||||
{% translate "Please correct the errors below." %}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if form.non_field_errors %}
|
||||
{% for error in form.non_field_errors %}
|
||||
<p class="errornote">
|
||||
{{ error }}
|
||||
</p>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
<div id="content-main">
|
||||
{% if user.is_authenticated %}
|
||||
<p class="errornote">
|
||||
{% blocktranslate trimmed %}
|
||||
You are authenticated as {{ username }}, but are not authorized to
|
||||
access this page. Would you like to login to a different account?
|
||||
{% endblocktranslate %}
|
||||
</p>
|
||||
{% endif %}
|
||||
<form action="{{ app_path }}" method="post" id="login-form">
|
||||
{% csrf_token %}
|
||||
<div class="form-row">
|
||||
{{ form.username.errors }}
|
||||
{{ form.username.label_tag }} {{ form.username }}
|
||||
</div>
|
||||
<div class="form-row">
|
||||
{{ form.password.errors }}
|
||||
{{ form.password.label_tag }} {{ form.password }}
|
||||
<input type="hidden" name="next" value="{{ next }}">
|
||||
</div>
|
||||
{% url 'admin_password_reset' as password_reset_url %}
|
||||
{% if password_reset_url %}
|
||||
<div class="password-reset-link">
|
||||
<a href="{{ password_reset_url }}">
|
||||
{% translate 'Forgotten your password or username?' %}
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="submit-row">
|
||||
<input type="submit" value="{% translate 'Log in' %}">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
{% load i18n %}
|
||||
<button class="sticky toggle-nav-sidebar"
|
||||
id="toggle-nav-sidebar"
|
||||
aria-label="{% translate 'Toggle navigation' %}"></button>
|
||||
<nav class="sticky" id="nav-sidebar">
|
||||
<input type="search"
|
||||
id="nav-filter"
|
||||
placeholder="{% translate 'Start typing to filter...' %}"
|
||||
aria-label="{% translate 'Filter navigation items' %}">
|
||||
{% include 'admin/app_list.html' with app_list=available_apps show_changelinks=False %}
|
||||
</nav>
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n admin_urls %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
›
|
||||
<a href="{% url 'admin:app_list' app_label=opts.app_label %}">
|
||||
{{ opts.app_config.verbose_name }}
|
||||
</a>
|
||||
›
|
||||
<a href="{% url opts|admin_urlname:'changelist' %}">
|
||||
{{ module_name }}
|
||||
</a>
|
||||
›
|
||||
<a href="{% url opts|admin_urlname:'change' object.pk|admin_urlquote %}">
|
||||
{{ object|truncatewords:"18" }}
|
||||
</a>
|
||||
› {% translate 'History' %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<div id="content-main">
|
||||
<div class="module">
|
||||
{% if action_list %}
|
||||
<table id="change-history">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">{% translate 'Date/time' %}</th>
|
||||
<th scope="col">{% translate 'User' %}</th>
|
||||
<th scope="col">{% translate 'Action' %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for action in action_list %}
|
||||
<tr>
|
||||
<th scope="row">{{ action.action_time|date:"DATETIME_FORMAT" }}</th>
|
||||
<td>
|
||||
{{ action.user.get_username }}
|
||||
{% if action.user.get_full_name %}({{ action.user.get_full_name }}){% endif %}
|
||||
</td>
|
||||
<td>{{ action.get_change_message }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<p>
|
||||
{% translate 'This object doesn’t have a change history. It probably wasn’t added via this admin site.' %}
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
{% load admin_list %}
|
||||
{% load i18n %}
|
||||
<p class="paginator">
|
||||
{% if pagination_required %}
|
||||
{% for i in page_range %}
|
||||
{% paginator_number cl i %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{{ cl.result_count }}
|
||||
{% if cl.result_count == 1 %}
|
||||
{{ cl.opts.verbose_name }}
|
||||
{% else %}
|
||||
{{ cl.opts.verbose_name_plural }}
|
||||
{% endif %}
|
||||
{% if show_all_url %}
|
||||
<a href="{{ show_all_url }}" class="showall">
|
||||
{% translate 'Show all' %}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if cl.formset and cl.result_count %}
|
||||
<input type="submit" name="_save" class="default" value="{% translate 'Save' %}">
|
||||
{% endif %}
|
||||
</p>
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
{% load i18n static %}
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>{% translate 'Popup closing…' %}</title>
|
||||
</head>
|
||||
<body>
|
||||
<script id="django-admin-popup-response-constants" src="{% static "admin/js/popup_response.js" %}" data-popup-response="{{ popup_response_data }}"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
{% load static %}
|
||||
<script id="django-admin-prepopulated-fields-constants" src="{% static "admin/js/prepopulate_init.js" %}" data-prepopulated-fields="{{ prepopulated_fields_json }}"></script>
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
{% load i18n static %}
|
||||
{% if cl.search_fields %}
|
||||
<div id="toolbar">
|
||||
<form id="changelist-search" method="get">
|
||||
<div>
|
||||
<!-- DIV needed for valid HTML -->
|
||||
<label for="searchbar">
|
||||
<img src="{% static "admin/img/search.svg" %}" alt="Search">
|
||||
</label>
|
||||
<input type="text" size="40" name="{{ search_var }}" value="{{ cl.query }}" id="searchbar">
|
||||
<input type="submit" value="{% translate 'Search' %}">
|
||||
{% if show_result_count %}
|
||||
<span class="small quiet">
|
||||
{% blocktranslate count counter=cl.result_count %}
|
||||
{{ counter }} result{% plural %}{{ counter }} results
|
||||
{% endblocktranslate %}
|
||||
(
|
||||
<a href="?{% if cl.is_popup %}{{ is_popup_var }}=1{% endif %}">
|
||||
{% if cl.show_full_result_count %}
|
||||
{% blocktranslate with full_result_count=cl.full_result_count %}
|
||||
{{ full_result_count }} total
|
||||
{% endblocktranslate %}
|
||||
{% else %}
|
||||
{% translate "Show all" %}
|
||||
{% endif %}
|
||||
</a>
|
||||
)
|
||||
</span>
|
||||
{% endif %}
|
||||
{% for pair in cl.params.items %}
|
||||
{% if pair.0 != search_var %}
|
||||
<input type="hidden" name="{{ pair.0 }}" value="{{ pair.1 }}">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% if cl.search_help_text %}
|
||||
<br class="clear">
|
||||
<div class="help">
|
||||
{{ cl.search_help_text }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
{% load i18n admin_urls %}
|
||||
<div class="submit-row">
|
||||
{% block submit-row %}
|
||||
{% if show_save %}
|
||||
<input type="submit" value="{% translate 'Save' %}" class="default" name="_save">
|
||||
{% endif %}
|
||||
{% if show_delete_link and original %}
|
||||
{% url opts|admin_urlname:'delete' original.pk|admin_urlquote as delete_url %}
|
||||
<p class="deletelink-box">
|
||||
<a href="{% add_preserved_filters delete_url %}" class="deletelink">
|
||||
{% translate "Delete" %}
|
||||
</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if show_save_as_new %}
|
||||
<input type="submit" value="{% translate 'Save as new' %}" name="_saveasnew">
|
||||
{% endif %}
|
||||
{% if show_save_and_add_another %}
|
||||
<input type="submit" value="{% translate 'Save and add another' %}" name="_addanother">
|
||||
{% endif %}
|
||||
{% if show_save_and_continue %}
|
||||
<input type="submit"
|
||||
value="{% if can_change %} {% translate 'Save and continue editing' %}{% else %}{% translate 'Save and view' %}{% endif %}"
|
||||
name="_continue">
|
||||
{% endif %}
|
||||
{% if show_close %}
|
||||
<a href="{% url opts|admin_urlname:'changelist' %}" class="closelink">
|
||||
{% translate 'Close' %}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
{% if widget.is_initial %}
|
||||
<p class="file-upload">
|
||||
{{ widget.initial_text }}:
|
||||
<a href="{{ widget.value.url }}">{{ widget.value }}</a>
|
||||
{% if not widget.required %}
|
||||
<span class="clearable-file-input">
|
||||
<input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}"
|
||||
{% if widget.attrs.disabled %}disabled {% endif %}
|
||||
>
|
||||
<label for="{{ widget.checkbox_id }}">{{ widget.clear_checkbox_label }}</label>
|
||||
</span>
|
||||
{% endif %}
|
||||
<br>
|
||||
{{ widget.input_text }}:
|
||||
{% endif %}
|
||||
<input type="{{ widget.type }}" name="{{ widget.name }}"
|
||||
{% include "django/forms/widgets/attrs.html" %}
|
||||
>
|
||||
{% if widget.is_initial %}</p>{% endif %}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
{% include 'django/forms/widgets/input.html' %}
|
||||
{% if related_url %}
|
||||
<a href="{{ related_url }}" class="related-lookup" id="lookup_id_{{ widget.name }}" title="{{ link_title }}"></a>
|
||||
{% endif %}
|
||||
{% if link_label %}
|
||||
<strong>
|
||||
{% if link_url %}<a href="{{ link_url }}">{% endif %}
|
||||
{{ link_label }}
|
||||
{% if link_url %}</a>{% endif %}
|
||||
</strong>
|
||||
{% endif %}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{% include 'admin/widgets/foreign_key_raw_id.html' %}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{% include "django/forms/widgets/multiple_input.html" %}
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
{% load i18n static %}
|
||||
<div class="related-widget-wrapper">
|
||||
{{ rendered_widget }}
|
||||
{% block links %}
|
||||
{% spaceless %}
|
||||
{% if not is_hidden %}
|
||||
{% if can_change_related %}
|
||||
<a class="related-widget-wrapper-link change-related"
|
||||
id="change_id_{{ name }}"
|
||||
data-href-template="{{ change_related_template_url }}?{{ url_params }}"
|
||||
title="{% blocktranslate %}Change selected {{ model }}{% endblocktranslate %}">
|
||||
<img src="{% static 'admin/img/icon-changelink.svg' %}" alt="{% translate 'Change' %}">
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if can_add_related %}
|
||||
<a class="related-widget-wrapper-link add-related"
|
||||
id="add_id_{{ name }}"
|
||||
href="{{ add_related_url }}?{{ url_params }}"
|
||||
title="{% blocktranslate %}Add another {{ model }}{% endblocktranslate %}">
|
||||
<img src="{% static 'admin/img/icon-addlink.svg' %}" alt="{% translate 'Add' %}">
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if can_delete_related %}
|
||||
<a class="related-widget-wrapper-link delete-related"
|
||||
id="delete_id_{{ name }}"
|
||||
data-href-template="{{ delete_related_template_url }}?{{ url_params }}"
|
||||
title="{% blocktranslate %}Delete selected {{ model }}{% endblocktranslate %}">
|
||||
<img src="{% static 'admin/img/icon-deletelink.svg' %}" alt="{% translate 'Delete' %}">
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endspaceless %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
<p class="datetime">
|
||||
{{ date_label }}
|
||||
{% with widget=widget.subwidgets.0 %}
|
||||
{% include widget.template_name %}
|
||||
{% endwith %}
|
||||
<br>
|
||||
{{ time_label }}
|
||||
{% with widget=widget.subwidgets.1 %}
|
||||
{% include widget.template_name %}
|
||||
{% endwith %}
|
||||
</p>
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
{% if url_valid %}
|
||||
<p class="url">
|
||||
{{ current_label }}
|
||||
<a href="{{ widget.href }}">{{ widget.value }}</a>
|
||||
<br>
|
||||
{{ change_label }}
|
||||
{% endif %}
|
||||
{% include "django/forms/widgets/input.html" %}
|
||||
{% if url_valid %}</p>{% endif %}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block nav-sidebar %}{% endblock %}
|
||||
{% block content %}
|
||||
<p>
|
||||
{% translate "Thanks for spending some quality time with the Web site today." %}
|
||||
</p>
|
||||
<p>
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Log in again' %}</a>
|
||||
</p>
|
||||
{% endblock %}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n %}
|
||||
{% block userlinks %}
|
||||
{% url 'django-admindocs-docroot' as docsroot %}
|
||||
{% if docsroot %}
|
||||
<a href="{{ docsroot }}">{% translate 'Documentation' %}</a>
|
||||
/
|
||||
{% endif %}
|
||||
{% translate 'Change password' %} /
|
||||
<a href="{% url 'admin:logout' %}">{% translate 'Log out' %}</a>
|
||||
{% endblock %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
› {% translate 'Password change' %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<p>
|
||||
{% translate 'Your password was changed.' %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n static %}
|
||||
{% block extrastyle %}
|
||||
{{ block.super }}
|
||||
<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">
|
||||
{% endblock %}
|
||||
{% block userlinks %}
|
||||
{% url 'django-admindocs-docroot' as docsroot %}
|
||||
{% if docsroot %}
|
||||
<a href="{{ docsroot }}">{% translate 'Documentation' %}</a>
|
||||
/
|
||||
{% endif %}
|
||||
{% translate 'Change password' %} /
|
||||
<a href="{% url 'admin:logout' %}">{% translate 'Log out' %}</a>
|
||||
{% endblock %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
› {% translate 'Password change' %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<div id="content-main">
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<div>
|
||||
{% if form.errors %}
|
||||
<p class="errornote">
|
||||
{% if form.errors.items|length == 1 %}
|
||||
{% translate "Please correct the error below." %}
|
||||
{% else %}
|
||||
{% translate "Please correct the errors below." %}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endif %}
|
||||
<p>
|
||||
{% translate 'Please enter your old password, for security’s sake, and then enter your new password twice so we can verify you typed it in correctly.' %}
|
||||
</p>
|
||||
<fieldset class="module aligned wide">
|
||||
<div class="form-row">
|
||||
{{ form.old_password.errors }}
|
||||
{{ form.old_password.label_tag }} {{ form.old_password }}
|
||||
</div>
|
||||
<div class="form-row">
|
||||
{{ form.new_password1.errors }}
|
||||
{{ form.new_password1.label_tag }} {{ form.new_password1 }}
|
||||
{% if form.new_password1.help_text %}
|
||||
<div class="help">
|
||||
{{ form.new_password1.help_text|safe }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="form-row">
|
||||
{{ form.new_password2.errors }}
|
||||
{{ form.new_password2.label_tag }} {{ form.new_password2 }}
|
||||
{% if form.new_password2.help_text %}
|
||||
<div class="help">
|
||||
{{ form.new_password2.help_text|safe }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="submit-row">
|
||||
<input type="submit" value="{% translate 'Change my password' %}" class="default">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
› {% translate 'Password reset' %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<p>
|
||||
{% translate "Your password has been set. You may go ahead and log in now." %}
|
||||
</p>
|
||||
<p>
|
||||
<a href="{{ login_url }}">{% translate 'Log in' %}</a>
|
||||
</p>
|
||||
{% endblock %}
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n static %}
|
||||
{% block extrastyle %}
|
||||
{{ block.super }}
|
||||
<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">
|
||||
{% endblock %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
› {% translate 'Password reset confirmation' %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
{% if validlink %}
|
||||
<p>
|
||||
{% translate "Please enter your new password twice so we can verify you typed it in correctly." %}
|
||||
</p>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<fieldset class="module aligned">
|
||||
<input class="hidden" autocomplete="username" value="{{ form.user.get_username }}">
|
||||
<div class="form-row field-password1">
|
||||
{{ form.new_password1.errors }}
|
||||
<label for="id_new_password1">{% translate 'New password:' %}</label>
|
||||
{{ form.new_password1 }}
|
||||
</div>
|
||||
<div class="form-row field-password2">
|
||||
{{ form.new_password2.errors }}
|
||||
<label for="id_new_password2">{% translate 'Confirm password:' %}</label>
|
||||
{{ form.new_password2 }}
|
||||
</div>
|
||||
<input type="submit" value="{% translate 'Change my password' %}">
|
||||
</fieldset>
|
||||
</form>
|
||||
{% else %}
|
||||
<p>
|
||||
{% translate "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." %}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
› {% translate 'Password reset' %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<p>
|
||||
{% translate 'We’ve emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly.' %}
|
||||
</p>
|
||||
<p>
|
||||
{% translate 'If you don’t receive an email, please make sure you’ve entered the address you registered with, and check your spam folder.' %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
{% load i18n %}
|
||||
{% autoescape off %}
|
||||
{% blocktranslate %}
|
||||
You're receiving this email because you requested a password reset for your user account at {{ site_name }}.
|
||||
{% endblocktranslate %}
|
||||
{% translate "Please go to the following page and choose a new password:" %}
|
||||
{% block reset_link %}
|
||||
{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}
|
||||
{% endblock %}
|
||||
{% translate 'Your username, in case you’ve forgotten:' %} {{ user.get_username }}
|
||||
{% translate "Thanks for using our site!" %}
|
||||
{% blocktranslate %}
|
||||
The {{ site_name }} team
|
||||
{% endblocktranslate %}
|
||||
{% endautoescape %}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n static %}
|
||||
{% block extrastyle %}
|
||||
{{ block.super }}
|
||||
<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}">
|
||||
{% endblock %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
|
||||
› {% translate 'Password reset' %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<p>
|
||||
{% translate 'Forgotten your password? Enter your email address below, and we’ll email instructions for setting a new one.' %}
|
||||
</p>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<fieldset class="module aligned">
|
||||
<div class="form-row field-email">
|
||||
{{ form.email.errors }}
|
||||
<label for="id_email">{% translate 'Email address:' %}</label>
|
||||
{{ form.email }}
|
||||
</div>
|
||||
<input type="submit" value="{% translate 'Reset my password' %}">
|
||||
</fieldset>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
{% extends "admin/change_form.html" %}
|
||||
{% load i18n admin_urls %}
|
||||
{% block submit_buttons_bottom %}
|
||||
<div class="submit-row"
|
||||
{% if is_popup %}style="overflow: auto;" {% endif %}
|
||||
>
|
||||
<input type="submit" name="_save" class="default" value="{% trans 'Save' %}"/>
|
||||
{% if not add %}
|
||||
<p class="deletelink-box">
|
||||
{% url opts|admin_urlname:'delete' original.pk|admin_urlquote as delete_url %}
|
||||
<a href="{% add_preserved_filters delete_url %}" class="deletelink">
|
||||
{% trans "Delete" %}
|
||||
</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
{% load i18n %}
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head height="100%">
|
||||
<title>{{ title }}</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="Content-Language" content="en-us" />
|
||||
<style type="text/css">
|
||||
html,
|
||||
body,
|
||||
.grid {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.header {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 28px;
|
||||
font-family: Lucida Grande;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.content h1 {
|
||||
font-size: 20px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.content a,
|
||||
.content a:active,
|
||||
.content a:visited,
|
||||
.content a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.data {
|
||||
line-height: 24px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0" height="100%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%" class="grid">
|
||||
<tr>
|
||||
<td width="100%" class="content" valign="top">
|
||||
<div class="header">
|
||||
<h1>{{ title }}</h1>
|
||||
{% block header %}{% endblock %}
|
||||
</div>
|
||||
{% block content %}{% endblock %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="content">
|
||||
<p>
|
||||
{% blocktrans %}
|
||||
Log in to administration
|
||||
<a href="{{ login_url }}">here</a>
|
||||
.
|
||||
{% endblocktrans %}
|
||||
</p>
|
||||
<p>
|
||||
Generated by
|
||||
<a href="https://www.django-cms.org">django cms</a>
|
||||
{% now "d.m.Y H:i:s" %}.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
{% load i18n %}
|
||||
|
||||
{{ title }}
|
||||
--------------
|
||||
{% block header %}{% endblock %}
|
||||
{% block content %}{% endblock %}
|
||||
|
||||
{% blocktrans %}Login url: {{ login_url }}{% endblocktrans %}
|
||||
|
||||
[Generated by: http://www.django-cms.org {% now "d.m.Y H:i:s" %}.]
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
{% extends 'admin/cms/mail/base.html' %}
|
||||
{% load i18n %}
|
||||
{% block content %}
|
||||
<table>
|
||||
<tr>
|
||||
<td>{% trans 'Username:' %}</td>
|
||||
<td>{{ user.username }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{% trans 'Password:' %}</td>
|
||||
<td>{{ password }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
{% extends 'admin/cms/mail/base.txt' %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block content %}
|
||||
{% trans 'Username:' %} {{ user.username }}
|
||||
{% trans 'Password:' %} {{ password }}
|
||||
{% endblock %}
|
||||
|
|
@ -1,133 +0,0 @@
|
|||
{% extends "admin/change_form.html" %}
|
||||
{% load i18n admin_urls static admin_modify admin_urls cms_admin cms_static %}
|
||||
{% block title %}
|
||||
{% if add %}
|
||||
{% trans 'Add a page' %}
|
||||
{% else %}
|
||||
{% trans "Change a page" %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
|
||||
›
|
||||
<a href="{% url 'admin:app_list' app_label=opts.app_label %}">
|
||||
{{ opts.app_config.verbose_name }}
|
||||
</a>
|
||||
›
|
||||
{% if has_change_permission %}
|
||||
<a href="{% url opts|admin_urlname:'changelist' %}">
|
||||
{{ opts.verbose_name_plural|capfirst }}
|
||||
</a>
|
||||
{% else %}
|
||||
{{ opts.verbose_name_plural|capfirst }}
|
||||
{% endif %}
|
||||
›
|
||||
{% if add %}
|
||||
{% trans 'Add' %} {{ opts.verbose_name }}
|
||||
{% else %}
|
||||
{{ original|truncatewords:"18" }}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block extrahead %}
|
||||
<script src="{% static "admin/js/urlify.js" %}" type="text/javascript"></script>
|
||||
<script src="{% static_with_version "cms/js/dist/bundle.admin.base.min.js" %}" type="text/javascript"></script>
|
||||
<script src="{% static_with_version "cms/js/dist/bundle.admin.changeform.min.js" %}" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
if (!window.jQuery) {
|
||||
window.jQuery = CMS.$;
|
||||
window.$ = window.jQuery;
|
||||
}
|
||||
</script>
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
||||
{% block content_title %}
|
||||
{% if title %}<h1>{{ title }}</h1>{% endif %}
|
||||
{% if not popup and not add %}
|
||||
<ul class="object-tools hide-in-modal">
|
||||
<li>
|
||||
{% url opts|admin_urlname:'preview_page' page.id language as admin_url %}
|
||||
<a href="{{ admin_url }}" target="_parent">{% trans "View on site" %}</a>
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<div id="content-main">
|
||||
{% block object-tools %}{% endblock %}
|
||||
<form {% if has_file_field %}enctype="multipart/form-data"
|
||||
{% endif %}action="?language={{ language }}{% if request.GET.parent_node %}&parent_node={{ request.GET.parent_node }}{% endif %}{% if request.GET.source %}&source={{ request.GET.source }}{% endif %}"
|
||||
method="post"
|
||||
id="page_form">
|
||||
{% csrf_token %}
|
||||
{% block form_top %}{% endblock %}
|
||||
<div style="display: none;"><input type="hidden"
|
||||
name="language"
|
||||
value="{{ language }}"
|
||||
id="id_language"/></div>
|
||||
{% if show_language_tabs and not show_permissions %}
|
||||
<div id="page_form_lang_tabs">
|
||||
{% for lang_code, lang_name in language_tabs %}
|
||||
<input type="button"
|
||||
onclick="CMS.API.changeLanguage('./?language={{ lang_code }}');"
|
||||
class="language_button {% if lang_code == language %}selected{% else %}{% if not lang_code in filled_languages %} notfilled{% endif %}{% endif %}"
|
||||
id="{{ lang_code }}button"
|
||||
name="{{ lang_code }}"
|
||||
value="{{ lang_name }}"/>
|
||||
{% endfor %}
|
||||
<div class="lang_tabs_line"></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div id="lang_tab_content">
|
||||
{% if is_popup %}<input type="hidden" name="_popup" value="1" />{% endif %}
|
||||
{% if save_on_top %}{% submit_row %}{% endif %}
|
||||
{% if errors %}
|
||||
<p class="errornote">
|
||||
{% blocktrans count errors|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}
|
||||
</p>
|
||||
<ul class="errorlist">{% for error in adminform.form.non_field_errors %}<li>{{ error }}</li>{% endfor %}</ul>
|
||||
{% endif %}
|
||||
{% for fieldset in adminform %}
|
||||
{% include "admin/cms/page/includes/fieldset.html" %}{% endfor %}
|
||||
{% for inline_admin_formset in inline_admin_formsets %}
|
||||
{% include inline_admin_formset.opts.template %}{% endfor %}
|
||||
{% if show_permissions %}
|
||||
{% if CMS_PERMISSION and can_change_permissions %}
|
||||
<div class="inline-group">
|
||||
<div class="tabular inline-related">
|
||||
<fieldset id="inherited_permissions" class="module aligned collapse">
|
||||
<h2>{% trans 'All permissions' %}</h2>
|
||||
<div class="loading"
|
||||
rel="../permissions/">{% trans 'Loading...' %}</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% block after_related_objects %}{% endblock %}
|
||||
{% if add %}
|
||||
<div class="submit-row" {% if is_popup %} style="overflow: auto;">
|
||||
<input type="submit" name="_save" class="default" value="{% trans 'Save' %}"/>
|
||||
<input type="submit"
|
||||
name="_continue"
|
||||
value="{% trans 'Save and continue editing' %}"/>
|
||||
</div>
|
||||
{% else %}
|
||||
{% page_submit_row %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% block admin_change_form_document_ready %}
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
||||
{% for url in unihandecode_urls %}<script src="{{ url }}" type="text/javascript"></script>{% endfor %}
|
||||
{% if unihandecode_urls %}
|
||||
<script>
|
||||
var UNIHANDECODER = unihandecode.Unihan('{{ unihandecode_lang }}');
|
||||
</script>
|
||||
{% endif %}
|
||||
{# JavaScript for prepopulated fields #}
|
||||
{% prepopulated_fields_js %}
|
||||
{% endblock %}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
{% extends "admin/change_form.html" %}
|
||||
{% load i18n l10n static cms_static %}
|
||||
{% block title %}
|
||||
{% trans "Change a page" %}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
{# trick for cms to understand that the plugin was actually correctly saved #}
|
||||
<div class="messagelist">
|
||||
<div class="success"></div>
|
||||
</div>
|
||||
<script>
|
||||
window.CMS || window.parent.CMS || document.write(
|
||||
'<script src="{% static_with_version "cms/js/dist/bundle.admin.base.min.js" %}" type="text/javascript"><\/script>'
|
||||
);
|
||||
</script>
|
||||
<script>
|
||||
// we have a special case here cause the CMS namespace
|
||||
// can be either inside the current window or the parent
|
||||
(function(Window) {
|
||||
// the dataBridge is used to access plugin information from different resources
|
||||
// Do NOT move this!!!
|
||||
Window.CMS.API.Helpers.dataBridge = {{ plugin_data|safe }};
|
||||
|
||||
{% if plugin_structure %}
|
||||
Window.CMS.API.Helpers.dataBridge.structure = {{ plugin_structure|safe }};
|
||||
{% endif %}
|
||||
|
||||
Window.CMS.$(document).ready(function () {
|
||||
// make sure we're doing after the "modal" mechanism kicked in
|
||||
setTimeout(function () {
|
||||
// save current plugin
|
||||
Window.CMS.API.Helpers.onPluginSave();
|
||||
}, 100);
|
||||
});
|
||||
})(window.parent || window);
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{% extends "admin/includes/fieldset.html" %}
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
{% load i18n cms_admin cms_tags admin_urls %}
|
||||
{% if rows %}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% trans "Page" %}</th>
|
||||
<th>{% trans "User" %}</th>
|
||||
<th>{% trans "Group" %}</th>
|
||||
<th>{% trans "Can edit" %}</th>
|
||||
<th>{% trans "Can add" %}</th>
|
||||
<th>{% trans "Can delete" %}</th>
|
||||
<th>{% trans "Can publish" %}</th>
|
||||
<th>{% trans "Can change permissions" %}</th>
|
||||
<th>{% trans "Can move" %}</th>
|
||||
<th>{% trans "Can view" %}</th>
|
||||
<th>{% trans "Grant on" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for row in rows %}
|
||||
{% with permission=row.permission %}
|
||||
<tr class="{% cycle 'row1' 'row2' %}">
|
||||
<td class="page">
|
||||
{% if row.is_global %}
|
||||
{% if row.can_change %}
|
||||
<a href="{% cms_admin_url 'cms_globalpagepermission_change' permission.id %}">
|
||||
{% trans "(global)" %}
|
||||
</a>
|
||||
{% else %}
|
||||
{% trans "(global)" %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if permission.page_id == page.id %}
|
||||
{% trans "(current)" %}
|
||||
{% else %}
|
||||
{% if row.can_change %}
|
||||
<a href="{% url opts|admin_urlname:'change' permission.page_id %}">
|
||||
{{ permission.page }}
|
||||
</a>
|
||||
{% else %}
|
||||
{{ permission.page }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="user">{{ permission.user|default_if_none:"-" }}</td>
|
||||
<td class="group">{{ permission.group|default_if_none:"-" }}</td>
|
||||
<td class="can_change">{{ permission.can_change|boolean_icon }}</td>
|
||||
<td class="can_add">{{ permission.can_add|boolean_icon }}</td>
|
||||
<td class="can_delete">{{ permission.can_delete|boolean_icon }}</td>
|
||||
<td class="can_publish">{{ permission.can_publish|boolean_icon }}</td>
|
||||
<td class="can_change_permissions">
|
||||
{{ permission.can_change_permissions|boolean_icon }}
|
||||
</td>
|
||||
<td class="can_move_page">{{ permission.can_move_page|boolean_icon }}</td>
|
||||
<td class="can_view">{{ permission.can_view|boolean_icon }}</td>
|
||||
<td class="grant_on">
|
||||
{% if row.is_global %}
|
||||
{% trans "All" %}
|
||||
{% else %}
|
||||
{{ permission.get_grant_on_display }}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endwith %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<p>
|
||||
{% trans "Page doesn't inherit any permissions." %}
|
||||
</p>
|
||||
{% endif %}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
{% extends "admin/change_form.html" %}
|
||||
{% load cms_admin cms_static %}
|
||||
{% block extrahead %}
|
||||
{# in case plugins require widgets, they need to have bundle here #}
|
||||
<script src="{% static_with_version "cms/js/dist/bundle.admin.base.min.js" %}" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
if (!window.jQuery) {
|
||||
window.jQuery = CMS.$;
|
||||
window.$ = window.jQuery;
|
||||
}
|
||||
</script>
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
||||
{% block submit_buttons_bottom %}
|
||||
{% submit_row_plugin %}
|
||||
{% endblock %}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{% extends "admin/cms/page/close_frame.html" %}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
{% extends "admin/delete_confirmation.html" %}
|
||||
{% load i18n admin_urls cms_tags %}
|
||||
{% block breadcrumbs %}{% endblock %}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
{% extends "admin/change_form.html" %}
|
||||
{% load i18n l10n static %}
|
||||
{% block title %}
|
||||
{% trans "Edit model" %}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<form action="." method="post" id="cmsplugin_form">
|
||||
{% csrf_token %}
|
||||
<div>
|
||||
<fieldset class="module aligned ">
|
||||
<div class="description">
|
||||
{{ message }}
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
{% load i18n admin_urls cms_tags %}
|
||||
<div class="submit-row">
|
||||
{% if show_save %}
|
||||
<input type="submit" value="{% trans 'Save' %}" class="default" name="_save" />
|
||||
{% endif %}
|
||||
{% if show_delete_link %}
|
||||
<p class="deletelink-box">
|
||||
<a href="{% cms_admin_url "cms_page_delete_plugin" original.pk %}" class="deletelink">
|
||||
{% trans "Delete" %}
|
||||
</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if show_save_as_new %}
|
||||
<input type="submit" value="{% trans 'Save as new' %}" name="_saveasnew" />
|
||||
{% endif %}
|
||||
{% if show_save_and_add_another %}
|
||||
<input type="submit" value="{% trans 'Save and add another' %}" name="_addanother" />
|
||||
{% endif %}
|
||||
{% if show_save_and_continue %}
|
||||
<input type="submit" value="{% trans 'Save and continue editing' %}" name="_continue" />
|
||||
{% endif %}
|
||||
</div>
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
{% load i18n cms_tags admin_urls %}
|
||||
<div class="submit-row"
|
||||
{% if is_popup %}style="overflow: auto;" {% endif %}
|
||||
>
|
||||
{% if show_save %}
|
||||
<input type="submit" value="{% trans 'Save' %}" class="default" name="_save" />
|
||||
{% endif %}
|
||||
<p class="deletelink-box">
|
||||
{% if show_delete_link %}
|
||||
<a href="delete/" class="deletelink">{% trans "Delete" %}</a>
|
||||
{% endif %}
|
||||
{% if show_buttons %}
|
||||
<a href="{% url opts|admin_urlname:'change' object_id %}?language={{ language }}"
|
||||
class="cms-btn-group{% if basic_info_active %}cms-btn-active{% endif %}">
|
||||
{% trans "Basic Settings" %}
|
||||
</a>
|
||||
<a href="{% url opts|admin_urlname:'advanced' object_id %}?language={{ language }}"
|
||||
class="cms-btn-group{% if advanced_settings_active %}cms-btn-active{% endif %}">
|
||||
{% trans "Advanced Settings" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</p>
|
||||
{% if show_save_as_new %}
|
||||
<input type="submit" value="{% trans 'Save as new' %}" name="_saveasnew" />
|
||||
{% endif %}
|
||||
{% if show_save_and_add_another %}
|
||||
<input type="submit" value="{% trans 'Save and add another' %}" name="_addanother" />
|
||||
{% endif %}
|
||||
{% if show_save_and_continue %}
|
||||
<input type="submit" value="{% trans 'Save and continue editing' %}" name="_continue" />
|
||||
{% endif %}
|
||||
</div>
|
||||
|
|
@ -1,154 +0,0 @@
|
|||
{% load i18n admin_urls %}
|
||||
{% spaceless %}
|
||||
<ul class="cms-pagetree-dropdown-menu-inner">
|
||||
{% block actions %}
|
||||
<li
|
||||
{% if has_copy_page_permission %}
|
||||
class="js-cms-tree-item-copy" data-id="{{ page.pk }}" data-node-id="{{ node.pk }}" data-apphook="{{ page.application_urls|default_if_none:"" }}"
|
||||
{% endif %}
|
||||
>
|
||||
<a
|
||||
{% if not has_copy_page_permission %}class="cms-pagetree-dropdown-item-disabled" {% endif %}
|
||||
href="#" title="{% filter escapejs %}{% trans "Copy" %}
|
||||
{% endfilter %}
|
||||
">
|
||||
<span class="cms-icon cms-icon-copy"></span>
|
||||
<span>
|
||||
{% filter escapejs %}{% trans "Copy" %}
|
||||
{% endfilter %}
|
||||
<span>
|
||||
</a>
|
||||
</li>
|
||||
<li
|
||||
{% if has_move_page_permission %}
|
||||
class="js-cms-tree-item-cut" data-id="{{ page.pk }}" data-node-id="{{ node.pk }}"
|
||||
{% endif %}
|
||||
>
|
||||
<a
|
||||
{% if not has_move_page_permission %}class="cms-pagetree-dropdown-item-disabled" {% endif %}
|
||||
href="#" title="{% filter escapejs %}{% trans "Cut" %}{% endfilter %}
|
||||
">
|
||||
<span class="cms-icon cms-icon-scissors"></span>
|
||||
<span>
|
||||
{% filter escapejs %}{% trans "Cut" %}{% endfilter %}
|
||||
<span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"
|
||||
data-id="{{ page.pk }}"
|
||||
data-node-id="{{ node.pk }}"
|
||||
class="{% if has_add_permission %}js-cms-tree-item-paste{% endif %} {% if not has_add_permission or not paste_enabled %} cms-pagetree-dropdown-item-disabled{% endif %}">
|
||||
<span class="cms-icon cms-icon-alias"></span>
|
||||
<span>{% filter escapejs %}{% trans "Paste" %}{% endfilter %}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
{% if has_delete_permission %}
|
||||
<a href="{% url opts|admin_urlname:'delete' page.id %}?language={{ preview_language }}"
|
||||
title="{% filter escapejs %}{% trans ">
|
||||
{% else %}
|
||||
<a href="#" class="cms-pagetree-dropdown-item-disabled">
|
||||
{% endif %}
|
||||
<span class="cms-icon cms-icon-bin"></span>
|
||||
<span>{% filter escapejs %}{% trans "Delete" %}...{% endfilter %}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% if has_change_permission and page.is_potential_home %}
|
||||
<li class="js-cms-tree-item-set-home">
|
||||
<a href="{% url opts|admin_urlname:'set_home' page.id %}"
|
||||
title="{% filter escapejs %}{% trans ">
|
||||
<span class="cms-icon cms-icon-home"></span>
|
||||
<span>{% filter escapejs %}{% trans "Set as home" %}{% endfilter %}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="js-cms-tree-item-set-home">
|
||||
<a href="#" class="cms-pagetree-dropdown-item-disabled">
|
||||
<span class="cms-icon cms-icon-home"></span>
|
||||
<span>{% filter escapejs %}{% trans "Set as home" %}{% endfilter %}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
<li>
|
||||
{% if has_change_advanced_settings_permission %}
|
||||
<a href="{% url opts|admin_urlname:'advanced' page.id %}"
|
||||
title="{% filter escapejs %}{% trans ">
|
||||
{% else %}
|
||||
<a href="#" class="cms-pagetree-dropdown-item-disabled">
|
||||
{% endif %}
|
||||
<span class="cms-icon cms-icon-cogs"></span>
|
||||
<span>{% filter escapejs %}{% trans "Advanced settings" %}{% endfilter %}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% if CMS_PERMISSION %}
|
||||
<li>
|
||||
{% if has_change_permissions_permission %}
|
||||
<a href="{% url opts|admin_urlname:'permissions' page.id %}"
|
||||
title="{% filter escapejs %}{% trans ">
|
||||
{% else %}
|
||||
<a href="#" class="cms-pagetree-dropdown-item-disabled">
|
||||
{% endif %}
|
||||
<span class="cms-icon cms-icon-lock"></span>
|
||||
<span>{% filter escapejs %}{% trans "Permissions" %}{% endfilter %}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endblock actions %}
|
||||
<li class="cms-pagetree-dropdown-separator">
|
||||
|
||||
</li>
|
||||
<li>
|
||||
{% if page.publication_date %}
|
||||
<p title="{% filter escapejs %}{% trans ">
|
||||
<strong>{% filter escapejs %}{% trans "publication date" %}{% endfilter %}:</strong>
|
||||
{{ page.publication_date|date:"Y-m-d" }}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if page.publication_end_date %}
|
||||
<p title="{% filter escapejs %}{% trans ">
|
||||
<strong>{% filter escapejs %}{% trans "publication end date" %}{% endfilter %}:</strong>
|
||||
{{ page.publication_end_date|date:"Y-m-d" }}
|
||||
</p>
|
||||
{% endif %}
|
||||
<p title="{% filter escapejs %}{% trans ">
|
||||
<strong>{% filter escapejs %}{% trans "is restricted" %}{% endfilter %}:</strong>
|
||||
{% if page_is_restricted %}
|
||||
{% filter escapejs %}{% trans "Yes" %}{% endfilter %}
|
||||
{% else %}
|
||||
{% filter escapejs %}{% trans "No" %}{% endfilter %}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% if page.changed_by %}
|
||||
<p title="{% filter escapejs %}{% trans ">
|
||||
<strong>{% filter escapejs %}{% trans "last change by" %}{% endfilter %}:</strong>
|
||||
{{ page.changed_by }}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if page.changed_date %}
|
||||
<p title="{% filter escapejs %}{% trans ">
|
||||
<strong>{% filter escapejs %}{% trans "last change on" %}{% endfilter %}:</strong>
|
||||
{{ page.changed_date|date:"Y-m-d H:i:s" }}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if page.get_template_display %}
|
||||
<p title="{% filter escapejs %}{% trans ">
|
||||
<strong>{% filter escapejs %}{% trans "template" %}{% endfilter %}:</strong>
|
||||
{{ page.get_template_display }}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if metadata %}
|
||||
<p title="{% filter escapejs %}{% trans ">
|
||||
<strong>{% filter escapejs %}{% trans "meta" %}{% endfilter %}:</strong>
|
||||
{{ metadata }}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if page.site %}
|
||||
<p title="{% filter escapejs %}{% trans ">
|
||||
<strong>{% filter escapejs %}{% trans "site" %}{% endfilter %}:</strong>
|
||||
{{ page.site }}
|
||||
</p>
|
||||
{% endif %}
|
||||
</li>
|
||||
</ul>
|
||||
{% endspaceless %}
|
||||
|
|
@ -1,182 +0,0 @@
|
|||
{% extends "admin/change_list.html" %}
|
||||
{% load i18n admin_list static admin_urls cms_admin cms_js_tags cms_static cms_tags %}
|
||||
|
||||
{# TODO might not need that #}
|
||||
{% block title %}{% trans "List of pages" %}{% endblock %}
|
||||
{% block bodyclass %}{{ block.super }} change-list cms-pagetree-wrapper{% endblock %}
|
||||
{% block coltype %}flex{% endblock %}
|
||||
{% block date_hierarchy %}{% endblock %}
|
||||
{% block pagination %}{% endblock %}
|
||||
|
||||
{% block extrahead %}
|
||||
{{ block.super }}
|
||||
{# INFO: we need to add styles here instead of "extrastyle" to avoid conflicts with adminstyle #}
|
||||
<link rel="stylesheet" href="{% static_with_version 'cms/css/cms.base.css' %}">
|
||||
<link rel="stylesheet" href="{% static_with_version 'cms/css/cms.pagetree.css' %}">
|
||||
<script src="{% static_with_version 'cms/js/dist/bundle.admin.base.min.js' %}"></script>
|
||||
<script src="{% static_with_version 'cms/js/dist/bundle.admin.pagetree.min.js' %}"></script>
|
||||
{% endblock extrahead %}
|
||||
|
||||
{% if not is_popup %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs cms-pagetree-breadcrumbs">
|
||||
<a href="{% url 'admin:index' %}">{% trans "Home" %}</a> ›
|
||||
<a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a> ›
|
||||
{{ opts.verbose_name_plural|capfirst|escape }}
|
||||
{# TODO might remove this or add reset #}
|
||||
{% if request.GET.q or request.POST.q %}
|
||||
› {% trans "Search" %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endif %}
|
||||
|
||||
{% block content_title %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% spaceless %}
|
||||
<div id="content-main">
|
||||
<div class="cms-pagetree-root module{% if tree.is_filtered %} filtered{% endif %}" id="changelist">
|
||||
<div class="cms-pagetree cms-pagetree-header">
|
||||
<div class="cms-pagetree-header-cell cms-pagetree-header-cell-fluid">
|
||||
<div class="cms-pagetree-header-row cms-pagetree-search-container">
|
||||
<div class="cms-pagetree-header-cell">
|
||||
<div class="cms-pagetree-header-title">
|
||||
<h1>
|
||||
{% trans "Page Tree" %} <span>({{ tree.site.name }})</span>
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
{% if tree.is_filtered or request.GET.q %}
|
||||
{# INFO: show reset button when filtering is active #}
|
||||
<a href="{% url opts|admin_urlname:'changelist' %}" class="cms-pagetree-header-cell cms-pagetree-header-search-reset">{% trans "Reset filter"|lower %}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="cms-pagetree-header-cell cms-pagetree-header-cell-search">
|
||||
{# INFO: visible search field with filtering #}
|
||||
<form method="get" class="cms-pagetree-header-search js-cms-pagetree-header-search">
|
||||
<label for="field-searchbar" class="cms-hidden">{% trans "Search" %}</label>
|
||||
<div class="cms-pagetree-header-filter">
|
||||
<input type="text" size="40" name="q" id="field-searchbar" value="{{ tree.query }}" placeholder="{% trans "Search" %}">
|
||||
<div class="cms-pagetree-header-filter-trigger js-cms-pagetree-header-filter-trigger">
|
||||
<a href="#"><span class="cms-icon cms-icon-arrow"></span></a>
|
||||
</div>
|
||||
<div class="cms-pagetree-header-filter-container js-cms-pagetree-header-filter-container">
|
||||
{% for field in changelist_form.visible_fields %}
|
||||
{% render_filter_field request field %}
|
||||
{% endfor %}
|
||||
<a href="#" class="cms-pagetree-header-search-close js-cms-pagetree-header-search-close">
|
||||
<span class="cms-icon cms-icon-close"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="cms-pagetree-header-search-btn">
|
||||
<span class="cms-icon cms-icon-search"></span>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cms-pagetree-header-cell cms-pagetree-header-body">
|
||||
{# INFO: hidden search field with dynamic content #}
|
||||
<div class="js-cms-pagetree-header-search-copy cms-hidden">
|
||||
<div id="toolbar">
|
||||
<form id="changelist-search" method="get">
|
||||
<div><!-- DIV needed for valid HTML -->
|
||||
<label for="searchbar"><img src="{% static "admin/img/search.svg" %}" alt="Search" /></label>
|
||||
<input type="text" size="40" name="{{ search_var }}" value="{{ tree.query }}" id="searchbar" autofocus />
|
||||
<input type="submit" value="{% trans 'Search' %}" />
|
||||
{% for pair in changelist_form.get_filter_items %}
|
||||
{% if pair.0 != search_var %}<input type="hidden" name="{{ pair.0 }}" value="{{ pair.1 }}"/>{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cms-clear-mobile"></div>
|
||||
|
||||
{# INFO: dropdown for changing sites and recover deleted pages #}
|
||||
<div class="cms-pagetree-sites-list cms-pagetree-dropdown js-cms-pagetree-dropdown">
|
||||
<a href="#" class="cms-pagetree-dropdown-trigger js-cms-pagetree-dropdown-trigger">
|
||||
<span class="cms-icon cms-icon-squares"></span>
|
||||
</a>
|
||||
<div class="cms-pagetree-dropdown-menu cms-pagetree-dropdown-menu-condensed cms-pagetree-dropdown-menu-arrow-top-right js-cms-pagetree-dropdown-menu">
|
||||
<ul class="cms-pagetree-dropdown-menu-inner">
|
||||
<li>
|
||||
<span class="label">{% trans "Sites" %}</span>
|
||||
</li>
|
||||
{% for site in tree.sites %}
|
||||
<li{% if site.pk == tree.site.pk %} class="active"{% endif %}>
|
||||
<a href="#{{ site.pk }}" class="js-cms-pagetree-site-trigger" data-id="{{ site.pk }}">{{ site.name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% if has_recover_permission %}
|
||||
<li class="cms-pagetree-dropdown-separator"> </li>
|
||||
<li>
|
||||
<a href="{% url opts|admin_urlname:'recoverlist' %}" class="recoverlink">
|
||||
{% blocktrans with opts.verbose_name_plural|escape as name %}
|
||||
Restore deleted {{ name }}
|
||||
{% endblocktrans %}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
{# INFO: hidden site form when using the dropdown site switcher #}
|
||||
<form method="post" class="js-cms-pagetree-site-form cms-hidden">
|
||||
<select name="site">
|
||||
{% for site in tree.sites %}
|
||||
<option value="{{ site.pk }}">{{ site.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{% csrf_token %}
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{# INFO: "new page" button #}
|
||||
{% if has_add_permission %}
|
||||
<a href="{% url opts|admin_urlname:'add' %}" class="cms-pagetree-header-create cms-btn cms-btn-toolbar cms-btn-action">
|
||||
{% blocktrans with opts.verbose_name|title as name %}
|
||||
New {{ name }}
|
||||
{% endblocktrans %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="changelist-form" action="" method="post" novalidate>{% csrf_token %}
|
||||
<div class="cms-pagetree cms-pagetree-section">
|
||||
<h2>{% trans "Main Navigation" %}</h2>
|
||||
<div class="cms-pagetree-section-nav">
|
||||
{% if has_add_permission %}
|
||||
<div class="cms-pagetree-dropdown js-cms-pagetree-dropdown">
|
||||
<a href="#root" data-node-id="#root" data-id="#root" class="js-cms-pagetree-dropdown-trigger js-cms-pagetree-options cms-pagetree-dropdown-trigger cms-btn cms-btn-default cms-btn-no-border cms-icon cms-icon-menu">
|
||||
<span class="sr-only">{% trans "Options" %}</span>
|
||||
</a>
|
||||
|
||||
<div class="js-cms-pagetree-dropdown-menu cms-pagetree-dropdown-menu cms-pagetree-dropdown-menu-arrow-right-top">
|
||||
<ul class="cms-pagetree-dropdown-menu-inner">
|
||||
<li>
|
||||
<a href="#" data-node-id="#root" data-id="#root" class="js-cms-tree-item-paste cms-pagetree-dropdown-item-disabled">
|
||||
<span class="cms-icon cms-icon-alias"></span>
|
||||
<span>{% trans "Paste" %}</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{# INFO: javascript is loaded from cms.pagetree.js #}
|
||||
|
||||
</form>
|
||||
|
||||
{# INFO: used when copying nodes #}
|
||||
<div class="cms-tree-dialog js-cms-tree-dialog"></div>
|
||||
</div>
|
||||
</div>
|
||||
{% endspaceless %}
|
||||
{% endblock content %}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
{% load i18n %}
|
||||
<div class="cms-dialog js-cms-dialog js-cms-dialog-{{ dialog_id }}">
|
||||
<h1>{% trans "Copy options" %}</h1>
|
||||
<p>
|
||||
{% trans "Choose copy options" %}
|
||||
</p>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
<div class="submit-row">
|
||||
<input type="submit" value="{% trans 'Save' %}" class="default submit">
|
||||
<input type="submit" value="{% trans 'Close' %}" class="cancel">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="cms-dialog-dimmer js-cms-dialog-dimmer"></div>
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{% load i18n %}
|
||||
<h3>{{ field.label }}</h3>
|
||||
<ul>
|
||||
{% for choice in choices %}
|
||||
<li
|
||||
{% if choice.selected %}class="selected" {% endif %}
|
||||
>
|
||||
<a href="{{ choice.query_string|iriencode }}">
|
||||
{{ choice.display }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
{% load i18n %}
|
||||
{% spaceless %}
|
||||
<div class="cms-pagetree cms-pagetree-section cms-pagetree-section-condensed cms-pagetree-legend">
|
||||
<span class="cms-pagetree-dropdown js-cms-pagetree-dropdown">
|
||||
<div class="js-cms-pagetree-dropdown-trigger cms-pagetree-legend-title-wrap">
|
||||
<span class="cms-icon cms-icon-info"></span>
|
||||
<span class="cms-pagetree-legend-title">{% trans "Legend" %}</span>
|
||||
</div>
|
||||
<div class="cms-pagetree-dropdown-menu cms-pagetree-dropdown-menu-condensed cms-pagetree-dropdown-menu-arrow-right-bottom js-cms-pagetree-dropdown-menu">
|
||||
<ul class="cms-pagetree-dropdown-menu-inner">
|
||||
<li>
|
||||
<span class="cms-pagetree-dropdown-item">
|
||||
<span class="cms-pagetree-node-state cms-pagetree-node-state-published"></span>
|
||||
<span>{% trans "Published" %}</span>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="cms-pagetree-dropdown-item">
|
||||
<span class="cms-pagetree-node-state cms-pagetree-node-state-dirty"></span>
|
||||
<span>{% trans "Changed" %}</span>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="cms-pagetree-dropdown-item">
|
||||
<span class="cms-pagetree-node-state cms-pagetree-node-state-unpublished"></span>
|
||||
<span>{% trans "Unpublished" %}</span>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="cms-pagetree-dropdown-item">
|
||||
<span class="cms-pagetree-node-state cms-pagetree-node-state-empty"></span>
|
||||
<span>{% trans "Empty" %}</span>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="cms-pagetree-dropdown-item">
|
||||
<span class="cms-icon cms-icon-check-square"></span>
|
||||
<span>{% trans "In menu" %}</span>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="cms-pagetree-dropdown-item">
|
||||
<span class="cms-icon cms-icon-minus-square"></span>
|
||||
<span>{% trans "Not in menu" %}</span>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="cms-pagetree-dropdown-item">
|
||||
<span class="cms-icon cms-icon-eye"></span>
|
||||
<span>{% trans "View page" %}</span>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="cms-pagetree-dropdown-item">
|
||||
<span class="cms-icon cms-icon-home"></span>
|
||||
<span>{% trans "Home" %}</span>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="cms-pagetree-dropdown-item">
|
||||
<span class="cms-icon cms-icon-sitemap"></span>
|
||||
<span>{% trans "Softroot" %}</span>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="cms-pagetree-dropdown-item">
|
||||
<span class="cms-icon cms-icon-puzzle"></span>
|
||||
<span>{% trans "Apphook" %}</span>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</span>
|
||||
</div>
|
||||
{% endspaceless %}
|
||||
|
|
@ -1,282 +0,0 @@
|
|||
{% load i18n cms_admin admin_urls %}
|
||||
|
||||
{# INFO: columns are defined in base.html options #}
|
||||
{% spaceless %}
|
||||
<li class="cms-tree-node {{ css_class }}
|
||||
{% if follow_descendants %}{% if descendants %} jstree-open{% elif node.is_branch %} jstree-closed{% endif %}{% endif %}
|
||||
{% if page.reverse_id == 'page_types' %} cms-tree-node-pagetype{% endif %}
|
||||
{% if node.depth == 0 %} cms-tree-node-top{% endif %}
|
||||
{% if filtered %} cms-tree-node-filtered{% endif %}
|
||||
{% if has_add_permission %} cms-tree-node-root-allow-children{% endif %}
|
||||
{% block extra_class %}
|
||||
{% if is_shared_page %}
|
||||
cms-tree-node-shared-true
|
||||
{% else %}
|
||||
cms-tree-node-shared-false
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
"
|
||||
{% if is_popup %}onclick="opener.dismissRelatedLookupPopup(window, {{ page.id }}); return false;"{% endif %}
|
||||
data-id="{{ page.pk }}"
|
||||
data-node-id="{{ node.pk }}"
|
||||
data-slug="{{ page.get_slug }}"
|
||||
data-is-home="{{ page.is_home|yesno:"true,false" }}"
|
||||
data-move-permission="{{ has_move_page_permission|yesno:"true,false" }}"
|
||||
data-add-permission="{{ has_add_page_permission|yesno:"true,false" }}"
|
||||
{% block extra_data %}
|
||||
{% if is_shared_page %}
|
||||
data-shared-page="-true"
|
||||
{% else %}
|
||||
data-shared-page="-false"
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
data-colview='
|
||||
<div class="cms-tree-col">
|
||||
<div class="cms-tree-item-wrapper">
|
||||
{% block row_icon %}
|
||||
{% if page.is_home %}
|
||||
<div class="cms-tree-item cms-tree-item-icons">
|
||||
<div class="cms-tree-item-inner">
|
||||
<div class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay"
|
||||
data-cms-tooltip="{% autoescape on %}{% trans 'Home' %}{% endautoescape %}">
|
||||
<span class="cms-icon cms-icon-home"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if page.soft_root %}
|
||||
<div class="cms-tree-item cms-tree-item-icons">
|
||||
<div class="cms-tree-item-inner">
|
||||
<div class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay"
|
||||
data-cms-tooltip="{% autoescape on %}{% trans 'Softroot' %}{% endautoescape %}">
|
||||
<a href="{% url opts|admin_urlname:'advanced' page.id %}">
|
||||
<span class="cms-icon cms-icon-sitemap"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if page.application_urls %}
|
||||
<div class="cms-tree-item cms-tree-item-icons">
|
||||
<div class="cms-tree-item-inner">
|
||||
<div class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay"
|
||||
data-cms-tooltip="{% autoescape on %}{% blocktrans with page.application_urls as apphook%}Application: {{ apphook }}{% endblocktrans %}{% endautoescape %}">
|
||||
<a href="{% url opts|admin_urlname:'advanced' page.id %}">
|
||||
<span class="cms-icon cms-icon-puzzle"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
'
|
||||
data-colpreview='
|
||||
<div class="cms-tree-col">
|
||||
<div class="cms-tree-item cms-tree-item-preview
|
||||
{# INFO: highlight active icon when in sidebar mode #}
|
||||
{% if page.id|slugify == request.GET.page_id|slugify %} cms-tree-preview-active{% endif %}">
|
||||
<div class="cms-tree-item-inner cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay" data-cms-tooltip="{% autoescape on %}{% trans "View on site" %}{% endautoescape %}">
|
||||
<a class="js-cms-pagetree-page-view" href="{% url opts|admin_urlname:'preview_page' page.id lang %}"{% if lang in page_languages %} target="_top"{% endif %}">
|
||||
<span class="sr-only">{% autoescape on %}{% trans "View on site" %}{% endautoescape %}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
'
|
||||
{% for lang in site_languages %}
|
||||
data-col{{ lang|lower|cut:'-' }}='
|
||||
<div class="cms-tree-col">
|
||||
<div class="cms-tree-item {% if is_shared_page or not has_publish_permission %} cms-tree-item-disabled{% endif %} cms-tree-item-lang">
|
||||
<div class="cms-tree-item-inner cms-pagetree-dropdown{% if has_publish_permission %} js-cms-pagetree-dropdown{% endif %}">
|
||||
{% if has_publish_permission %}
|
||||
<a href="{% url opts|admin_urlname:'preview_page' page.id lang %}"
|
||||
class="cms-pagetree-dropdown-trigger js-cms-pagetree-dropdown-trigger"
|
||||
{# INFO: delegate click event to parent window when in sideframe #}
|
||||
{% if lang in page_languages %} target="_top"{% endif %}>
|
||||
{# INFO: renders <span class="{cls}" title="{title}"></span> #}
|
||||
{% tree_publish_row page lang %}
|
||||
</a>
|
||||
|
||||
<div class="cms-pagetree-dropdown-menu cms-pagetree-dropdown-menu-arrow-right-top js-cms-pagetree-dropdown-menu">
|
||||
<ul class="cms-pagetree-dropdown-menu-inner">
|
||||
<li>
|
||||
<a href="{% url opts|admin_urlname:'preview_page' page.id lang %}" class="js-cms-pagetree-page-view" target="_top">
|
||||
<span class="cms-icon cms-icon-eye" title="{% autoescape on %}{% blocktrans with lang|upper as language %}Preview this page in {{ language }} {% endblocktrans %}{% endautoescape %}"></span>
|
||||
<span>{% autoescape on %}{% trans "Preview" %}{% endautoescape %}</span>
|
||||
</a>
|
||||
</li>
|
||||
{# hide if page is empty #}
|
||||
{% if lang in page_languages %}
|
||||
{% if ancestors|items_are_published:lang %}
|
||||
{% if page|is_dirty:lang or not page|is_published:lang %}
|
||||
<li>
|
||||
<a href="{% url opts|admin_urlname:'publish_page' page.id lang %}?redirect_language={{ preview_language }}{% if request.GET.page_id %}&redirect_page_id={{ request.GET.page_id }}{% endif %}" class="js-cms-tree-lang-trigger">
|
||||
<span class="cms-icon cms-icon-check-o"></span>
|
||||
<span>{% autoescape on %}{% trans "Publish" %}{% endautoescape %}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if page|is_published:lang %}
|
||||
<li>
|
||||
<a href="{% url opts|admin_urlname:'unpublish' page.id lang %}?redirect_language={{ preview_language }}{% if request.GET.page_id %}&redirect_page_id={{ request.GET.page_id }}{% endif %}" class="js-cms-tree-lang-trigger">
|
||||
<span class="cms-icon cms-icon-forbidden"></span>
|
||||
<span>{% autoescape on %}{% trans "Unpublish" %}{% endautoescape %}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<li>
|
||||
<a href="{% url opts|admin_urlname:'change' page.id %}?language={{ lang }}">
|
||||
<span class="cms-icon cms-icon-cogs"></span>
|
||||
<span>{% autoescape on %}{% trans "Configure" %}{% endautoescape %}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
{% else %}
|
||||
<span class="cms-tree-lang-container">
|
||||
{% tree_publish_row page lang %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
'
|
||||
{% endfor %}
|
||||
data-colmenu='
|
||||
<div class="cms-tree-col">
|
||||
<div class="cms-tree-item cms-tree-item-menu{% if not has_change_permission %} cms-tree-item-disabled{% endif %} js-cms-tree-item-menu">
|
||||
<div class="cms-tree-item-inner">
|
||||
{% if has_change_permission %}
|
||||
<a href="{% url opts|admin_urlname:'change_innavigation' page.id %}?language={{ preview_language }}&{{ page.id }}={{ page.in_navigation|yesno:"1,0" }}">
|
||||
{% endif %}
|
||||
{% if page.in_navigation %}
|
||||
<div class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay"
|
||||
data-cms-tooltip="{% autoescape on %}{% trans "in menu" %}{% endautoescape %}">
|
||||
<span class="cms-icon cms-icon-check-square"></span>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay"
|
||||
data-cms-tooltip="{% autoescape on %}{% trans "not in menu" %}{% endautoescape %}">
|
||||
<span class="cms-icon cms-icon-minus-square"></span>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if has_change_permission %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
'
|
||||
data-coloptions='
|
||||
<div class="cms-tree-col cms-tree-col-padding-sm">
|
||||
<div class="cms-tree-item-wrapper">
|
||||
<div class="cms-tree-item cms-tree-item-button">
|
||||
<div{% if has_change_permission and has_change_advanced_settings_permission %} class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay"
|
||||
data-cms-tooltip="{% autoescape on %}{% trans "Page settings (SHIFT click for advanced settings)" %}{% endautoescape %}"{% endif %}>
|
||||
{% if has_change_permission or has_change_advanced_settings_permission %}
|
||||
<a {% if has_change_permission %}href="{% url opts|admin_urlname:'change' page.id %}?language={{ preview_language }}" {% endif %}
|
||||
class="cms-btn cms-btn-default js-cms-tree-advanced-settings cms-icon cms-icon-pencil"
|
||||
{% if has_change_advanced_settings_permission %}
|
||||
data-url="{% url opts|admin_urlname:'advanced' page.id %}"
|
||||
{% endif %}
|
||||
>
|
||||
{% else %}
|
||||
<span class="cms-btn cms-btn-default cms-btn-disabled js-cms-tree-advanced-settings cms-icon cms-icon-pencil">
|
||||
{% endif %}
|
||||
<span class="sr-only">{% autoescape on %}{% trans "Page settings (SHIFT click for advanced settings)" %}{% endautoescape %}</span>
|
||||
{% if has_change_permission or has_change_advanced_settings_permission %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="cms-tree-item cms-tree-item-button">
|
||||
<div{% if has_add_page_permission %} class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay"
|
||||
data-cms-tooltip="{% autoescape on %}{% trans 'New sub page' %}{% endautoescape %}"{% endif %}>
|
||||
{% if has_add_page_permission %}
|
||||
<a href="{% url opts|admin_urlname:'add' %}?parent_node={{ node.pk }}"
|
||||
class="js-cms-pagetree-add-page cms-btn cms-btn-default cms-icon cms-icon-plus">
|
||||
{% else %}
|
||||
<span class="cms-btn cms-btn-default cms-btn-disabled cms-icon cms-icon-plus">
|
||||
{% endif %}
|
||||
<span class="sr-only">{% autoescape on %}{% trans 'New sub page' %}{% endautoescape %}</span>
|
||||
{% if has_add_page_permission %}
|
||||
</a>
|
||||
{% else %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="js-cms-pagetree-actions-dropdown cms-tree-item cms-tree-item-button cms-pagetree-dropdown js-cms-pagetree-dropdown" data-lazy-url="{% url opts|admin_urlname:'actions_menu' page.id %}">
|
||||
<a data-node-id="{{ node.pk }}" data-id="{{ page.pk }}" href="#" class="js-cms-pagetree-dropdown-trigger js-cms-pagetree-options cms-pagetree-dropdown-trigger cms-btn cms-btn-default cms-btn-no-border cms-icon cms-icon-menu">
|
||||
<span class="sr-only">{% autoescape on %}{% trans "Options" %}{% endautoescape %}</span>
|
||||
</a>
|
||||
|
||||
<div class="js-cms-pagetree-dropdown-menu cms-pagetree-dropdown-menu cms-pagetree-dropdown-menu-arrow-right-top">
|
||||
<div class="js-cms-pagetree-dropdown-loader cms-pagetree-dropdown-loader">
|
||||
</div>
|
||||
{# dummy structure #}
|
||||
<ul class="cms-pagetree-dropdown-menu-inner">
|
||||
<li>
|
||||
<a class="cms-pagetree-dropdown-item-disabled" href="#" title="{% autoescape on %}{% trans 'Copy' %}{% endautoescape %}">
|
||||
<span class="cms-icon cms-icon-copy"></span>
|
||||
<span>{% autoescape on %}{% trans 'Copy' %}{% endautoescape %}<span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="">
|
||||
<a href="#" class="cms-pagetree-dropdown-item-disabled" title="{% autoescape on %}{% trans 'Cut' %}{% endautoescape %}">
|
||||
<span class="cms-icon cms-icon-scissors"></span>
|
||||
<span>{% autoescape on %}{% trans 'Cut' %}{% endautoescape %}<span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" data-node-id="{{ node.pk }}" data-id="{{ page.pk }}" class="cms-pagetree-dropdown-item-disabled">
|
||||
<span class="cms-icon cms-icon-alias"></span>
|
||||
<span>{% autoescape on %}{% trans "Paste" %}{% endautoescape %}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="cms-pagetree-dropdown-item-disabled" href="#" title="{% autoescape on %}{% trans 'Delete' %}{% endautoescape %}">
|
||||
<span class="cms-icon cms-icon-bin"></span>
|
||||
<span>{% autoescape on %}{% trans 'Delete' %}...{% endautoescape %}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="cms-pagetree-dropdown-item-disabled" href="#" title="{% autoescape on %}{% trans "Advanced settings" %}{% endautoescape %}">
|
||||
<span class="cms-icon cms-icon-cogs"></span>
|
||||
<span>{% autoescape on %}{% trans "Advanced settings" %}{% endautoescape %}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% if CMS_PERMISSION %}
|
||||
<li>
|
||||
<a href="#" class="cms-pagetree-dropdown-item-disabled">
|
||||
<span class="cms-icon cms-icon-lock"></span>
|
||||
<span>{% autoescape on %}{% trans "Permissions" %}{% endautoescape %}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
'
|
||||
{% block extra_cols %}{% endblock %}
|
||||
>
|
||||
|
||||
{% language LANGUAGE_CODE %}
|
||||
{{ page.get_admin_tree_title }}
|
||||
{% endlanguage %}
|
||||
|
||||
{# INFO render children #}
|
||||
{% if descendants %}
|
||||
<ul>
|
||||
{% show_admin_menu_for_pages descendants depth=node.depth|add:1 %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endspaceless %}
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
{% extends "admin/change_form.html" %}
|
||||
{% load i18n cms_tags %}
|
||||
{% block extrahead %}
|
||||
{{ block.super }}
|
||||
<script>
|
||||
// we have to wait till the window is loaded, otherwise
|
||||
// the sideframe code will override the url, because every time
|
||||
// the iframe is loaded, it's current url is saved in the settings
|
||||
window.onload = function () {
|
||||
// we have to setTimeout here because the cms.sideframe load event
|
||||
// fires after this one :(
|
||||
setTimeout(function () {
|
||||
var CMS = window.parent.CMS;
|
||||
// we need to reload the parent window once "?reload_window" is defined and
|
||||
// set the new url for the sideframe with the correct language specification
|
||||
if (location.href.indexOf('reload_window') > -1 && CMS) {
|
||||
// save url in settings
|
||||
CMS.settings.sideframe.url = window.location.href.replace(/[?&]reload_window/, '');
|
||||
CMS.settings = CMS.API.Helpers.setSettings(CMS.settings);
|
||||
// reload everything
|
||||
CMS.API.Helpers.reloadBrowser();
|
||||
}
|
||||
}, 0);
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
||||
{% block breadcrumbs %}
|
||||
<div class="breadcrumbs">
|
||||
<a href="{% cms_admin_url 'index' %}">{% trans 'Home' %}</a>
|
||||
›
|
||||
<a href="{% cms_admin_url 'app_list' app_label=opts.app_label %}">
|
||||
{{ app_label|capfirst|escape }}
|
||||
</a>
|
||||
› {{ opts.verbose_name_plural|capfirst }}
|
||||
›
|
||||
{% if add %}
|
||||
{% trans 'Add' %} {{ opts.verbose_name }}
|
||||
{% else %}
|
||||
{{ original|truncatewords:"18" }}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block object-tools %}{% endblock %}
|
||||
{% block submit_buttons_bottom %}
|
||||
<div class="submit-row">
|
||||
<input type="submit" value="{% trans 'Save' %}" class="default" name="_save" {{ onclick_attrib }}/>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{{ content }}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{% extends template %}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
{% load cms_alias_tags %}
|
||||
{% if request and not instance.is_recursive %}
|
||||
{% render_alias_plugin instance %}
|
||||
{% endif %}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
{% load i18n cms_admin %}
|
||||
<div class="cms-clipboard" data-title="{% trans 'Clipboard' %}">
|
||||
<div class="cms-plugins"></div>
|
||||
<div class="cms-clipboard-containers cms-dragarea cms-draggables">
|
||||
{% if clipboard_plugin %}
|
||||
{% include cms_toolbar.templates.drag_item_template with clipboard="true" plugin=clipboard_plugin %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
{% if edit and placeholder %}{{ placeholder }}{% endif %}
|
||||
{{ content }}
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
{% load i18n l10n cms_tags %}
|
||||
<div class="cms-dragbar cms-dragbar-{{ placeholder.pk|unlocalize }}">
|
||||
<div class="cms-submenu-btn cms-submenu-add cms-btn">
|
||||
<span class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay"
|
||||
data-cms-tooltip="{% trans "></span>
|
||||
</div>
|
||||
<div class="cms-submenu-settings cms-submenu-btn cms-btn"></div>
|
||||
<div class="cms-submenu-dropdown cms-submenu-dropdown-settings" data-touch-action="pan-y">
|
||||
<div class="cms-dropdown-inner">
|
||||
<div class="cms-submenu-item">
|
||||
<a data-cms-icon="copy" data-rel="copy" href="#">
|
||||
{% trans "Copy all" %}
|
||||
</a>
|
||||
</div>
|
||||
{% for language in placeholder.get_filled_languages %}
|
||||
{% if language.code != LANGUAGE_CODE %}
|
||||
<div class="cms-submenu-item">
|
||||
<a data-cms-icon="copy" data-rel="copy-lang" data-language="{{ language.code }}" href="#">
|
||||
{% trans "Copy from" %} {% trans language.name %}
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<div class="cms-submenu-item">
|
||||
<a data-cms-icon="paste" data-rel="paste" href="#">
|
||||
{% trans "Paste" %}
|
||||
</a>
|
||||
</div>
|
||||
<div class="cms-submenu-item">
|
||||
<a data-cms-icon="bin"
|
||||
data-rel="modal"
|
||||
href="{{ placeholder.get_clear_url }}?language={{ LANGUAGE_CODE }}"
|
||||
data-name="{{ placeholder.get_label }}">
|
||||
{% trans "Empty all" %}
|
||||
</a>
|
||||
</div>
|
||||
{% render_extra_menu_items placeholder %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="cms-plugin-picker" data-touch-action="pan-y">
|
||||
<div class="cms-quicksearch">
|
||||
<label>
|
||||
<input type="text" placeholder="{% trans 'Filter plugins...' %}" />
|
||||
</label>
|
||||
</div>
|
||||
{# plugin child classes here #}
|
||||
</div>
|
||||
<div class="cms-dragbar-title" title="{{ placeholder.get_label }}">
|
||||
{{ placeholder.get_label }}
|
||||
{% if placeholder.is_static %}
|
||||
<span class="cms-hover-tooltip cms-hover-tooltip-right"
|
||||
tabindex="-1"
|
||||
data-cms-tooltip="{% trans 'This is a static placeholder' %}">
|
||||
<span class="cms-icon cms-icon-pin cms-dragarea-static-icon"></span>
|
||||
</span>
|
||||
{% endif %}
|
||||
<span class="cms-dragbar-toggler">
|
||||
<a href="#" class="cms-dragbar-expand-all" tabindex="-1">
|
||||
{% trans "Expand all" %}
|
||||
</a>
|
||||
<a href="#" class="cms-dragbar-collapse-all" tabindex="-1">
|
||||
{% trans "Collapse all" %}
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
{% load i18n l10n cms_tags %}
|
||||
{% with allow_children=plugin.get_plugin_class.allow_children disable_child_plugins=plugin.get_plugin_class.disable_child_plugins %}
|
||||
<div class="cms-draggable cms-draggable-{{ plugin.pk|unlocalize }} {% if not allow_children %}cms-draggable-disabled{% endif %} {% if clipboard %}cms-draggable-from-clipboard{% endif %}">
|
||||
<div class="cms-dragitem cms-dragitem-handler {% if plugin.child_plugin_instances %}cms-dragitem-collapsable{% endif %}">
|
||||
{% if not disabled_child %}
|
||||
<div class="cms-submenu-btn cms-submenu-edit cms-btn" data-rel="edit">
|
||||
<span class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay"
|
||||
data-cms-tooltip="{% trans "></span>
|
||||
</div>
|
||||
<div class="cms-submenu-btn cms-submenu-add cms-btn {% if not allow_children %}cms-btn-disabled{% endif %}">
|
||||
{% if not allow_children %}
|
||||
<span class="cms-hover-tooltip" data-cms-tooltip="{% trans "></span>
|
||||
{% else %}
|
||||
<span class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay"
|
||||
data-cms-tooltip="{% trans "></span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="cms-submenu cms-submenu-settings cms-submenu-btn cms-btn"></div>
|
||||
{% else %}
|
||||
<div class="cms-hover-tooltip cms-hover-tooltip-left cms-plugin-disabled"
|
||||
tabindex="-1"
|
||||
data-cms-tooltip="{% trans ">
|
||||
<span class="cms-icon cms-icon-lock"></span>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="cms-submenu-dropdown cms-submenu-dropdown-settings">
|
||||
<div class="cms-dropdown-inner">
|
||||
<div class="cms-submenu-item">
|
||||
<a data-cms-icon="scissors" data-rel="cut" href="#">
|
||||
{% trans "Cut" %}
|
||||
</a>
|
||||
</div>
|
||||
<div class="cms-submenu-item">
|
||||
<a data-cms-icon="copy" data-rel="copy" href="#">
|
||||
{% trans "Copy" %}
|
||||
</a>
|
||||
</div>
|
||||
<div class="cms-submenu-item">
|
||||
<a data-cms-icon="paste" data-rel="paste" href="#">
|
||||
{% trans "Paste" %}
|
||||
</a>
|
||||
<span class="cms-submenu-item-paste-tooltip cms-submenu-item-paste-tooltip-empty cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay"
|
||||
data-cms-tooltip="{% trans "></span>
|
||||
<span class="cms-submenu-item-paste-tooltip cms-submenu-item-paste-tooltip-restricted cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay"
|
||||
data-cms-tooltip="{% trans "></span>
|
||||
<span class="cms-submenu-item-paste-tooltip cms-submenu-item-paste-tooltip-disabled cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay"
|
||||
data-cms-tooltip="{% trans "></span>
|
||||
</div>
|
||||
<div class="cms-submenu-item">
|
||||
<a data-cms-icon="bin" data-rel="delete" href="#">
|
||||
{% trans "Delete" %}
|
||||
</a>
|
||||
</div>
|
||||
{% render_extra_menu_items plugin %}
|
||||
</div>
|
||||
</div>
|
||||
{% if not clipboard %}
|
||||
<div class="cms-plugin-picker" data-touch-action="pan-y">
|
||||
<div class="cms-quicksearch">
|
||||
<label>
|
||||
<input type="text" placeholder="{% trans 'Filter plugins...' %}" />
|
||||
</label>
|
||||
</div>
|
||||
{# plugin child classes here #}
|
||||
</div>
|
||||
{% endif %}
|
||||
<span class="cms-dragitem-text" title="{{ plugin.plugin_type }} ID: {{ plugin.pk }}">
|
||||
<strong>{{ plugin.get_plugin_name }}</strong>
|
||||
{{ plugin.get_short_description }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="cms-collapsable-container cms-hidden {% if allow_children %}cms-draggables{% endif %}">
|
||||
{% if plugin.child_plugin_instances %}
|
||||
{% for child in plugin.child_plugin_instances %}
|
||||
{% include cms_toolbar.templates.drag_item_template with plugin=child disabled_child=disable_child_plugins %}{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endwith %}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
{% load i18n %}
|
||||
<div class="cms-submenu-item cms-submenu-item-highlight">
|
||||
<a href="#" data-rel="highlight" data-cms-icon="highlight">
|
||||
{{ plugin }}{% trans "Highlight" %}
|
||||
</a>
|
||||
</div>
|
||||
{% for item in items %}
|
||||
<div class="cms-submenu-item">
|
||||
<a href="{{ item.url }}" data-rel="{{ item.action }}"
|
||||
{% if item.data %}data-post="{{ item.data }}" {% endif %}
|
||||
{% if question %}data-text="{{ question }}" {% endif %}
|
||||
data-on-success="REFRESH_PAGE"
|
||||
{% for key, attr in item.attributes.items %}
|
||||
data-{{ key }}="{{ attr }}"
|
||||
{% endfor %}
|
||||
>
|
||||
{{ item.name }}
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue