mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2025-09-20 19:02:37 +03:00
Merge branch 'cookiecutter-master'
This commit is contained in:
commit
6b6c7a8268
10
.github/contributors.json
vendored
10
.github/contributors.json
vendored
|
@ -1638,5 +1638,15 @@
|
||||||
"name": "Marlon Castillo",
|
"name": "Marlon Castillo",
|
||||||
"github_login": "mcastle",
|
"github_login": "mcastle",
|
||||||
"twitter_username": ""
|
"twitter_username": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Alex Kanavos",
|
||||||
|
"github_login": "alexkanavos",
|
||||||
|
"twitter_username": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "LJFP",
|
||||||
|
"github_login": "ljfp",
|
||||||
|
"twitter_username": ""
|
||||||
}
|
}
|
||||||
]
|
]
|
30
.github/workflows/ci.yml
vendored
30
.github/workflows/ci.yml
vendored
|
@ -23,14 +23,14 @@ jobs:
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-python@v5
|
- name: Install uv
|
||||||
|
uses: astral-sh/setup-uv@v3
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
enable-cache: "true"
|
||||||
cache: pip
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pip install -r requirements.txt
|
run: uv sync
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: pytest -n auto tests
|
run: uv run pytest -n auto tests
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
strategy:
|
strategy:
|
||||||
|
@ -54,12 +54,12 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-python@v5
|
- name: Install uv
|
||||||
|
uses: astral-sh/setup-uv@v3
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
enable-cache: "true"
|
||||||
cache: pip
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pip install -r requirements.txt
|
run: uv sync
|
||||||
- name: Docker ${{ matrix.script.name }}
|
- name: Docker ${{ matrix.script.name }}
|
||||||
run: sh tests/test_docker.sh ${{ matrix.script.args }}
|
run: sh tests/test_docker.sh ${{ matrix.script.args }}
|
||||||
|
|
||||||
|
@ -98,16 +98,12 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-python@v5
|
- name: Install uv
|
||||||
|
uses: astral-sh/setup-uv@v3
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
enable-cache: "true"
|
||||||
cache: pip
|
|
||||||
cache-dependency-path: |
|
|
||||||
requirements.txt
|
|
||||||
{{cookiecutter.project_slug}}/requirements/base.txt
|
|
||||||
{{cookiecutter.project_slug}}/requirements/local.txt
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pip install -r requirements.txt
|
run: uv sync
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: "22"
|
node-version: "22"
|
||||||
|
|
34
.github/workflows/dependabot-uv-lock.yml
vendored
Normal file
34
.github/workflows/dependabot-uv-lock.yml
vendored
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
name: uv
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- "pyproject.toml"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lock:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
GH_PAT: ${{ secrets.GH_PAT }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout with token
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
if: ${{ env.GH_PAT != '' }}
|
||||||
|
with:
|
||||||
|
token: ${{ env.GH_PAT }}
|
||||||
|
|
||||||
|
- name: Checkout without token
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
if: ${{ env.GH_PAT == '' }}
|
||||||
|
|
||||||
|
- uses: astral-sh/setup-uv@v3
|
||||||
|
with:
|
||||||
|
enable-cache: true
|
||||||
|
- run: uv lock
|
||||||
|
- uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
|
with:
|
||||||
|
commit_message: Regenerate uv.lock
|
11
.github/workflows/django-issue-checker.yml
vendored
11
.github/workflows/django-issue-checker.yml
vendored
|
@ -17,14 +17,11 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-python@v5
|
- name: Install uv
|
||||||
|
uses: astral-sh/setup-uv@v3
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
enable-cache: "true"
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
pip install -r requirements.txt
|
|
||||||
- name: Create Django Major Issue
|
- name: Create Django Major Issue
|
||||||
run: python scripts/create_django_issue.py
|
run: uv run --frozen scripts/create_django_issue.py
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
13
.github/workflows/update-changelog.yml
vendored
13
.github/workflows/update-changelog.yml
vendored
|
@ -15,20 +15,15 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install uv
|
||||||
- name: Set up Python
|
uses: astral-sh/setup-uv@v3
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
enable-cache: "true"
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
pip install -r requirements.txt
|
|
||||||
- name: Set git details
|
- name: Set git details
|
||||||
run: |
|
run: |
|
||||||
git config --global user.name "github-actions"
|
git config --global user.name "github-actions"
|
||||||
git config --global user.email "action@github.com"
|
git config --global user.email "action@github.com"
|
||||||
- name: Update list
|
- name: Update list
|
||||||
run: python scripts/update_changelog.py
|
run: uv run --frozen scripts/update_changelog.py
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
13
.github/workflows/update-contributors.yml
vendored
13
.github/workflows/update-contributors.yml
vendored
|
@ -18,17 +18,12 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install uv
|
||||||
- name: Set up Python
|
uses: astral-sh/setup-uv@v3
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
enable-cache: "true"
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
pip install -r requirements.txt
|
|
||||||
- name: Update list
|
- name: Update list
|
||||||
run: python scripts/update_contributors.py
|
run: uv run --frozen scripts/update_contributors.py
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
exclude: "{{cookiecutter.project_slug}}|.github/contributors.json|CHANGELOG.md|CONTRIBUTORS.md"
|
exclude: "{{cookiecutter.project_slug}}|.github/contributors.json|CHANGELOG.md|CONTRIBUTORS.md"
|
||||||
default_stages: [commit]
|
default_stages: [pre-commit]
|
||||||
|
|
||||||
default_language_version:
|
default_language_version:
|
||||||
python: python3.12
|
python: python3.12
|
||||||
|
|
||||||
repos:
|
repos:
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v4.6.0
|
rev: v5.0.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
|
@ -33,7 +33,7 @@ repos:
|
||||||
exclude: hooks/
|
exclude: hooks/
|
||||||
|
|
||||||
- repo: https://github.com/psf/black
|
- repo: https://github.com/psf/black
|
||||||
rev: 24.8.0
|
rev: 24.10.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: black
|
- id: black
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ repos:
|
||||||
- id: flake8
|
- id: flake8
|
||||||
|
|
||||||
- repo: https://github.com/tox-dev/pyproject-fmt
|
- repo: https://github.com/tox-dev/pyproject-fmt
|
||||||
rev: "2.2.3"
|
rev: "2.2.4"
|
||||||
hooks:
|
hooks:
|
||||||
- id: pyproject-fmt
|
- id: pyproject-fmt
|
||||||
|
|
||||||
|
|
|
@ -9,12 +9,13 @@ build:
|
||||||
os: ubuntu-22.04
|
os: ubuntu-22.04
|
||||||
tools:
|
tools:
|
||||||
python: "3.12"
|
python: "3.12"
|
||||||
|
commands:
|
||||||
|
- asdf plugin add uv
|
||||||
|
- asdf install uv latest
|
||||||
|
- asdf global uv latest
|
||||||
|
- uv sync --extra docs --no-dev --frozen
|
||||||
|
- uv run -m sphinx -T -b html -d docs/_build/doctrees -D language=en docs $READTHEDOCS_OUTPUT/html
|
||||||
|
|
||||||
# Build documentation in the docs/ directory with Sphinx
|
# Build documentation in the docs/ directory with Sphinx
|
||||||
sphinx:
|
sphinx:
|
||||||
configuration: docs/conf.py
|
configuration: docs/conf.py
|
||||||
|
|
||||||
# Declare the Python requirements required to build your docs
|
|
||||||
python:
|
|
||||||
install:
|
|
||||||
- requirements: docs/requirements.txt
|
|
||||||
|
|
185
CHANGELOG.md
185
CHANGELOG.md
|
@ -3,6 +3,191 @@ All enhancements and patches to Cookiecutter Django will be documented in this f
|
||||||
|
|
||||||
<!-- GENERATOR_PLACEHOLDER -->
|
<!-- GENERATOR_PLACEHOLDER -->
|
||||||
|
|
||||||
|
## 2024.10.09
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update coverage to 7.6.2 ([#5448](https://github.com/cookiecutter/cookiecutter-django/pull/5448))
|
||||||
|
|
||||||
|
## 2024.10.08
|
||||||
|
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- [pre-commit.ci] pre-commit autoupdate ([#5441](https://github.com/cookiecutter/cookiecutter-django/pull/5441))
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update pre-commit to 4.0.1 ([#5445](https://github.com/cookiecutter/cookiecutter-django/pull/5445))
|
||||||
|
|
||||||
|
- Bump amazon/aws-cli from 2.18.0 to 2.18.1 in /{{cookiecutter.project_slug}}/compose/production/aws ([#5443](https://github.com/cookiecutter/cookiecutter-django/pull/5443))
|
||||||
|
|
||||||
|
- Auto-update pre-commit hooks ([#5442](https://github.com/cookiecutter/cookiecutter-django/pull/5442))
|
||||||
|
|
||||||
|
## 2024.10.07
|
||||||
|
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- Docs: fix Mailgun include in troubleshooting sections ([#5439](https://github.com/cookiecutter/cookiecutter-django/pull/5439))
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update sphinx to 8.0.2 ([#5263](https://github.com/cookiecutter/cookiecutter-django/pull/5263))
|
||||||
|
|
||||||
|
- Update pre-commit to 4.0.0 ([#5432](https://github.com/cookiecutter/cookiecutter-django/pull/5432))
|
||||||
|
|
||||||
|
- Auto-update pre-commit hooks ([#5433](https://github.com/cookiecutter/cookiecutter-django/pull/5433))
|
||||||
|
|
||||||
|
- Update sphinx-rtd-theme to 3.0.0 ([#5437](https://github.com/cookiecutter/cookiecutter-django/pull/5437))
|
||||||
|
|
||||||
|
- Bump amazon/aws-cli from 2.17.0 to 2.18.0 in /{{cookiecutter.project_slug}}/compose/production/aws ([#5436](https://github.com/cookiecutter/cookiecutter-django/pull/5436))
|
||||||
|
|
||||||
|
## 2024.10.05
|
||||||
|
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Replace pip with uv for the project files ([#5356](https://github.com/cookiecutter/cookiecutter-django/pull/5356))
|
||||||
|
|
||||||
|
- Use wait-for-it in favor of the custom python script when waiting for postgres ([#5327](https://github.com/cookiecutter/cookiecutter-django/pull/5327))
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- Spit docs into sections ([#5426](https://github.com/cookiecutter/cookiecutter-django/pull/5426))
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update crispy-bootstrap5 to 2024.10 ([#5430](https://github.com/cookiecutter/cookiecutter-django/pull/5430))
|
||||||
|
|
||||||
|
## 2024.10.04
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update ruff to 0.6.9 ([#5428](https://github.com/cookiecutter/cookiecutter-django/pull/5428))
|
||||||
|
|
||||||
|
- Update redis to 5.1.1 ([#5427](https://github.com/cookiecutter/cookiecutter-django/pull/5427))
|
||||||
|
|
||||||
|
## 2024.10.03
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update sphinx-autobuild to 2024.10.3 ([#5420](https://github.com/cookiecutter/cookiecutter-django/pull/5420))
|
||||||
|
|
||||||
|
- Bump traefik from 3.1.4 to 3.1.5 ([#5423](https://github.com/cookiecutter/cookiecutter-django/pull/5423))
|
||||||
|
|
||||||
|
## 2024.10.02
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Bump python from 3.12.6 to 3.12.7 in docs Docker image ([#5416](https://github.com/cookiecutter/cookiecutter-django/pull/5416))
|
||||||
|
|
||||||
|
- Bump python from 3.12.6 to 3.12.7 in local Docker image ([#5415](https://github.com/cookiecutter/cookiecutter-django/pull/5415))
|
||||||
|
|
||||||
|
- Bump python from 3.12.6 to 3.12.7 production Docker ([#5414](https://github.com/cookiecutter/cookiecutter-django/pull/5414))
|
||||||
|
|
||||||
|
## 2024.10.01
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update sentry-sdk to 2.15.0 ([#5413](https://github.com/cookiecutter/cookiecutter-django/pull/5413))
|
||||||
|
|
||||||
|
## 2024.09.29
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update psycopg to 3.2.3 ([#5411](https://github.com/cookiecutter/cookiecutter-django/pull/5411))
|
||||||
|
|
||||||
|
## 2024.09.28
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update uvicorn to 0.31.0 ([#5408](https://github.com/cookiecutter/cookiecutter-django/pull/5408))
|
||||||
|
|
||||||
|
## 2024.09.27
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update redis to 5.1.0 ([#5406](https://github.com/cookiecutter/cookiecutter-django/pull/5406))
|
||||||
|
|
||||||
|
- Update django-allauth to 65.0.2 ([#5405](https://github.com/cookiecutter/cookiecutter-django/pull/5405))
|
||||||
|
|
||||||
|
## 2024.09.26
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update ruff to 0.6.8 ([#5402](https://github.com/cookiecutter/cookiecutter-django/pull/5402))
|
||||||
|
|
||||||
|
## 2024.09.24
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update django-stubs to 5.1.0 ([#5400](https://github.com/cookiecutter/cookiecutter-django/pull/5400))
|
||||||
|
|
||||||
|
## 2024.09.23
|
||||||
|
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Fix Makefile and make.bat files used for automatic generation of documentation. ([#5347](https://github.com/cookiecutter/cookiecutter-django/pull/5347))
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update django-allauth to 65.0.1 ([#5399](https://github.com/cookiecutter/cookiecutter-django/pull/5399))
|
||||||
|
|
||||||
|
- Auto-update pre-commit hooks ([#5392](https://github.com/cookiecutter/cookiecutter-django/pull/5392))
|
||||||
|
|
||||||
|
- Update django-allauth to 65.0.0 ([#5393](https://github.com/cookiecutter/cookiecutter-django/pull/5393))
|
||||||
|
|
||||||
|
- Update ruff to 0.6.7 ([#5394](https://github.com/cookiecutter/cookiecutter-django/pull/5394))
|
||||||
|
|
||||||
|
## 2024.09.21
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Auto-update pre-commit hooks ([#5391](https://github.com/cookiecutter/cookiecutter-django/pull/5391))
|
||||||
|
|
||||||
|
## 2024.09.20
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update sphinx-autobuild to 2024.9.19 ([#5386](https://github.com/cookiecutter/cookiecutter-django/pull/5386))
|
||||||
|
|
||||||
|
- Bump traefik from 3.1.3 to 3.1.4 in /{{cookiecutter.project_slug}}/compose/production/traefik ([#5389](https://github.com/cookiecutter/cookiecutter-django/pull/5389))
|
||||||
|
|
||||||
|
- Update ruff to 0.6.6 ([#5388](https://github.com/cookiecutter/cookiecutter-django/pull/5388))
|
||||||
|
|
||||||
|
- Update tox to 4.20.0 ([#5387](https://github.com/cookiecutter/cookiecutter-django/pull/5387))
|
||||||
|
|
||||||
|
## 2024.09.17
|
||||||
|
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Set allauth email subject prefix ([#5278](https://github.com/cookiecutter/cookiecutter-django/pull/5278))
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- Update postgres plan in Heroku deployment docs ([#5383](https://github.com/cookiecutter/cookiecutter-django/pull/5383))
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update sphinx-autobuild to 2024.9.17 ([#5382](https://github.com/cookiecutter/cookiecutter-django/pull/5382))
|
||||||
|
|
||||||
|
- Bump traefik from 3.1.2 to 3.1.3 ([#5380](https://github.com/cookiecutter/cookiecutter-django/pull/5380))
|
||||||
|
|
||||||
## 2024.09.16
|
## 2024.09.16
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -24,33 +24,20 @@ We'll also run the tests on GitHub actions when you send your pull request, but
|
||||||
|
|
||||||
### Installation
|
### Installation
|
||||||
|
|
||||||
First, make sure that your version of Python is 3.12:
|
We use uv to manage our environment and manage our Python installation. You can install it following the instructions at https://docs.astral.sh/uv/getting-started/installation/
|
||||||
|
|
||||||
```bash
|
|
||||||
$ python --version
|
|
||||||
Python 3.12.2
|
|
||||||
```
|
|
||||||
|
|
||||||
Any version that starts with 3.12 will do. If you need to install it, you can get it from [python.org](https://www.python.org/downloads/).
|
|
||||||
|
|
||||||
Then install `tox`, if not already installed:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ python -m pip install tox
|
|
||||||
```
|
|
||||||
|
|
||||||
### Run the template's test suite
|
### Run the template's test suite
|
||||||
|
|
||||||
To run the tests of the template using the current Python version:
|
To run the tests of the template using the current Python version:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ tox -e py
|
$ uv run tox run -e py
|
||||||
```
|
```
|
||||||
|
|
||||||
This uses `pytest `under the hood, and you can pass options to it after a `--`. So to run a particular test:
|
This uses `pytest `under the hood, and you can pass options to it after a `--`. So to run a particular test:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ tox -e py -- -k test_default_configuration
|
$ uv run tox run -e py -- -k test_default_configuration
|
||||||
```
|
```
|
||||||
|
|
||||||
For further information, please consult the [pytest usage docs](https://pytest.org/en/latest/how-to/usage.html#specifying-which-tests-to-run).
|
For further information, please consult the [pytest usage docs](https://pytest.org/en/latest/how-to/usage.html#specifying-which-tests-to-run).
|
||||||
|
|
|
@ -208,6 +208,13 @@ Listed in alphabetical order.
|
||||||
</td>
|
</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Alex Kanavos</td>
|
||||||
|
<td>
|
||||||
|
<a href="https://github.com/alexkanavos">alexkanavos</a>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Alex Tsai</td>
|
<td>Alex Tsai</td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -1412,6 +1419,13 @@ Listed in alphabetical order.
|
||||||
</td>
|
</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>LJFP</td>
|
||||||
|
<td>
|
||||||
|
<a href="https://github.com/ljfp">ljfp</a>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Luis Nell</td>
|
<td>Luis Nell</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
|
@ -257,7 +257,7 @@ Here is a link to an article on `how to add HTTPS using Nginx`_ to your local do
|
||||||
Webpack
|
Webpack
|
||||||
~~~~~~~
|
~~~~~~~
|
||||||
|
|
||||||
If you are using Webpack, first install ``mkcert``_. It is a simple by design tool that hides all the arcane knowledge required to generate valid TLS certificates. It works for any hostname or IP, including localhost. It supports macOS, Linux, and Windows, and Firefox, Chrome and Java. It even works on mobile devices with a couple manual steps. See https://blog.filippo.io/mkcert-valid-https-certificates-for-localhost/
|
If you are using Webpack, first install `mkcert`_. It is a simple by design tool that hides all the arcane knowledge required to generate valid TLS certificates. It works for any hostname or IP, including localhost. It supports macOS, Linux, and Windows, and Firefox, Chrome and Java. It even works on mobile devices with a couple manual steps. See https://blog.filippo.io/mkcert-valid-https-certificates-for-localhost/
|
||||||
|
|
||||||
.. _`mkcert`: https://github.com/FiloSottile/mkcert/blob/master/README.md#supported-root-stores
|
.. _`mkcert`: https://github.com/FiloSottile/mkcert/blob/master/README.md#supported-root-stores
|
||||||
|
|
||||||
|
@ -267,36 +267,36 @@ Assuming that you registered your local hostname as ``my-dev-env.local``, the ce
|
||||||
|
|
||||||
1. Add the ``nginx-proxy`` service to the ``docker-compose.local.yml``. ::
|
1. Add the ``nginx-proxy`` service to the ``docker-compose.local.yml``. ::
|
||||||
|
|
||||||
nginx-proxy:
|
nginx-proxy:
|
||||||
image: jwilder/nginx-proxy:alpine
|
image: jwilder/nginx-proxy:alpine
|
||||||
container_name: nginx-proxy
|
container_name: nginx-proxy
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
- "443:443"
|
- "443:443"
|
||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/tmp/docker.sock:ro
|
- /var/run/docker.sock:/tmp/docker.sock:ro
|
||||||
- ./certs:/etc/nginx/certs
|
- ./certs:/etc/nginx/certs
|
||||||
restart: always
|
restart: always
|
||||||
depends_on:
|
depends_on:
|
||||||
- node
|
- node
|
||||||
environment:
|
environment:
|
||||||
- VIRTUAL_HOST=my-dev-env.local
|
- VIRTUAL_HOST=my-dev-env.local
|
||||||
- VIRTUAL_PORT=3000
|
- VIRTUAL_PORT=3000
|
||||||
|
|
||||||
2. Add the local secure domain to the ``config/settings/local.py``. You should allow the new hostname ::
|
2. Add the local secure domain to the ``config/settings/local.py``. You should allow the new hostname ::
|
||||||
|
|
||||||
ALLOWED_HOSTS = ["localhost", "0.0.0.0", "127.0.0.1", "my-dev-env.local"]
|
ALLOWED_HOSTS = ["localhost", "0.0.0.0", "127.0.0.1", "my-dev-env.local"]
|
||||||
|
|
||||||
3. Add the following configuration to the ``devServer`` section of ``webpack/dev.config.js`` ::
|
3. Add the following configuration to the ``devServer`` section of ``webpack/dev.config.js`` ::
|
||||||
|
|
||||||
client: {
|
client: {
|
||||||
webSocketURL: 'auto://0.0.0.0:0/ws', // note the `:0` after `0.0.0.0`
|
webSocketURL: 'auto://0.0.0.0:0/ws', // note the `:0` after `0.0.0.0`
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
Rebuild your ``docker`` application. ::
|
Rebuild your ``docker`` application. ::
|
||||||
|
|
||||||
$ docker compose -f docker-compose.local.yml up -d --build
|
$ docker compose -f docker-compose.local.yml up -d --build
|
||||||
|
|
||||||
Go to your browser and type in your URL bar ``https://my-dev-env.local``.
|
Go to your browser and type in your URL bar ``https://my-dev-env.local``.
|
||||||
|
|
|
@ -24,8 +24,7 @@ First things first.
|
||||||
|
|
||||||
$ source <virtual env path>/bin/activate
|
$ source <virtual env path>/bin/activate
|
||||||
|
|
||||||
#.
|
#. .. include:: generate-project-block.rst
|
||||||
.. include:: generate-project-block.rst
|
|
||||||
|
|
||||||
#. Install development requirements: ::
|
#. Install development requirements: ::
|
||||||
|
|
||||||
|
@ -219,7 +218,7 @@ The project comes with a simple task for manual testing purposes, inside `<proje
|
||||||
|
|
||||||
You can also use Django admin to queue up tasks, thanks to the `django-celerybeat`_ package.
|
You can also use Django admin to queue up tasks, thanks to the `django-celerybeat`_ package.
|
||||||
|
|
||||||
.. _Getting started with Redis guide: https://redis.io/docs/getting-started/
|
.. _Getting started with Redis: https://redis.io/docs/getting-started/
|
||||||
.. _Celery Workers Guide: https://docs.celeryq.dev/en/stable/userguide/workers.html
|
.. _Celery Workers Guide: https://docs.celeryq.dev/en/stable/userguide/workers.html
|
||||||
.. _django-celerybeat: https://django-celery-beat.readthedocs.io/en/latest/
|
.. _django-celerybeat: https://django-celery-beat.readthedocs.io/en/latest/
|
||||||
|
|
|
@ -12,7 +12,8 @@ Run these commands to deploy the project to Heroku:
|
||||||
|
|
||||||
heroku create --buildpack heroku/python
|
heroku create --buildpack heroku/python
|
||||||
|
|
||||||
heroku addons:create heroku-postgresql:mini
|
# Note: this is not a free plan
|
||||||
|
heroku addons:create heroku-postgresql:essential-0
|
||||||
# On Windows use double quotes for the time zone, e.g.
|
# On Windows use double quotes for the time zone, e.g.
|
||||||
# heroku pg:backups schedule --at "02:00 America/Los_Angeles" DATABASE_URL
|
# heroku pg:backups schedule --at "02:00 America/Los_Angeles" DATABASE_URL
|
||||||
heroku pg:backups schedule --at '02:00 America/Los_Angeles' DATABASE_URL
|
heroku pg:backups schedule --at '02:00 America/Los_Angeles' DATABASE_URL
|
||||||
|
@ -64,7 +65,7 @@ The script above assumes that you've chose Mailgun as email service. If you want
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
.. include:: mailgun.rst
|
.. include:: ../includes/mailgun.rst
|
||||||
|
|
||||||
Heroku & Docker
|
Heroku & Docker
|
||||||
+++++++++++++++
|
+++++++++++++++
|
|
@ -55,7 +55,7 @@ You will probably also need to setup the Mail backend, for example by adding a `
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
.. include:: mailgun.rst
|
.. include:: ../includes/mailgun.rst
|
||||||
|
|
||||||
|
|
||||||
Optional: Use AWS IAM Role for EC2 instance
|
Optional: Use AWS IAM Role for EC2 instance
|
|
@ -8,7 +8,7 @@ Server Error on sign-up/log-in
|
||||||
|
|
||||||
Make sure you have configured the mail backend (e.g. Mailgun) by adding the API key and sender domain
|
Make sure you have configured the mail backend (e.g. Mailgun) by adding the API key and sender domain
|
||||||
|
|
||||||
.. include:: mailgun.rst
|
.. include:: ../includes/mailgun.rst
|
||||||
|
|
||||||
.. _docker-postgres-auth-failed:
|
.. _docker-postgres-auth-failed:
|
||||||
|
|
3
docs/6-about/contributing.md
Normal file
3
docs/6-about/contributing.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
```{include} ../../CONTRIBUTING.md
|
||||||
|
|
||||||
|
```
|
142
docs/Makefile
142
docs/Makefile
|
@ -4,150 +4,30 @@
|
||||||
# You can set these variables from the command line.
|
# You can set these variables from the command line.
|
||||||
SPHINXOPTS =
|
SPHINXOPTS =
|
||||||
SPHINXBUILD = sphinx-build
|
SPHINXBUILD = sphinx-build
|
||||||
PAPER =
|
SOURCEDIR = .
|
||||||
BUILDDIR = _build
|
BUILDDIR = _build
|
||||||
|
|
||||||
# Internal variables.
|
.PHONY: help clean html livehtml linkcheck
|
||||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
|
||||||
PAPEROPT_letter = -D latex_paper_size=letter
|
|
||||||
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
|
||||||
# the i18n builder cannot share the environment and doctrees with the others
|
|
||||||
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
|
||||||
|
|
||||||
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
|
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo "Please use \`make <target>' where <target> is one of"
|
@echo "Please use \`make <target>' where <target> is one of"
|
||||||
@echo " html to make standalone HTML files"
|
@awk '/^#/{c=substr($$0,3);next}c&&/^[[:alpha:]][[:alnum:]_-]+:/{print substr($$1,1,index($$1,":")),c}1{c=0}' $(MAKEFILE_LIST) | column -s: -t
|
||||||
@echo " dirhtml to make HTML files named index.html in directories"
|
|
||||||
@echo " singlehtml to make a single large HTML file"
|
|
||||||
@echo " pickle to make pickle files"
|
|
||||||
@echo " json to make JSON files"
|
|
||||||
@echo " htmlhelp to make HTML files and a HTML help project"
|
|
||||||
@echo " qthelp to make HTML files and a qthelp project"
|
|
||||||
@echo " devhelp to make HTML files and a Devhelp project"
|
|
||||||
@echo " epub to make an epub"
|
|
||||||
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
|
||||||
@echo " latexpdf to make LaTeX files and run them through pdflatex"
|
|
||||||
@echo " text to make text files"
|
|
||||||
@echo " man to make manual pages"
|
|
||||||
@echo " texinfo to make Texinfo files"
|
|
||||||
@echo " info to make Texinfo files and run them through makeinfo"
|
|
||||||
@echo " gettext to make PO message catalogs"
|
|
||||||
@echo " changes to make an overview of all changed/added/deprecated items"
|
|
||||||
@echo " linkcheck to check all external links for integrity"
|
|
||||||
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
|
||||||
|
|
||||||
|
# Clean the build output
|
||||||
clean:
|
clean:
|
||||||
-rm -rf $(BUILDDIR)/*
|
-rm -rf $(BUILDDIR)/*
|
||||||
|
|
||||||
|
# Build the HTML docs
|
||||||
html:
|
html:
|
||||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
$(SPHINXBUILD) -b html $(SPHINXOPTS) $(SOURCEDIR) $(BUILDDIR)/html
|
||||||
@echo
|
|
||||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
|
||||||
|
|
||||||
dirhtml:
|
# Build and serve docs with live reload
|
||||||
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
|
livehtml:
|
||||||
@echo
|
sphinx-autobuild -b html --port 9000 --watch . -c . $(SOURCEDIR) $(BUILDDIR)/html
|
||||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
|
|
||||||
|
|
||||||
singlehtml:
|
|
||||||
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
|
|
||||||
|
|
||||||
pickle:
|
|
||||||
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; now you can process the pickle files."
|
|
||||||
|
|
||||||
json:
|
|
||||||
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; now you can process the JSON files."
|
|
||||||
|
|
||||||
htmlhelp:
|
|
||||||
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
|
||||||
".hhp project file in $(BUILDDIR)/htmlhelp."
|
|
||||||
|
|
||||||
qthelp:
|
|
||||||
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
|
||||||
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
|
||||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/{{ cookiecutter.project_slug }}.qhcp"
|
|
||||||
@echo "To view the help file:"
|
|
||||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/{{ cookiecutter.project_slug }}.qhc"
|
|
||||||
|
|
||||||
devhelp:
|
|
||||||
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
|
|
||||||
@echo
|
|
||||||
@echo "Build finished."
|
|
||||||
@echo "To view the help file:"
|
|
||||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/{{ cookiecutter.project_slug }}"
|
|
||||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/{{ cookiecutter.project_slug }}"
|
|
||||||
@echo "# devhelp"
|
|
||||||
|
|
||||||
epub:
|
|
||||||
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
|
|
||||||
|
|
||||||
latex:
|
|
||||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
|
|
||||||
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
|
||||||
"(use \`make latexpdf' here to do that automatically)."
|
|
||||||
|
|
||||||
latexpdf:
|
|
||||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
|
||||||
@echo "Running LaTeX files through pdflatex..."
|
|
||||||
$(MAKE) -C $(BUILDDIR)/latex all-pdf
|
|
||||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
|
||||||
|
|
||||||
text:
|
|
||||||
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The text files are in $(BUILDDIR)/text."
|
|
||||||
|
|
||||||
man:
|
|
||||||
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
|
|
||||||
|
|
||||||
texinfo:
|
|
||||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
|
|
||||||
@echo "Run \`make' in that directory to run these through makeinfo" \
|
|
||||||
"(use \`make info' here to do that automatically)."
|
|
||||||
|
|
||||||
info:
|
|
||||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
|
||||||
@echo "Running Texinfo files through makeinfo..."
|
|
||||||
make -C $(BUILDDIR)/texinfo info
|
|
||||||
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
|
|
||||||
|
|
||||||
gettext:
|
|
||||||
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
|
|
||||||
|
|
||||||
changes:
|
|
||||||
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
|
|
||||||
@echo
|
|
||||||
@echo "The overview file is in $(BUILDDIR)/changes."
|
|
||||||
|
|
||||||
|
# Check all external links for integrity
|
||||||
linkcheck:
|
linkcheck:
|
||||||
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
|
$(SPHINXBUILD) -b linkcheck $(SPHINXOPTS) $(SOURCEDIR) $(BUILDDIR)/linkcheck
|
||||||
@echo
|
@echo
|
||||||
@echo "Link check complete; look for any errors in the above output " \
|
@echo "Link check complete; look for any errors in the above output " \
|
||||||
"or in $(BUILDDIR)/linkcheck/output.txt."
|
"or in $(BUILDDIR)/linkcheck/output.txt."
|
||||||
|
|
||||||
doctest:
|
|
||||||
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
|
||||||
@echo "Testing of doctests in the sources finished, look at the " \
|
|
||||||
"results in $(BUILDDIR)/doctest/output.txt."
|
|
||||||
|
|
|
@ -29,7 +29,10 @@ extensions = ["myst_parser"]
|
||||||
templates_path = ["_templates"]
|
templates_path = ["_templates"]
|
||||||
|
|
||||||
# The suffix of source filenames.
|
# The suffix of source filenames.
|
||||||
source_suffix = [".rst", ".md"]
|
source_suffix = {
|
||||||
|
".rst": "restructuredtext",
|
||||||
|
".md": "markdown",
|
||||||
|
}
|
||||||
|
|
||||||
# The encoding of source files.
|
# The encoding of source files.
|
||||||
# source_encoding = 'utf-8-sig'
|
# source_encoding = 'utf-8-sig'
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
```{include} ../CONTRIBUTING.md
|
|
||||||
|
|
||||||
```
|
|
|
@ -7,28 +7,51 @@ Powered by Cookiecutter_, Cookiecutter Django is a project template for jumpstar
|
||||||
|
|
||||||
.. _cookiecutter: https://github.com/cookiecutter/cookiecutter
|
.. _cookiecutter: https://github.com/cookiecutter/cookiecutter
|
||||||
|
|
||||||
Contents
|
.. toctree::
|
||||||
--------
|
:maxdepth: 2
|
||||||
|
:caption: Getting Started
|
||||||
|
|
||||||
|
1-getting-started/project-generation-options
|
||||||
|
1-getting-started/settings
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
:caption: Local Development
|
||||||
|
|
||||||
project-generation-options
|
2-local-development/developing-locally
|
||||||
developing-locally
|
2-local-development/developing-locally-docker
|
||||||
developing-locally-docker
|
|
||||||
settings
|
.. toctree::
|
||||||
linters
|
:maxdepth: 2
|
||||||
testing
|
:caption: Deployment
|
||||||
document
|
|
||||||
deployment-on-pythonanywhere
|
3-deployment/deployment-on-pythonanywhere
|
||||||
deployment-on-heroku
|
3-deployment/deployment-on-heroku
|
||||||
deployment-with-docker
|
3-deployment/deployment-with-docker
|
||||||
docker-postgres-backups
|
|
||||||
websocket
|
.. toctree::
|
||||||
faq
|
:maxdepth: 2
|
||||||
troubleshooting
|
:caption: Guides
|
||||||
contributing
|
|
||||||
maintainer-guide
|
4-guides/docker-postgres-backups
|
||||||
|
4-guides/linters
|
||||||
|
4-guides/testing
|
||||||
|
4-guides/document
|
||||||
|
4-guides/websocket
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
:caption: Help
|
||||||
|
|
||||||
|
5-help/faq
|
||||||
|
5-help/troubleshooting
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
:caption: About
|
||||||
|
|
||||||
|
6-about/contributing
|
||||||
|
6-about/maintainer-guide
|
||||||
|
|
||||||
Indices and tables
|
Indices and tables
|
||||||
------------------
|
------------------
|
||||||
|
|
153
docs/make.bat
153
docs/make.bat
|
@ -5,36 +5,20 @@ REM Command file for Sphinx documentation
|
||||||
if "%SPHINXBUILD%" == "" (
|
if "%SPHINXBUILD%" == "" (
|
||||||
set SPHINXBUILD=sphinx-build
|
set SPHINXBUILD=sphinx-build
|
||||||
)
|
)
|
||||||
|
set SOURCEDIR=.
|
||||||
set BUILDDIR=_build
|
set BUILDDIR=_build
|
||||||
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
|
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS%
|
||||||
set I18NSPHINXOPTS=%SPHINXOPTS% .
|
set I18NSPHINXOPTS=%SPHINXOPTS% .
|
||||||
if NOT "%PAPER%" == "" (
|
|
||||||
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
|
|
||||||
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%1" == "" goto help
|
if "%1" == "" goto help
|
||||||
|
|
||||||
if "%1" == "help" (
|
if "%1" == "help" (
|
||||||
:help
|
:help
|
||||||
echo.Please use `make ^<target^>` where ^<target^> is one of
|
echo.Please use `make ^<target^>` where ^<target^> is one of
|
||||||
|
echo. clean to clean the build directory
|
||||||
echo. html to make standalone HTML files
|
echo. html to make standalone HTML files
|
||||||
echo. dirhtml to make HTML files named index.html in directories
|
echo. livehtml to build and serve docs with live reload
|
||||||
echo. singlehtml to make a single large HTML file
|
|
||||||
echo. pickle to make pickle files
|
|
||||||
echo. json to make JSON files
|
|
||||||
echo. htmlhelp to make HTML files and a HTML help project
|
|
||||||
echo. qthelp to make HTML files and a qthelp project
|
|
||||||
echo. devhelp to make HTML files and a Devhelp project
|
|
||||||
echo. epub to make an epub
|
|
||||||
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
|
|
||||||
echo. text to make text files
|
|
||||||
echo. man to make manual pages
|
|
||||||
echo. texinfo to make Texinfo files
|
|
||||||
echo. gettext to make PO message catalogs
|
|
||||||
echo. changes to make an overview over all changed/added/deprecated items
|
|
||||||
echo. linkcheck to check all external links for integrity
|
echo. linkcheck to check all external links for integrity
|
||||||
echo. doctest to run all doctests embedded in the documentation if enabled
|
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -45,132 +29,22 @@ if "%1" == "clean" (
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "html" (
|
if "%1" == "html" (
|
||||||
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
|
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %SOURCEDIR% %BUILDDIR%/html
|
||||||
if errorlevel 1 exit /b 1
|
if errorlevel 1 exit /b 1
|
||||||
echo.
|
echo.
|
||||||
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
|
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "dirhtml" (
|
if "%1" == "livehtml" (
|
||||||
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
|
sphinx-autobuild -b html --port 9000 --watch . -c . %SOURCEDIR% %BUILDDIR%/html
|
||||||
|
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
|
||||||
if errorlevel 1 exit /b 1
|
if errorlevel 1 exit /b 1
|
||||||
echo.
|
|
||||||
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
|
|
||||||
goto end
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%1" == "singlehtml" (
|
|
||||||
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
echo.
|
|
||||||
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
|
|
||||||
goto end
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%1" == "pickle" (
|
|
||||||
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
echo.
|
|
||||||
echo.Build finished; now you can process the pickle files.
|
|
||||||
goto end
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%1" == "json" (
|
|
||||||
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
echo.
|
|
||||||
echo.Build finished; now you can process the JSON files.
|
|
||||||
goto end
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%1" == "htmlhelp" (
|
|
||||||
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
echo.
|
|
||||||
echo.Build finished; now you can run HTML Help Workshop with the ^
|
|
||||||
.hhp project file in %BUILDDIR%/htmlhelp.
|
|
||||||
goto end
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%1" == "qthelp" (
|
|
||||||
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
echo.
|
|
||||||
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
|
||||||
.qhcp project file in %BUILDDIR%/qthelp, like this:
|
|
||||||
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\{{ cookiecutter.project_slug }}.qhcp
|
|
||||||
echo.To view the help file:
|
|
||||||
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\{{ cookiecutter.project_slug }}.ghc
|
|
||||||
goto end
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%1" == "devhelp" (
|
|
||||||
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
echo.
|
|
||||||
echo.Build finished.
|
|
||||||
goto end
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%1" == "epub" (
|
|
||||||
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
echo.
|
|
||||||
echo.Build finished. The epub file is in %BUILDDIR%/epub.
|
|
||||||
goto end
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%1" == "latex" (
|
|
||||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
echo.
|
|
||||||
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
|
|
||||||
goto end
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%1" == "text" (
|
|
||||||
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
echo.
|
|
||||||
echo.Build finished. The text files are in %BUILDDIR%/text.
|
|
||||||
goto end
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%1" == "man" (
|
|
||||||
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
echo.
|
|
||||||
echo.Build finished. The manual pages are in %BUILDDIR%/man.
|
|
||||||
goto end
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%1" == "texinfo" (
|
|
||||||
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
echo.
|
|
||||||
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
|
|
||||||
goto end
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%1" == "gettext" (
|
|
||||||
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
echo.
|
|
||||||
echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
|
|
||||||
goto end
|
|
||||||
)
|
|
||||||
|
|
||||||
if "%1" == "changes" (
|
|
||||||
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
echo.
|
|
||||||
echo.The overview file is in %BUILDDIR%/changes.
|
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "linkcheck" (
|
if "%1" == "linkcheck" (
|
||||||
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
|
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %SOURCEDIR% %BUILDDIR%/linkcheck
|
||||||
if errorlevel 1 exit /b 1
|
if errorlevel 1 exit /b 1
|
||||||
echo.
|
echo.
|
||||||
echo.Link check complete; look for any errors in the above output ^
|
echo.Link check complete; look for any errors in the above output ^
|
||||||
|
@ -178,13 +52,4 @@ or in %BUILDDIR%/linkcheck/output.txt.
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "doctest" (
|
|
||||||
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
echo.
|
|
||||||
echo.Testing of doctests in the sources finished, look at the ^
|
|
||||||
results in %BUILDDIR%/doctest/output.txt.
|
|
||||||
goto end
|
|
||||||
)
|
|
||||||
|
|
||||||
:end
|
:end
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
sphinx==7.4.7
|
|
||||||
sphinx-rtd-theme==2.0.0
|
|
||||||
myst-parser==4.0.0
|
|
|
@ -1,6 +1,6 @@
|
||||||
[project]
|
[project]
|
||||||
name = "cookiecutter-django"
|
name = "cookiecutter-django"
|
||||||
version = "2024.09.16"
|
version = "2024.10.09"
|
||||||
description = "A Cookiecutter template for creating production-ready Django projects quickly."
|
description = "A Cookiecutter template for creating production-ready Django projects quickly."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
keywords = [
|
keywords = [
|
||||||
|
@ -28,6 +28,32 @@ classifiers = [
|
||||||
"Programming Language :: Python :: Implementation :: CPython",
|
"Programming Language :: Python :: Implementation :: CPython",
|
||||||
"Topic :: Software Development",
|
"Topic :: Software Development",
|
||||||
]
|
]
|
||||||
|
dependencies = [
|
||||||
|
"binaryornot==0.4.4",
|
||||||
|
"cookiecutter==2.6",
|
||||||
|
"django-upgrade==1.21",
|
||||||
|
"djlint==1.35.2",
|
||||||
|
"gitpython==3.1.43",
|
||||||
|
"jinja2==3.1.4",
|
||||||
|
"pre-commit==3.8",
|
||||||
|
"pygithub==2.4",
|
||||||
|
"pytest==8.3.3",
|
||||||
|
"pytest-cookies==0.7",
|
||||||
|
"pytest-instafail==0.5",
|
||||||
|
"pytest-xdist==3.6.1",
|
||||||
|
"pyyaml==6.0.2",
|
||||||
|
"requests==2.32.3",
|
||||||
|
"ruff==0.6.9",
|
||||||
|
"sh==2.0.7; sys_platform!='win23'",
|
||||||
|
"tox==4.21.2",
|
||||||
|
"tox-uv>=1.11.2",
|
||||||
|
]
|
||||||
|
optional-dependencies.docs = [
|
||||||
|
"myst-parser>=4",
|
||||||
|
"sphinx>=8.0.2",
|
||||||
|
"sphinx-autobuild>=2024.10.3",
|
||||||
|
"sphinx-rtd-theme>=3",
|
||||||
|
]
|
||||||
urls = { Repository = "https://github.com/cookiecutter/cookiecutter-django" }
|
urls = { Repository = "https://github.com/cookiecutter/cookiecutter-django" }
|
||||||
|
|
||||||
[tool.black]
|
[tool.black]
|
||||||
|
@ -47,7 +73,7 @@ known_first_party = [
|
||||||
"hooks",
|
"hooks",
|
||||||
]
|
]
|
||||||
|
|
||||||
# ==== djLint ====
|
# ==== pytest ====
|
||||||
|
|
||||||
[tool.pytest.ini_options]
|
[tool.pytest.ini_options]
|
||||||
addopts = "-v --tb=short"
|
addopts = "-v --tb=short"
|
||||||
|
@ -61,7 +87,7 @@ norecursedirs = [
|
||||||
"*/{{cookiecutter.project_slug}}/*",
|
"*/{{cookiecutter.project_slug}}/*",
|
||||||
]
|
]
|
||||||
|
|
||||||
# ==== black ====
|
# ==== djLint ====
|
||||||
|
|
||||||
[tool.djlint]
|
[tool.djlint]
|
||||||
blank_line_after_tag = "load,extends"
|
blank_line_after_tag = "load,extends"
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
cookiecutter==2.6.0
|
|
||||||
sh==2.0.7; sys_platform != "win32"
|
|
||||||
binaryornot==0.4.4
|
|
||||||
|
|
||||||
# Code quality
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
ruff==0.6.5
|
|
||||||
django-upgrade==1.21.0
|
|
||||||
djlint==1.35.2
|
|
||||||
pre-commit==3.8.0
|
|
||||||
|
|
||||||
# Testing
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
tox==4.18.1
|
|
||||||
pytest==8.3.3
|
|
||||||
pytest-xdist==3.6.1
|
|
||||||
pytest-cookies==0.7.0
|
|
||||||
pytest-instafail==0.5.0
|
|
||||||
pyyaml==6.0.2
|
|
||||||
|
|
||||||
# Scripting
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
PyGithub==2.4.0
|
|
||||||
gitpython==3.1.43
|
|
||||||
jinja2==3.1.4
|
|
||||||
requests==2.32.3
|
|
|
@ -11,7 +11,7 @@ mkdir -p .cache/bare
|
||||||
cd .cache/bare
|
cd .cache/bare
|
||||||
|
|
||||||
# create the project using the default settings in cookiecutter.json
|
# create the project using the default settings in cookiecutter.json
|
||||||
cookiecutter ../../ --no-input --overwrite-if-exists use_docker=n "$@"
|
uv run cookiecutter ../../ --no-input --overwrite-if-exists use_docker=n "$@"
|
||||||
cd my_awesome_project
|
cd my_awesome_project
|
||||||
|
|
||||||
# Install OS deps
|
# Install OS deps
|
||||||
|
|
|
@ -11,7 +11,7 @@ mkdir -p .cache/docker
|
||||||
cd .cache/docker
|
cd .cache/docker
|
||||||
|
|
||||||
# create the project using the default settings in cookiecutter.json
|
# create the project using the default settings in cookiecutter.json
|
||||||
cookiecutter ../../ --no-input --overwrite-if-exists use_docker=y "$@"
|
uv run cookiecutter ../../ --no-input --overwrite-if-exists use_docker=y "$@"
|
||||||
cd my_awesome_project
|
cd my_awesome_project
|
||||||
|
|
||||||
# make sure all images build
|
# make sure all images build
|
||||||
|
|
1
tox.ini
1
tox.ini
|
@ -3,7 +3,6 @@ skipsdist = true
|
||||||
envlist = py312,black-template
|
envlist = py312,black-template
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
deps = -rrequirements.txt
|
|
||||||
passenv = AUTOFIXABLE_STYLES
|
passenv = AUTOFIXABLE_STYLES
|
||||||
commands = pytest -n auto {posargs:./tests}
|
commands = pytest -n auto {posargs:./tests}
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
exclude: '^docs/|/migrations/|devcontainer.json'
|
exclude: '^docs/|/migrations/|devcontainer.json'
|
||||||
default_stages: [commit]
|
default_stages: [pre-commit]
|
||||||
|
|
||||||
default_language_version:
|
default_language_version:
|
||||||
python: python3.12
|
python: python3.12
|
||||||
|
|
||||||
repos:
|
repos:
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v4.6.0
|
rev: v5.0.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
|
@ -39,7 +39,7 @@ repos:
|
||||||
|
|
||||||
# Run the Ruff linter.
|
# Run the Ruff linter.
|
||||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
rev: v0.6.5
|
rev: v0.6.9
|
||||||
hooks:
|
hooks:
|
||||||
# Linter
|
# Linter
|
||||||
- id: ruff
|
- id: ruff
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# define an alias for the specific python version used in this file.
|
# define an alias for the specific python version used in this file.
|
||||||
FROM docker.io/python:3.12.6-slim-bookworm AS python
|
FROM docker.io/python:3.12.7-slim-bookworm AS python
|
||||||
|
|
||||||
# Python build stage
|
# Python build stage
|
||||||
FROM python AS python-build-stage
|
FROM python AS python-build-stage
|
||||||
|
@ -48,7 +48,8 @@ RUN groupadd --gid 1000 dev-user \
|
||||||
# Install required system dependencies
|
# Install required system dependencies
|
||||||
RUN apt-get update && apt-get install --no-install-recommends -y \
|
RUN apt-get update && apt-get install --no-install-recommends -y \
|
||||||
# psycopg dependencies
|
# psycopg dependencies
|
||||||
libpq-dev \
|
libpq-dev \
|
||||||
|
wait-for-it \
|
||||||
# Translations dependencies
|
# Translations dependencies
|
||||||
gettext \
|
gettext \
|
||||||
# cleaning up unused files
|
# cleaning up unused files
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# define an alias for the specific python version used in this file.
|
# define an alias for the specific python version used in this file.
|
||||||
FROM docker.io/python:3.12.6-slim-bookworm AS python
|
FROM docker.io/python:3.12.7-slim-bookworm AS python
|
||||||
|
|
||||||
|
|
||||||
# Python build stage
|
# Python build stage
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
FROM docker.io/amazon/aws-cli:2.17.0
|
FROM docker.io/amazon/aws-cli:2.18.1
|
||||||
|
|
||||||
# Clear entrypoint from the base image, otherwise it's always calling the aws CLI
|
# Clear entrypoint from the base image, otherwise it's always calling the aws CLI
|
||||||
ENTRYPOINT []
|
ENTRYPOINT []
|
||||||
|
|
|
@ -25,7 +25,7 @@ RUN npm run build
|
||||||
|
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
# define an alias for the specific python version used in this file.
|
# define an alias for the specific python version used in this file.
|
||||||
FROM docker.io/python:3.12.6-slim-bookworm AS python
|
FROM docker.io/python:3.12.7-slim-bookworm AS python
|
||||||
|
|
||||||
# Python build stage
|
# Python build stage
|
||||||
FROM python AS python-build-stage
|
FROM python AS python-build-stage
|
||||||
|
@ -37,7 +37,8 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
|
||||||
# dependencies for building Python packages
|
# dependencies for building Python packages
|
||||||
build-essential \
|
build-essential \
|
||||||
# psycopg dependencies
|
# psycopg dependencies
|
||||||
libpq-dev
|
libpq-dev \
|
||||||
|
wait-for-it
|
||||||
|
|
||||||
# Requirements are installed here to ensure they will be cached.
|
# Requirements are installed here to ensure they will be cached.
|
||||||
COPY ./requirements .
|
COPY ./requirements .
|
||||||
|
|
|
@ -16,33 +16,7 @@ if [ -z "${POSTGRES_USER}" ]; then
|
||||||
fi
|
fi
|
||||||
export DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"
|
export DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"
|
||||||
|
|
||||||
python << END
|
wait-for-it "${POSTGRES_HOST}:${POSTGRES_PORT}" -t 30
|
||||||
import sys
|
|
||||||
import time
|
|
||||||
|
|
||||||
import psycopg
|
|
||||||
|
|
||||||
suggest_unrecoverable_after = 30
|
|
||||||
start = time.time()
|
|
||||||
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
psycopg.connect(
|
|
||||||
dbname="${POSTGRES_DB}",
|
|
||||||
user="${POSTGRES_USER}",
|
|
||||||
password="${POSTGRES_PASSWORD}",
|
|
||||||
host="${POSTGRES_HOST}",
|
|
||||||
port="${POSTGRES_PORT}",
|
|
||||||
)
|
|
||||||
break
|
|
||||||
except psycopg.OperationalError as error:
|
|
||||||
sys.stderr.write("Waiting for PostgreSQL to become available...\n")
|
|
||||||
|
|
||||||
if time.time() - start > suggest_unrecoverable_after:
|
|
||||||
sys.stderr.write(" This is taking longer than expected. The following exception may be indicative of an unrecoverable error: '{}'\n".format(error))
|
|
||||||
|
|
||||||
time.sleep(1)
|
|
||||||
END
|
|
||||||
|
|
||||||
>&2 echo 'PostgreSQL is available'
|
>&2 echo 'PostgreSQL is available'
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
FROM docker.io/traefik:3.1.3
|
FROM docker.io/traefik:3.1.6
|
||||||
RUN mkdir -p /etc/traefik/acme \
|
RUN mkdir -p /etc/traefik/acme \
|
||||||
&& touch /etc/traefik/acme/acme.json \
|
&& touch /etc/traefik/acme/acme.json \
|
||||||
&& chmod 600 /etc/traefik/acme/acme.json
|
&& chmod 600 /etc/traefik/acme/acme.json
|
||||||
|
|
|
@ -222,6 +222,7 @@ EMAIL_SUBJECT_PREFIX = env(
|
||||||
"DJANGO_EMAIL_SUBJECT_PREFIX",
|
"DJANGO_EMAIL_SUBJECT_PREFIX",
|
||||||
default="[{{cookiecutter.project_name}}] ",
|
default="[{{cookiecutter.project_name}}] ",
|
||||||
)
|
)
|
||||||
|
ACCOUNT_EMAIL_SUBJECT_PREFIX = EMAIL_SUBJECT_PREFIX
|
||||||
|
|
||||||
# ADMIN
|
# ADMIN
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
|
@ -13,11 +13,11 @@ APP = /app
|
||||||
APP = ../{{cookiecutter.project_slug}}
|
APP = ../{{cookiecutter.project_slug}}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
.PHONY: help livehtml apidocs Makefile
|
.PHONY: html livehtml apidocs Makefile
|
||||||
|
|
||||||
# Put it first so that "make" without argument is like "make help".
|
# Put it first so that "make" without argument is like "make html".
|
||||||
help:
|
html:
|
||||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -c .
|
@$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -c .
|
||||||
|
|
||||||
# Build, watch and serve docs with live reload
|
# Build, watch and serve docs with live reload
|
||||||
livehtml:
|
livehtml:
|
||||||
|
|
|
@ -12,7 +12,7 @@ set SOURCEDIR=_source
|
||||||
set BUILDDIR=_build
|
set BUILDDIR=_build
|
||||||
set APP=..\{{cookiecutter.project_slug}}
|
set APP=..\{{cookiecutter.project_slug}}
|
||||||
|
|
||||||
if "%1" == "" goto help
|
if "%1" == "" goto html
|
||||||
|
|
||||||
%SPHINXBUILD% >NUL 2>NUL
|
%SPHINXBUILD% >NUL 2>NUL
|
||||||
if errorlevel 9009 (
|
if errorlevel 9009 (
|
||||||
|
@ -39,8 +39,8 @@ GOTO :EOF
|
||||||
sphinx-apidoc -o %SOURCEDIR%/api %APP%
|
sphinx-apidoc -o %SOURCEDIR%/api %APP%
|
||||||
GOTO :EOF
|
GOTO :EOF
|
||||||
|
|
||||||
:help
|
:html
|
||||||
%SPHINXBUILD% -b help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
%SPHINXBUILD% -b html %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
||||||
|
|
||||||
:end
|
:end
|
||||||
popd
|
popd
|
||||||
|
|
|
@ -11,7 +11,7 @@ argon2-cffi==23.1.0 # https://github.com/hynek/argon2_cffi
|
||||||
{%- if cookiecutter.use_whitenoise == 'y' %}
|
{%- if cookiecutter.use_whitenoise == 'y' %}
|
||||||
whitenoise==6.7.0 # https://github.com/evansd/whitenoise
|
whitenoise==6.7.0 # https://github.com/evansd/whitenoise
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
redis==5.0.8 # https://github.com/redis/redis-py
|
redis==5.1.1 # https://github.com/redis/redis-py
|
||||||
{%- if cookiecutter.use_docker == "y" or cookiecutter.windows == "n" %}
|
{%- if cookiecutter.use_docker == "y" or cookiecutter.windows == "n" %}
|
||||||
hiredis==3.0.0 # https://github.com/redis/hiredis-py
|
hiredis==3.0.0 # https://github.com/redis/hiredis-py
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
@ -23,7 +23,7 @@ flower==2.0.1 # https://github.com/mher/flower
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if cookiecutter.use_async == 'y' %}
|
{%- if cookiecutter.use_async == 'y' %}
|
||||||
uvicorn[standard]==0.30.6 # https://github.com/encode/uvicorn
|
uvicorn[standard]==0.31.0 # https://github.com/encode/uvicorn
|
||||||
uvicorn-worker==0.2.0 # https://github.com/Kludex/uvicorn-worker
|
uvicorn-worker==0.2.0 # https://github.com/Kludex/uvicorn-worker
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
|
@ -32,9 +32,9 @@ uvicorn-worker==0.2.0 # https://github.com/Kludex/uvicorn-worker
|
||||||
django==5.0.9 # pyup: < 5.1 # https://www.djangoproject.com/
|
django==5.0.9 # pyup: < 5.1 # https://www.djangoproject.com/
|
||||||
django-environ==0.11.2 # https://github.com/joke2k/django-environ
|
django-environ==0.11.2 # https://github.com/joke2k/django-environ
|
||||||
django-model-utils==5.0.0 # https://github.com/jazzband/django-model-utils
|
django-model-utils==5.0.0 # https://github.com/jazzband/django-model-utils
|
||||||
django-allauth[mfa]==64.2.1 # https://github.com/pennersr/django-allauth
|
django-allauth[mfa]==65.0.2 # https://github.com/pennersr/django-allauth
|
||||||
django-crispy-forms==2.3 # https://github.com/django-crispy-forms/django-crispy-forms
|
django-crispy-forms==2.3 # https://github.com/django-crispy-forms/django-crispy-forms
|
||||||
crispy-bootstrap5==2024.2 # https://github.com/django-crispy-forms/crispy-bootstrap5
|
crispy-bootstrap5==2024.10 # https://github.com/django-crispy-forms/crispy-bootstrap5
|
||||||
{%- if cookiecutter.frontend_pipeline == 'Django Compressor' %}
|
{%- if cookiecutter.frontend_pipeline == 'Django Compressor' %}
|
||||||
django-compressor==4.5.1 # https://github.com/django-compressor/django-compressor
|
django-compressor==4.5.1 # https://github.com/django-compressor/django-compressor
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
|
@ -4,9 +4,9 @@ watchdog==4.0.2 # https://github.com/gorakhargosh/watchdog
|
||||||
Werkzeug[watchdog]==3.0.4 # https://github.com/pallets/werkzeug
|
Werkzeug[watchdog]==3.0.4 # https://github.com/pallets/werkzeug
|
||||||
ipdb==0.13.13 # https://github.com/gotcha/ipdb
|
ipdb==0.13.13 # https://github.com/gotcha/ipdb
|
||||||
{%- if cookiecutter.use_docker == 'y' %}
|
{%- if cookiecutter.use_docker == 'y' %}
|
||||||
psycopg[c]==3.2.2 # https://github.com/psycopg/psycopg
|
psycopg[c]==3.2.3 # https://github.com/psycopg/psycopg
|
||||||
{%- else %}
|
{%- else %}
|
||||||
psycopg[binary]==3.2.2 # https://github.com/psycopg/psycopg
|
psycopg[binary]==3.2.3 # https://github.com/psycopg/psycopg
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if cookiecutter.use_async == 'y' or cookiecutter.use_celery == 'y' %}
|
{%- if cookiecutter.use_async == 'y' or cookiecutter.use_celery == 'y' %}
|
||||||
watchfiles==0.24.0 # https://github.com/samuelcolvin/watchfiles
|
watchfiles==0.24.0 # https://github.com/samuelcolvin/watchfiles
|
||||||
|
@ -15,7 +15,7 @@ watchfiles==0.24.0 # https://github.com/samuelcolvin/watchfiles
|
||||||
# Testing
|
# Testing
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
mypy==1.11.2 # https://github.com/python/mypy
|
mypy==1.11.2 # https://github.com/python/mypy
|
||||||
django-stubs[compatible-mypy]==5.0.4 # https://github.com/typeddjango/django-stubs
|
django-stubs[compatible-mypy]==5.1.0 # https://github.com/typeddjango/django-stubs
|
||||||
pytest==8.3.3 # https://github.com/pytest-dev/pytest
|
pytest==8.3.3 # https://github.com/pytest-dev/pytest
|
||||||
pytest-sugar==1.0.0 # https://github.com/Frozenball/pytest-sugar
|
pytest-sugar==1.0.0 # https://github.com/Frozenball/pytest-sugar
|
||||||
{%- if cookiecutter.use_drf == "y" %}
|
{%- if cookiecutter.use_drf == "y" %}
|
||||||
|
@ -24,16 +24,16 @@ djangorestframework-stubs==3.15.1 # https://github.com/typeddjango/djangorestfr
|
||||||
|
|
||||||
# Documentation
|
# Documentation
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
sphinx==7.4.7 # https://github.com/sphinx-doc/sphinx
|
sphinx==8.0.2 # https://github.com/sphinx-doc/sphinx
|
||||||
sphinx-autobuild==2024.9.3 # https://github.com/GaretJax/sphinx-autobuild
|
sphinx-autobuild==2024.10.3 # https://github.com/GaretJax/sphinx-autobuild
|
||||||
sphinx-rtd-theme==2.0.0 # https://pypi.org/project/sphinx-rtd-theme/
|
sphinx-rtd-theme==2.0.0 # https://pypi.org/project/sphinx-rtd-theme/
|
||||||
|
|
||||||
# Code quality
|
# Code quality
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
ruff==0.6.5 # https://github.com/astral-sh/ruff
|
ruff==0.6.9 # https://github.com/astral-sh/ruff
|
||||||
coverage==7.6.1 # https://github.com/nedbat/coveragepy
|
coverage==7.6.2 # https://github.com/nedbat/coveragepy
|
||||||
djlint==1.35.2 # https://github.com/Riverside-Healthcare/djLint
|
djlint==1.35.2 # https://github.com/Riverside-Healthcare/djLint
|
||||||
pre-commit==3.8.0 # https://github.com/pre-commit/pre-commit
|
pre-commit==4.0.1 # https://github.com/pre-commit/pre-commit
|
||||||
|
|
||||||
# Django
|
# Django
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
-r base.txt
|
-r base.txt
|
||||||
|
|
||||||
gunicorn==23.0.0 # https://github.com/benoitc/gunicorn
|
gunicorn==23.0.0 # https://github.com/benoitc/gunicorn
|
||||||
psycopg[c]==3.2.2 # https://github.com/psycopg/psycopg
|
psycopg[c]==3.2.3 # https://github.com/psycopg/psycopg
|
||||||
{%- if cookiecutter.use_whitenoise == 'n' %}
|
{%- if cookiecutter.use_whitenoise == 'n' %}
|
||||||
Collectfasta==3.2.0 # https://github.com/jasongi/collectfasta
|
Collectfasta==3.2.0 # https://github.com/jasongi/collectfasta
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if cookiecutter.use_sentry == "y" %}
|
{%- if cookiecutter.use_sentry == "y" %}
|
||||||
sentry-sdk==2.14.0 # https://github.com/getsentry/sentry-python
|
sentry-sdk==2.16.0 # https://github.com/getsentry/sentry-python
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if cookiecutter.use_docker == "n" and cookiecutter.windows == "y" %}
|
{%- if cookiecutter.use_docker == "n" and cookiecutter.windows == "y" %}
|
||||||
hiredis==3.0.0 # https://github.com/redis/hiredis-py
|
hiredis==3.0.0 # https://github.com/redis/hiredis-py
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
python-3.12.5
|
python-3.12.7
|
||||||
|
|
Loading…
Reference in New Issue
Block a user