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
462957faa0
10
.github/contributors.json
vendored
10
.github/contributors.json
vendored
|
@ -1648,5 +1648,15 @@
|
||||||
"name": "LJFP",
|
"name": "LJFP",
|
||||||
"github_login": "ljfp",
|
"github_login": "ljfp",
|
||||||
"twitter_username": ""
|
"twitter_username": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Francisco Navarro Morales ",
|
||||||
|
"github_login": "spothound",
|
||||||
|
"twitter_username": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Mariot Tsitoara",
|
||||||
|
"github_login": "mariot",
|
||||||
|
"twitter_username": ""
|
||||||
}
|
}
|
||||||
]
|
]
|
1
.github/dependabot.yml
vendored
1
.github/dependabot.yml
vendored
|
@ -100,6 +100,7 @@ updates:
|
||||||
directory: "{{cookiecutter.project_slug}}/compose/production/nginx/"
|
directory: "{{cookiecutter.project_slug}}/compose/production/nginx/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
versioning-strategy: increase
|
||||||
labels:
|
labels:
|
||||||
- "update"
|
- "update"
|
||||||
|
|
||||||
|
|
5
.github/workflows/ci.yml
vendored
5
.github/workflows/ci.yml
vendored
|
@ -92,12 +92,15 @@ jobs:
|
||||||
POSTGRES_PASSWORD: postgres
|
POSTGRES_PASSWORD: postgres
|
||||||
|
|
||||||
env:
|
env:
|
||||||
CELERY_BROKER_URL: "redis://localhost:6379/0"
|
REDIS_URL: "redis://localhost:6379/0"
|
||||||
# postgres://user:password@host:port/database
|
# postgres://user:password@host:port/database
|
||||||
DATABASE_URL: "postgres://postgres:postgres@localhost:5432/postgres"
|
DATABASE_URL: "postgres://postgres:postgres@localhost:5432/postgres"
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: "3.12"
|
||||||
- name: Install uv
|
- name: Install uv
|
||||||
uses: astral-sh/setup-uv@v3
|
uses: astral-sh/setup-uv@v3
|
||||||
with:
|
with:
|
||||||
|
|
1
.github/workflows/dependabot-uv-lock.yml
vendored
1
.github/workflows/dependabot-uv-lock.yml
vendored
|
@ -11,6 +11,7 @@ permissions:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lock:
|
lock:
|
||||||
|
if: ${{ github.actor == 'dependabot[bot]' }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
GH_PAT: ${{ secrets.GH_PAT }}
|
GH_PAT: ${{ secrets.GH_PAT }}
|
||||||
|
|
2
.github/workflows/update-changelog.yml
vendored
2
.github/workflows/update-changelog.yml
vendored
|
@ -23,7 +23,7 @@ jobs:
|
||||||
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 changelog
|
||||||
run: uv run --frozen scripts/update_changelog.py
|
run: uv run --frozen scripts/update_changelog.py
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
|
@ -26,7 +26,7 @@ repos:
|
||||||
args: ["--tab-width", "2"]
|
args: ["--tab-width", "2"]
|
||||||
|
|
||||||
- repo: https://github.com/asottile/pyupgrade
|
- repo: https://github.com/asottile/pyupgrade
|
||||||
rev: v3.17.0
|
rev: v3.19.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: pyupgrade
|
- id: pyupgrade
|
||||||
args: [--py312-plus]
|
args: [--py312-plus]
|
||||||
|
@ -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.4"
|
rev: "v2.4.3"
|
||||||
hooks:
|
hooks:
|
||||||
- id: pyproject-fmt
|
- id: pyproject-fmt
|
||||||
|
|
||||||
|
|
125
CHANGELOG.md
125
CHANGELOG.md
|
@ -3,6 +3,131 @@ All enhancements and patches to Cookiecutter Django will be documented in this f
|
||||||
|
|
||||||
<!-- GENERATOR_PLACEHOLDER -->
|
<!-- GENERATOR_PLACEHOLDER -->
|
||||||
|
|
||||||
|
## 2024.10.26
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update django-stubs to 5.1.1 ([#5495](https://github.com/cookiecutter/cookiecutter-django/pull/5495))
|
||||||
|
|
||||||
|
- Update mypy to 1.13.0 ([#5484](https://github.com/cookiecutter/cookiecutter-django/pull/5484))
|
||||||
|
|
||||||
|
- Update werkzeug to 3.0.6 ([#5492](https://github.com/cookiecutter/cookiecutter-django/pull/5492))
|
||||||
|
|
||||||
|
## 2024.10.25
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update werkzeug to 3.0.5 and unpin watchdog<5 ([#5489](https://github.com/cookiecutter/cookiecutter-django/pull/5489))
|
||||||
|
|
||||||
|
## 2024.10.24
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update ruff to 0.7.1 ([#5487](https://github.com/cookiecutter/cookiecutter-django/pull/5487))
|
||||||
|
|
||||||
|
- Update redis to 5.2.0 ([#5486](https://github.com/cookiecutter/cookiecutter-django/pull/5486))
|
||||||
|
|
||||||
|
- Update django-allauth to 65.1.0 ([#5485](https://github.com/cookiecutter/cookiecutter-django/pull/5485))
|
||||||
|
|
||||||
|
## 2024.10.22
|
||||||
|
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Fix broken links in generated README ([#5482](https://github.com/cookiecutter/cookiecutter-django/pull/5482))
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Auto-update pre-commit hooks ([#5483](https://github.com/cookiecutter/cookiecutter-django/pull/5483))
|
||||||
|
|
||||||
|
## 2024.10.21
|
||||||
|
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Remove CELERY_BROKER_URL in favor of REDIS_URL ([#4861](https://github.com/cookiecutter/cookiecutter-django/pull/4861))
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fix a number of issues with Azure storage ([#5476](https://github.com/cookiecutter/cookiecutter-django/pull/5476))
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update coverage to 7.6.4 ([#5480](https://github.com/cookiecutter/cookiecutter-django/pull/5480))
|
||||||
|
|
||||||
|
## 2024.10.17
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update ruff to 0.7.0 ([#5474](https://github.com/cookiecutter/cookiecutter-django/pull/5474))
|
||||||
|
|
||||||
|
- Update uvicorn to 0.32.0 ([#5471](https://github.com/cookiecutter/cookiecutter-django/pull/5471))
|
||||||
|
|
||||||
|
- Update pillow to 11.0.0 ([#5470](https://github.com/cookiecutter/cookiecutter-django/pull/5470))
|
||||||
|
|
||||||
|
- Update sentry-sdk to 2.17.0 ([#5473](https://github.com/cookiecutter/cookiecutter-django/pull/5473))
|
||||||
|
|
||||||
|
## 2024.10.15
|
||||||
|
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- [pre-commit.ci] pre-commit autoupdate ([#5468](https://github.com/cookiecutter/cookiecutter-django/pull/5468))
|
||||||
|
|
||||||
|
## 2024.10.14
|
||||||
|
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Add requirements for ubuntu 24.04 ([#5467](https://github.com/cookiecutter/cookiecutter-django/pull/5467))
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update sphinx to 8.1.3 ([#5463](https://github.com/cookiecutter/cookiecutter-django/pull/5463))
|
||||||
|
|
||||||
|
- Update coverage to 7.6.3 ([#5464](https://github.com/cookiecutter/cookiecutter-django/pull/5464))
|
||||||
|
|
||||||
|
## 2024.10.12
|
||||||
|
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Pin Python version to 3.12 ([#5456](https://github.com/cookiecutter/cookiecutter-django/pull/5456))
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update sphinx to 8.1.1 ([#5457](https://github.com/cookiecutter/cookiecutter-django/pull/5457))
|
||||||
|
|
||||||
|
- Auto-update pre-commit hooks ([#5458](https://github.com/cookiecutter/cookiecutter-django/pull/5458))
|
||||||
|
|
||||||
|
- Update django-cors-headers to 4.5.0 ([#5459](https://github.com/cookiecutter/cookiecutter-django/pull/5459))
|
||||||
|
|
||||||
|
## 2024.10.11
|
||||||
|
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Update README.md broken links ([#5454](https://github.com/cookiecutter/cookiecutter-django/pull/5454))
|
||||||
|
|
||||||
|
- wait-for-it as dependency in the run stage ([#5452](https://github.com/cookiecutter/cookiecutter-django/pull/5452))
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Auto-update pre-commit hooks ([#5450](https://github.com/cookiecutter/cookiecutter-django/pull/5450))
|
||||||
|
|
||||||
|
## 2024.10.10
|
||||||
|
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
|
||||||
|
- Update sentry-sdk to 2.16.0 ([#5444](https://github.com/cookiecutter/cookiecutter-django/pull/5444))
|
||||||
|
|
||||||
|
- Bump traefik from 3.1.5 to 3.1.6 ([#5449](https://github.com/cookiecutter/cookiecutter-django/pull/5449))
|
||||||
|
|
||||||
## 2024.10.09
|
## 2024.10.09
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -880,6 +880,13 @@ Listed in alphabetical order.
|
||||||
</td>
|
</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Francisco Navarro Morales </td>
|
||||||
|
<td>
|
||||||
|
<a href="https://github.com/spothound">spothound</a>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Freddy</td>
|
<td>Freddy</td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -1482,6 +1489,13 @@ Listed in alphabetical order.
|
||||||
</td>
|
</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Mariot Tsitoara</td>
|
||||||
|
<td>
|
||||||
|
<a href="https://github.com/mariot">mariot</a>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Marlon Castillo</td>
|
<td>Marlon Castillo</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
|
@ -190,8 +190,8 @@ Now take a look at your repo. Don't forget to carefully look at the generated RE
|
||||||
|
|
||||||
For local development, see the following:
|
For local development, see the following:
|
||||||
|
|
||||||
- [Developing locally](http://cookiecutter-django.readthedocs.io/en/latest/developing-locally.html)
|
- [Developing locally](https://cookiecutter-django.readthedocs.io/en/latest/2-local-development/developing-locally.html)
|
||||||
- [Developing locally using docker](http://cookiecutter-django.readthedocs.io/en/latest/developing-locally-docker.html)
|
- [Developing locally using docker](https://cookiecutter-django.readthedocs.io/en/latest/2-local-development/developing-locally-docker.html)
|
||||||
|
|
||||||
## Community
|
## Community
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,6 @@ The following table lists settings and their defaults for third-party applicatio
|
||||||
======================================= =========================== ============================================== ======================================================================
|
======================================= =========================== ============================================== ======================================================================
|
||||||
Environment Variable Django Setting Development Default Production Default
|
Environment Variable Django Setting Development Default Production Default
|
||||||
======================================= =========================== ============================================== ======================================================================
|
======================================= =========================== ============================================== ======================================================================
|
||||||
CELERY_BROKER_URL CELERY_BROKER_URL auto w/ Docker; raises error w/o raises error
|
|
||||||
DJANGO_AWS_ACCESS_KEY_ID AWS_ACCESS_KEY_ID n/a raises error
|
DJANGO_AWS_ACCESS_KEY_ID AWS_ACCESS_KEY_ID n/a raises error
|
||||||
DJANGO_AWS_SECRET_ACCESS_KEY AWS_SECRET_ACCESS_KEY n/a raises error
|
DJANGO_AWS_SECRET_ACCESS_KEY AWS_SECRET_ACCESS_KEY n/a raises error
|
||||||
DJANGO_AWS_STORAGE_BUCKET_NAME AWS_STORAGE_BUCKET_NAME n/a raises error
|
DJANGO_AWS_STORAGE_BUCKET_NAME AWS_STORAGE_BUCKET_NAME n/a raises error
|
||||||
|
|
|
@ -55,8 +55,6 @@ First things first.
|
||||||
#. Set the environment variables for your database(s): ::
|
#. Set the environment variables for your database(s): ::
|
||||||
|
|
||||||
$ export DATABASE_URL=postgres://postgres:<password>@127.0.0.1:5432/<DB name given to createdb>
|
$ export DATABASE_URL=postgres://postgres:<password>@127.0.0.1:5432/<DB name given to createdb>
|
||||||
# Optional: set broker URL if using Celery
|
|
||||||
$ export CELERY_BROKER_URL=redis://localhost:6379/0
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
|
|
@ -86,8 +86,6 @@ it's in the ``Procfile``, but is turned off by default:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# Set the broker URL to Redis
|
|
||||||
heroku config:set CELERY_BROKER_URL=`heroku config:get REDIS_URL`
|
|
||||||
# Scale dyno to 1 instance
|
# Scale dyno to 1 instance
|
||||||
heroku ps:scale worker=1
|
heroku ps:scale worker=1
|
||||||
|
|
||||||
|
|
|
@ -91,6 +91,10 @@ def remove_docker_files():
|
||||||
os.remove(os.path.join(".idea", "runConfigurations", file_name))
|
os.remove(os.path.join(".idea", "runConfigurations", file_name))
|
||||||
|
|
||||||
|
|
||||||
|
def remove_nginx_docker_files():
|
||||||
|
shutil.rmtree(os.path.join("compose", "production", "nginx"))
|
||||||
|
|
||||||
|
|
||||||
def remove_utility_files():
|
def remove_utility_files():
|
||||||
shutil.rmtree("utility")
|
shutil.rmtree("utility")
|
||||||
|
|
||||||
|
@ -457,6 +461,8 @@ def main():
|
||||||
|
|
||||||
if "{{ cookiecutter.use_docker }}".lower() == "y":
|
if "{{ cookiecutter.use_docker }}".lower() == "y":
|
||||||
remove_utility_files()
|
remove_utility_files()
|
||||||
|
if "{{ cookiecutter.cloud_provider }}".lower() != "none":
|
||||||
|
remove_nginx_docker_files()
|
||||||
else:
|
else:
|
||||||
remove_docker_files()
|
remove_docker_files()
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[project]
|
[project]
|
||||||
name = "cookiecutter-django"
|
name = "cookiecutter-django"
|
||||||
version = "2024.10.09"
|
version = "2024.10.26"
|
||||||
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 = [
|
||||||
|
@ -14,7 +14,7 @@ license = { text = "BSD" }
|
||||||
authors = [
|
authors = [
|
||||||
{ name = "Daniel Roy Greenfeld", email = "pydanny@gmail.com" },
|
{ name = "Daniel Roy Greenfeld", email = "pydanny@gmail.com" },
|
||||||
]
|
]
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12,<3.13"
|
||||||
classifiers = [
|
classifiers = [
|
||||||
"Development Status :: 4 - Beta",
|
"Development Status :: 4 - Beta",
|
||||||
"Environment :: Console",
|
"Environment :: Console",
|
||||||
|
@ -43,7 +43,7 @@ dependencies = [
|
||||||
"pytest-xdist==3.6.1",
|
"pytest-xdist==3.6.1",
|
||||||
"pyyaml==6.0.2",
|
"pyyaml==6.0.2",
|
||||||
"requests==2.32.3",
|
"requests==2.32.3",
|
||||||
"ruff==0.6.9",
|
"ruff==0.7",
|
||||||
"sh==2.0.7; sys_platform!='win23'",
|
"sh==2.0.7; sys_platform!='win23'",
|
||||||
"tox==4.21.2",
|
"tox==4.21.2",
|
||||||
"tox-uv>=1.11.2",
|
"tox-uv>=1.11.2",
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
import subprocess
|
||||||
from collections.abc import Iterable
|
from collections.abc import Iterable
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
@ -51,6 +52,9 @@ def main() -> None:
|
||||||
update_version(setup_py_path, release)
|
update_version(setup_py_path, release)
|
||||||
print(f"Updated version in {setup_py_path}")
|
print(f"Updated version in {setup_py_path}")
|
||||||
|
|
||||||
|
# Run uv lock
|
||||||
|
subprocess.run(["uv", "lock"], cwd=ROOT)
|
||||||
|
|
||||||
# Commit changes, create tag and push
|
# Commit changes, create tag and push
|
||||||
update_git_repo([changelog_path, setup_py_path], release)
|
update_git_repo([changelog_path, setup_py_path], release)
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,6 @@ docker compose -f docker-compose.local.yml run django python manage.py makemessa
|
||||||
docker compose -f docker-compose.local.yml run \
|
docker compose -f docker-compose.local.yml run \
|
||||||
-e DJANGO_SECRET_KEY="$(openssl rand -base64 64)" \
|
-e DJANGO_SECRET_KEY="$(openssl rand -base64 64)" \
|
||||||
-e REDIS_URL=redis://redis:6379/0 \
|
-e REDIS_URL=redis://redis:6379/0 \
|
||||||
-e CELERY_BROKER_URL=redis://redis:6379/0 \
|
|
||||||
-e DJANGO_AWS_ACCESS_KEY_ID=x \
|
-e DJANGO_AWS_ACCESS_KEY_ID=x \
|
||||||
-e DJANGO_AWS_SECRET_ACCESS_KEY=x \
|
-e DJANGO_AWS_SECRET_ACCESS_KEY=x \
|
||||||
-e DJANGO_AWS_STORAGE_BUCKET_NAME=x \
|
-e DJANGO_AWS_STORAGE_BUCKET_NAME=x \
|
||||||
|
|
48
uv.lock
48
uv.lock
|
@ -1,5 +1,5 @@
|
||||||
version = 1
|
version = 1
|
||||||
requires-python = ">=3.12"
|
requires-python = "==3.12.*"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "alabaster"
|
name = "alabaster"
|
||||||
|
@ -192,7 +192,7 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookiecutter-django"
|
name = "cookiecutter-django"
|
||||||
version = "2024.10.5"
|
version = "2024.10.15"
|
||||||
source = { virtual = "." }
|
source = { virtual = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "binaryornot" },
|
{ name = "binaryornot" },
|
||||||
|
@ -231,7 +231,7 @@ requires-dist = [
|
||||||
{ name = "djlint", specifier = "==1.35.2" },
|
{ name = "djlint", specifier = "==1.35.2" },
|
||||||
{ name = "gitpython", specifier = "==3.1.43" },
|
{ name = "gitpython", specifier = "==3.1.43" },
|
||||||
{ name = "jinja2", specifier = "==3.1.4" },
|
{ name = "jinja2", specifier = "==3.1.4" },
|
||||||
{ name = "myst-parser", marker = "extra == 'docs'", specifier = ">=4.0.0" },
|
{ name = "myst-parser", marker = "extra == 'docs'", specifier = ">=4" },
|
||||||
{ name = "pre-commit", specifier = "==3.8" },
|
{ name = "pre-commit", specifier = "==3.8" },
|
||||||
{ name = "pygithub", specifier = "==2.4" },
|
{ name = "pygithub", specifier = "==2.4" },
|
||||||
{ name = "pytest", specifier = "==8.3.3" },
|
{ name = "pytest", specifier = "==8.3.3" },
|
||||||
|
@ -240,11 +240,11 @@ requires-dist = [
|
||||||
{ name = "pytest-xdist", specifier = "==3.6.1" },
|
{ name = "pytest-xdist", specifier = "==3.6.1" },
|
||||||
{ name = "pyyaml", specifier = "==6.0.2" },
|
{ name = "pyyaml", specifier = "==6.0.2" },
|
||||||
{ name = "requests", specifier = "==2.32.3" },
|
{ name = "requests", specifier = "==2.32.3" },
|
||||||
{ name = "ruff", specifier = "==0.6.9" },
|
{ name = "ruff", specifier = "==0.7.0" },
|
||||||
{ name = "sh", marker = "sys_platform != 'win23'", specifier = "==2.0.7" },
|
{ name = "sh", marker = "sys_platform != 'win23'", specifier = "==2.0.7" },
|
||||||
{ name = "sphinx", marker = "extra == 'docs'", specifier = ">=8.0.2" },
|
{ name = "sphinx", marker = "extra == 'docs'", specifier = ">=8.0.2" },
|
||||||
{ name = "sphinx-autobuild", marker = "extra == 'docs'", specifier = ">=2024.10.3" },
|
{ name = "sphinx-autobuild", marker = "extra == 'docs'", specifier = ">=2024.10.3" },
|
||||||
{ name = "sphinx-rtd-theme", marker = "extra == 'docs'", specifier = ">=3.0.0" },
|
{ name = "sphinx-rtd-theme", marker = "extra == 'docs'", specifier = ">=3" },
|
||||||
{ name = "tox", specifier = "==4.21.2" },
|
{ name = "tox", specifier = "==4.21.2" },
|
||||||
{ name = "tox-uv", specifier = ">=1.11.2" },
|
{ name = "tox-uv", specifier = ">=1.11.2" },
|
||||||
]
|
]
|
||||||
|
@ -861,27 +861,27 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruff"
|
name = "ruff"
|
||||||
version = "0.6.9"
|
version = "0.7.0"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/26/0d/6148a48dab5662ca1d5a93b7c0d13c03abd3cc7e2f35db08410e47cef15d/ruff-0.6.9.tar.gz", hash = "sha256:b076ef717a8e5bc819514ee1d602bbdca5b4420ae13a9cf61a0c0a4f53a2baa2", size = 3095355 }
|
sdist = { url = "https://files.pythonhosted.org/packages/2c/c7/f3367d1da5d568192968c5c9e7f3d51fb317b9ac04828493b23d8fce8ce6/ruff-0.7.0.tar.gz", hash = "sha256:47a86360cf62d9cd53ebfb0b5eb0e882193fc191c6d717e8bef4462bc3b9ea2b", size = 3146645 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/6e/8f/f7a0a0ef1818662efb32ed6df16078c95da7a0a3248d64c2410c1e27799f/ruff-0.6.9-py3-none-linux_armv6l.whl", hash = "sha256:064df58d84ccc0ac0fcd63bc3090b251d90e2a372558c0f057c3f75ed73e1ccd", size = 10440526 },
|
{ url = "https://files.pythonhosted.org/packages/48/59/a0275a0913f3539498d116046dd679cd657fe3b7caf5afe1733319414932/ruff-0.7.0-py3-none-linux_armv6l.whl", hash = "sha256:0cdf20c2b6ff98e37df47b2b0bd3a34aaa155f59a11182c1303cce79be715628", size = 10434007 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/8b/69/b179a5faf936a9e2ab45bb412a668e4661eded964ccfa19d533f29463ef6/ruff-0.6.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:140d4b5c9f5fc7a7b074908a78ab8d384dd7f6510402267bc76c37195c02a7ec", size = 10034612 },
|
{ url = "https://files.pythonhosted.org/packages/cd/94/da0ba5f956d04c90dd899209904210600009dcda039ce840d83eb4298c7d/ruff-0.7.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:496494d350c7fdeb36ca4ef1c9f21d80d182423718782222c29b3e72b3512737", size = 10048066 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/c7/ef/fd1b4be979c579d191eeac37b5cfc0ec906de72c8bcd8595e2c81bb700c1/ruff-0.6.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:53fd8ca5e82bdee8da7f506d7b03a261f24cd43d090ea9db9a1dc59d9313914c", size = 9706197 },
|
{ url = "https://files.pythonhosted.org/packages/57/1d/e5cc149ecc46e4f203403a79ccd170fad52d316f98b87d0f63b1945567db/ruff-0.7.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:214b88498684e20b6b2b8852c01d50f0651f3cc6118dfa113b4def9f14faaf06", size = 9711389 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/29/61/b376d775deb5851cb48d893c568b511a6d3625ef2c129ad5698b64fb523c/ruff-0.6.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645d7d8761f915e48a00d4ecc3686969761df69fb561dd914a773c1a8266e14e", size = 10751855 },
|
{ url = "https://files.pythonhosted.org/packages/05/67/fb7ea2c869c539725a16c5bc294e9aa34f8b1b6fe702f1d173a5da517c2b/ruff-0.7.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630fce3fefe9844e91ea5bbf7ceadab4f9981f42b704fae011bb8efcaf5d84be", size = 10755174 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/13/d7/def9e5f446d75b9a9c19b24231a3a658c075d79163b08582e56fa5dcfa38/ruff-0.6.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eae02b700763e3847595b9d2891488989cac00214da7f845f4bcf2989007d577", size = 10200889 },
|
{ url = "https://files.pythonhosted.org/packages/5f/f0/13703bc50536a0613ea3dce991116e5f0917a1f05528c6ab738b33c08d3f/ruff-0.7.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:211d877674e9373d4bb0f1c80f97a0201c61bcd1e9d045b6e9726adc42c156aa", size = 10196040 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/6c/d6/7f34160818bcb6e84ce293a5966cba368d9112ff0289b273fbb689046047/ruff-0.6.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d5ccc9e58112441de8ad4b29dcb7a86dc25c5f770e3c06a9d57e0e5eba48829", size = 11038678 },
|
{ url = "https://files.pythonhosted.org/packages/99/c1/77b04ab20324ab03d333522ee55fb0f1c38e3ca0d326b4905f82ce6b6c70/ruff-0.7.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:194d6c46c98c73949a106425ed40a576f52291c12bc21399eb8f13a0f7073495", size = 11033684 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/13/34/a40ff8ae62fb1b26fb8e6fa7e64bc0e0a834b47317880de22edd6bfb54fb/ruff-0.6.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:417b81aa1c9b60b2f8edc463c58363075412866ae4e2b9ab0f690dc1e87ac1b5", size = 11808682 },
|
{ url = "https://files.pythonhosted.org/packages/f2/97/f463334dc4efeea3551cd109163df15561c18a1c3ec13d51643740fd36ba/ruff-0.7.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:82c2579b82b9973a110fab281860403b397c08c403de92de19568f32f7178598", size = 11803700 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/2e/6d/25a4386ae4009fc798bd10ba48c942d1b0b3e459b5403028f1214b6dd161/ruff-0.6.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3c866b631f5fbce896a74a6e4383407ba7507b815ccc52bcedabb6810fdb3ef7", size = 11330446 },
|
{ url = "https://files.pythonhosted.org/packages/b4/f8/a31d40c4bb92933d376a53e7c5d0245d9b27841357e4820e96d38f54b480/ruff-0.7.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9af971fe85dcd5eaed8f585ddbc6bdbe8c217fb8fcf510ea6bca5bdfff56040e", size = 11347848 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/f7/f6/bdf891a9200d692c94ebcd06ae5a2fa5894e522f2c66c2a12dd5d8cb2654/ruff-0.6.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b118afbb3202f5911486ad52da86d1d52305b59e7ef2031cea3425142b97d6f", size = 12483048 },
|
{ url = "https://files.pythonhosted.org/packages/83/62/0c133b35ddaf91c65c30a56718b80bdef36bfffc35684d29e3a4878e0ea3/ruff-0.7.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b641c7f16939b7d24b7bfc0be4102c56562a18281f84f635604e8a6989948914", size = 12480632 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/a7/86/96f4252f41840e325b3fa6c48297e661abb9f564bd7dcc0572398c8daa42/ruff-0.6.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a67267654edc23c97335586774790cde402fb6bbdb3c2314f1fc087dee320bfa", size = 10936855 },
|
{ url = "https://files.pythonhosted.org/packages/46/96/464058dd1d980014fb5aa0a1254e78799efb3096fc7a4823cd66a1621276/ruff-0.7.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d71672336e46b34e0c90a790afeac8a31954fd42872c1f6adaea1dff76fd44f9", size = 10941919 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/45/87/801a52d26c8dbf73424238e9908b9ceac430d903c8ef35eab1b44fcfa2bd/ruff-0.6.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3ef0cc774b00fec123f635ce5c547dac263f6ee9fb9cc83437c5904183b55ceb", size = 10713007 },
|
{ url = "https://files.pythonhosted.org/packages/a0/f7/bda37ec77986a435dde44e1f59374aebf4282a5fa9cf17735315b847141f/ruff-0.7.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ab7d98c7eed355166f367597e513a6c82408df4181a937628dbec79abb2a1fe4", size = 10745519 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/be/27/6f7161d90320a389695e32b6ebdbfbedde28ccbf52451e4b723d7ce744ad/ruff-0.6.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:12edd2af0c60fa61ff31cefb90aef4288ac4d372b4962c2864aeea3a1a2460c0", size = 10274594 },
|
{ url = "https://files.pythonhosted.org/packages/c2/33/5f77fc317027c057b61a848020a47442a1cbf12e592df0e41e21f4d0f3bd/ruff-0.7.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1eb54986f770f49edb14f71d33312d79e00e629a57387382200b1ef12d6a4ef9", size = 10284872 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/00/52/dc311775e7b5f5b19831563cb1572ecce63e62681bccc609867711fae317/ruff-0.6.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:55bb01caeaf3a60b2b2bba07308a02fca6ab56233302406ed5245180a05c5625", size = 10608024 },
|
{ url = "https://files.pythonhosted.org/packages/ff/50/98aec292bc9537f640b8d031c55f3414bf15b6ed13b3e943fed75ac927b9/ruff-0.7.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:dc452ba6f2bb9cf8726a84aa877061a2462afe9ae0ea1d411c53d226661c601d", size = 10600334 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/98/b6/be0a1ddcbac65a30c985cf7224c4fce786ba2c51e7efeb5178fe410ed3cf/ruff-0.6.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:925d26471fa24b0ce5a6cdfab1bb526fb4159952385f386bdcc643813d472039", size = 10982085 },
|
{ url = "https://files.pythonhosted.org/packages/f2/85/12607ae3201423a179b8cfadc7cb1e57d02cd0135e45bd0445acb4cef327/ruff-0.7.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:4b406c2dce5be9bad59f2de26139a86017a517e6bcd2688da515481c05a2cb11", size = 11017333 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/bb/a4/c84bc13d0b573cf7bb7d17b16d6d29f84267c92d79b2f478d4ce322e8e72/ruff-0.6.9-py3-none-win32.whl", hash = "sha256:eb61ec9bdb2506cffd492e05ac40e5bc6284873aceb605503d8494180d6fc84d", size = 8522088 },
|
{ url = "https://files.pythonhosted.org/packages/d4/7f/3b85a56879e705d5f46ec14daf8a439fca05c3081720fe3dc3209100922d/ruff-0.7.0-py3-none-win32.whl", hash = "sha256:f6c968509f767776f524a8430426539587d5ec5c662f6addb6aa25bc2e8195ec", size = 8570962 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/74/be/fc352bd8ca40daae8740b54c1c3e905a7efe470d420a268cd62150248c91/ruff-0.6.9-py3-none-win_amd64.whl", hash = "sha256:785d31851c1ae91f45b3d8fe23b8ae4b5170089021fbb42402d811135f0b7117", size = 9359275 },
|
{ url = "https://files.pythonhosted.org/packages/39/9f/c5ee2b40d377354dabcc23cff47eb299de4b4d06d345068f8f8cc1eadac8/ruff-0.7.0-py3-none-win_amd64.whl", hash = "sha256:ff4aabfbaaba880e85d394603b9e75d32b0693152e16fa659a3064a85df7fce2", size = 9365544 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/3e/14/fd026bc74ded05e2351681545a5f626e78ef831f8edce064d61acd2e6ec7/ruff-0.6.9-py3-none-win_arm64.whl", hash = "sha256:a9641e31476d601f83cd602608739a0840e348bda93fec9f1ee816f8b6798b93", size = 8679879 },
|
{ url = "https://files.pythonhosted.org/packages/89/8b/ee1509f60148cecba644aa718f6633216784302458340311898aaf0b1bed/ruff-0.7.0-py3-none-win_arm64.whl", hash = "sha256:10842f69c245e78d6adec7e1db0a7d9ddc2fff0621d730e61657b64fa36f207e", size = 8695763 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
|
@ -7,7 +7,7 @@ environment:
|
||||||
POSTGRES_DB: 'test_{{ cookiecutter.project_slug }}'
|
POSTGRES_DB: 'test_{{ cookiecutter.project_slug }}'
|
||||||
POSTGRES_HOST_AUTH_METHOD: trust
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
{%- if cookiecutter.use_celery == 'y' %}
|
{%- if cookiecutter.use_celery == 'y' %}
|
||||||
CELERY_BROKER_URL: 'redis://redis:6379/0'
|
REDIS_URL: 'redis://redis:6379/0'
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
|
@ -57,7 +57,7 @@ jobs:
|
||||||
|
|
||||||
env:
|
env:
|
||||||
{%- if cookiecutter.use_celery == 'y' %}
|
{%- if cookiecutter.use_celery == 'y' %}
|
||||||
CELERY_BROKER_URL: 'redis://localhost:6379/0'
|
REDIS_URL: 'redis://localhost:6379/0'
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
# postgres://user:password@host:port/database
|
# postgres://user:password@host:port/database
|
||||||
DATABASE_URL: 'postgres://postgres:postgres@localhost:5432/postgres'
|
DATABASE_URL: 'postgres://postgres:postgres@localhost:5432/postgres'
|
||||||
|
|
|
@ -8,7 +8,7 @@ variables:
|
||||||
POSTGRES_DB: 'test_{{ cookiecutter.project_slug }}'
|
POSTGRES_DB: 'test_{{ cookiecutter.project_slug }}'
|
||||||
POSTGRES_HOST_AUTH_METHOD: trust
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
{%- if cookiecutter.use_celery == 'y' %}
|
{%- if cookiecutter.use_celery == 'y' %}
|
||||||
CELERY_BROKER_URL: 'redis://redis:6379/0'
|
REDIS_URL: 'redis://redis:6379/0'
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
precommit:
|
precommit:
|
||||||
|
|
|
@ -32,14 +32,14 @@ repos:
|
||||||
exclude: '{{cookiecutter.project_slug}}/templates/'
|
exclude: '{{cookiecutter.project_slug}}/templates/'
|
||||||
|
|
||||||
- repo: https://github.com/adamchainz/django-upgrade
|
- repo: https://github.com/adamchainz/django-upgrade
|
||||||
rev: '1.21.0'
|
rev: '1.22.1'
|
||||||
hooks:
|
hooks:
|
||||||
- id: django-upgrade
|
- id: django-upgrade
|
||||||
args: ['--target-version', '5.0']
|
args: ['--target-version', '5.0']
|
||||||
|
|
||||||
# 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.9
|
rev: v0.7.1
|
||||||
hooks:
|
hooks:
|
||||||
# Linter
|
# Linter
|
||||||
- id: ruff
|
- id: ruff
|
||||||
|
|
|
@ -12,7 +12,7 @@ License: {{cookiecutter.open_source_license}}
|
||||||
|
|
||||||
## Settings
|
## Settings
|
||||||
|
|
||||||
Moved to [settings](http://cookiecutter-django.readthedocs.io/en/latest/settings.html).
|
Moved to [settings](https://cookiecutter-django.readthedocs.io/en/latest/1-getting-started/settings.html).
|
||||||
|
|
||||||
## Basic Commands
|
## Basic Commands
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ To run the tests, check your test coverage, and generate an HTML coverage report
|
||||||
|
|
||||||
### Live reloading and Sass CSS compilation
|
### Live reloading and Sass CSS compilation
|
||||||
|
|
||||||
Moved to [Live reloading and SASS compilation](https://cookiecutter-django.readthedocs.io/en/latest/developing-locally.html#sass-compilation-live-reloading).
|
Moved to [Live reloading and SASS compilation](https://cookiecutter-django.readthedocs.io/en/latest/2-local-development/developing-locally.html#using-webpack-or-gulp).
|
||||||
|
|
||||||
{%- if cookiecutter.use_celery == "y" %}
|
{%- if cookiecutter.use_celery == "y" %}
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ celery -A config.celery_app worker -B -l info
|
||||||
In development, it is often nice to be able to see emails that are being sent from your application. For that reason local SMTP server [Mailpit](https://github.com/axllent/mailpit) with a web interface is available as docker container.
|
In development, it is often nice to be able to see emails that are being sent from your application. For that reason local SMTP server [Mailpit](https://github.com/axllent/mailpit) with a web interface is available as docker container.
|
||||||
|
|
||||||
Container mailpit will start automatically when you will run all docker containers.
|
Container mailpit will start automatically when you will run all docker containers.
|
||||||
Please check [cookiecutter-django Docker documentation](http://cookiecutter-django.readthedocs.io/en/latest/deployment-with-docker.html) for more details how to start all containers.
|
Please check [cookiecutter-django Docker documentation](https://cookiecutter-django.readthedocs.io/en/latest/2-local-development/developing-locally-docker.html) for more details how to start all containers.
|
||||||
|
|
||||||
With Mailpit running, to view messages that are sent by your application, open your browser and go to `http://127.0.0.1:8025`
|
With Mailpit running, to view messages that are sent by your application, open your browser and go to `http://127.0.0.1:8025`
|
||||||
{%- else %}
|
{%- else %}
|
||||||
|
@ -130,14 +130,14 @@ The following details how to deploy this application.
|
||||||
|
|
||||||
### Heroku
|
### Heroku
|
||||||
|
|
||||||
See detailed [cookiecutter-django Heroku documentation](http://cookiecutter-django.readthedocs.io/en/latest/deployment-on-heroku.html).
|
See detailed [cookiecutter-django Heroku documentation](https://cookiecutter-django.readthedocs.io/en/latest/3-deployment/deployment-on-heroku.html).
|
||||||
|
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if cookiecutter.use_docker.lower() == "y" %}
|
{%- if cookiecutter.use_docker.lower() == "y" %}
|
||||||
|
|
||||||
### Docker
|
### Docker
|
||||||
|
|
||||||
See detailed [cookiecutter-django Docker documentation](http://cookiecutter-django.readthedocs.io/en/latest/deployment-with-docker.html).
|
See detailed [cookiecutter-django Docker documentation](https://cookiecutter-django.readthedocs.io/en/latest/3-deployment/deployment-with-docker.html).
|
||||||
|
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if cookiecutter.frontend_pipeline in ['Gulp', 'Webpack'] %}
|
{%- if cookiecutter.frontend_pipeline in ['Gulp', 'Webpack'] %}
|
||||||
|
|
|
@ -13,4 +13,4 @@ echo 'Starting flower'
|
||||||
|
|
||||||
exec watchfiles --filter python celery.__main__.main \
|
exec watchfiles --filter python celery.__main__.main \
|
||||||
--args \
|
--args \
|
||||||
"-A config.celery_app -b \"${CELERY_BROKER_URL}\" flower --basic_auth=\"${CELERY_FLOWER_USER}:${CELERY_FLOWER_PASSWORD}\""
|
"-A config.celery_app -b \"${REDIS_URL}\" flower --basic_auth=\"${CELERY_FLOWER_USER}:${CELERY_FLOWER_PASSWORD}\""
|
||||||
|
|
|
@ -37,8 +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 .
|
||||||
|
@ -70,6 +70,8 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
|
||||||
libpq-dev \
|
libpq-dev \
|
||||||
# Translations dependencies
|
# Translations dependencies
|
||||||
gettext \
|
gettext \
|
||||||
|
# entrypoint
|
||||||
|
wait-for-it \
|
||||||
# cleaning up unused files
|
# cleaning up unused files
|
||||||
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
|
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
@ -123,9 +125,6 @@ RUN chown -R django:django ${APP_HOME}
|
||||||
USER django
|
USER django
|
||||||
|
|
||||||
RUN DATABASE_URL="" \
|
RUN DATABASE_URL="" \
|
||||||
{%- if cookiecutter.use_celery == "y" %}
|
|
||||||
CELERY_BROKER_URL="" \
|
|
||||||
{%- endif %}
|
|
||||||
DJANGO_SETTINGS_MODULE="config.settings.test" \
|
DJANGO_SETTINGS_MODULE="config.settings.test" \
|
||||||
python manage.py compilemessages
|
python manage.py compilemessages
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,6 @@ echo 'Starting flower'
|
||||||
|
|
||||||
exec celery \
|
exec celery \
|
||||||
-A config.celery_app \
|
-A config.celery_app \
|
||||||
-b "${CELERY_BROKER_URL}" \
|
-b "${REDIS_URL}" \
|
||||||
flower \
|
flower \
|
||||||
--basic_auth="${CELERY_FLOWER_USER}:${CELERY_FLOWER_PASSWORD}"
|
--basic_auth="${CELERY_FLOWER_USER}:${CELERY_FLOWER_PASSWORD}"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
FROM docker.io/traefik:3.1.6
|
FROM docker.io/traefik:3.2.0
|
||||||
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
|
||||||
|
|
|
@ -284,6 +284,8 @@ LOGGING = {
|
||||||
"root": {"level": "INFO", "handlers": ["console"]},
|
"root": {"level": "INFO", "handlers": ["console"]},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
REDIS_URL = env("REDIS_URL", default="redis://{% if cookiecutter.use_docker == 'y' %}redis{%else%}localhost{% endif %}:6379/0")
|
||||||
|
|
||||||
{% if cookiecutter.use_celery == 'y' -%}
|
{% if cookiecutter.use_celery == 'y' -%}
|
||||||
# Celery
|
# Celery
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
@ -291,9 +293,9 @@ if USE_TZ:
|
||||||
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#std:setting-timezone
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#std:setting-timezone
|
||||||
CELERY_TIMEZONE = TIME_ZONE
|
CELERY_TIMEZONE = TIME_ZONE
|
||||||
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#std:setting-broker_url
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#std:setting-broker_url
|
||||||
CELERY_BROKER_URL = env("CELERY_BROKER_URL")
|
CELERY_BROKER_URL = REDIS_URL
|
||||||
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#std:setting-result_backend
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#std:setting-result_backend
|
||||||
CELERY_RESULT_BACKEND = CELERY_BROKER_URL
|
CELERY_RESULT_BACKEND = REDIS_URL
|
||||||
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#result-extended
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#result-extended
|
||||||
CELERY_RESULT_EXTENDED = True
|
CELERY_RESULT_EXTENDED = True
|
||||||
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#result-backend-always-retry
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#result-backend-always-retry
|
||||||
|
|
|
@ -16,6 +16,7 @@ from sentry_sdk.integrations.redis import RedisIntegration
|
||||||
from .base import * # noqa: F403
|
from .base import * # noqa: F403
|
||||||
from .base import DATABASES
|
from .base import DATABASES
|
||||||
from .base import INSTALLED_APPS
|
from .base import INSTALLED_APPS
|
||||||
|
from .base import REDIS_URL
|
||||||
{%- if cookiecutter.use_drf == "y" %}
|
{%- if cookiecutter.use_drf == "y" %}
|
||||||
from .base import SPECTACULAR_SETTINGS
|
from .base import SPECTACULAR_SETTINGS
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
@ -37,7 +38,7 @@ DATABASES["default"]["CONN_MAX_AGE"] = env.int("CONN_MAX_AGE", default=60)
|
||||||
CACHES = {
|
CACHES = {
|
||||||
"default": {
|
"default": {
|
||||||
"BACKEND": "django_redis.cache.RedisCache",
|
"BACKEND": "django_redis.cache.RedisCache",
|
||||||
"LOCATION": env("REDIS_URL"),
|
"LOCATION": REDIS_URL,
|
||||||
"OPTIONS": {
|
"OPTIONS": {
|
||||||
"CLIENT_CLASS": "django_redis.client.DefaultClient",
|
"CLIENT_CLASS": "django_redis.client.DefaultClient",
|
||||||
# Mimicing memcache behavior.
|
# Mimicing memcache behavior.
|
||||||
|
@ -170,7 +171,7 @@ STORAGES = {
|
||||||
"BACKEND": "storages.backends.azure_storage.AzureStorage",
|
"BACKEND": "storages.backends.azure_storage.AzureStorage",
|
||||||
"OPTIONS": {
|
"OPTIONS": {
|
||||||
"location": "media",
|
"location": "media",
|
||||||
"file_overwrite": False,
|
"overwrite_files": False,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{%- if cookiecutter.use_whitenoise == 'y' %}
|
{%- if cookiecutter.use_whitenoise == 'y' %}
|
||||||
|
@ -323,7 +324,7 @@ COMPRESS_FILTERS = {
|
||||||
"js": ["compressor.filters.jsmin.JSMinFilter"],
|
"js": ["compressor.filters.jsmin.JSMinFilter"],
|
||||||
}
|
}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{%- if cookiecutter.use_whitenoise == 'n' -%}
|
{%- if cookiecutter.use_whitenoise == 'n' and cookiecutter.cloud_provider in ('AWS', 'GCP') -%}
|
||||||
# Collectfasta
|
# Collectfasta
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# https://github.com/jasongi/collectfasta#installation
|
# https://github.com/jasongi/collectfasta#installation
|
||||||
|
|
|
@ -26,9 +26,6 @@ else:
|
||||||
sys.path.insert(0, os.path.abspath(".."))
|
sys.path.insert(0, os.path.abspath(".."))
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
os.environ["DATABASE_URL"] = "sqlite:///readthedocs.db"
|
os.environ["DATABASE_URL"] = "sqlite:///readthedocs.db"
|
||||||
{%- if cookiecutter.use_celery == 'y' %}
|
|
||||||
os.environ["CELERY_BROKER_URL"] = os.getenv("REDIS_URL", "redis://redis:6379")
|
|
||||||
{%- endif %}
|
|
||||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.local")
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.local")
|
||||||
django.setup()
|
django.setup()
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
python-slugify==8.0.4 # https://github.com/un33k/python-slugify
|
python-slugify==8.0.4 # https://github.com/un33k/python-slugify
|
||||||
Pillow==10.4.0 # https://github.com/python-pillow/Pillow
|
Pillow==11.0.0 # https://github.com/python-pillow/Pillow
|
||||||
{%- if cookiecutter.frontend_pipeline == 'Django Compressor' %}
|
{%- if cookiecutter.frontend_pipeline == 'Django Compressor' %}
|
||||||
{%- if cookiecutter.windows == 'y' and cookiecutter.use_docker == 'n' %}
|
{%- if cookiecutter.windows == 'y' and cookiecutter.use_docker == 'n' %}
|
||||||
rcssmin==1.1.2 --install-option="--without-c-extensions" # https://github.com/ndparker/rcssmin
|
rcssmin==1.1.2 --install-option="--without-c-extensions" # https://github.com/ndparker/rcssmin
|
||||||
|
@ -9,9 +9,9 @@ rcssmin==1.1.2 # https://github.com/ndparker/rcssmin
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
argon2-cffi==23.1.0 # https://github.com/hynek/argon2_cffi
|
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.8.1 # https://github.com/evansd/whitenoise
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
redis==5.1.1 # https://github.com/redis/redis-py
|
redis==5.2.0 # 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.31.0 # https://github.com/encode/uvicorn
|
uvicorn[standard]==0.32.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,7 +32,7 @@ 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]==65.0.2 # https://github.com/pennersr/django-allauth
|
django-allauth[mfa]==65.1.0 # 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.10 # 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' %}
|
||||||
|
@ -42,7 +42,7 @@ django-redis==5.4.0 # https://github.com/jazzband/django-redis
|
||||||
{%- if cookiecutter.use_drf == 'y' %}
|
{%- if cookiecutter.use_drf == 'y' %}
|
||||||
# Django REST Framework
|
# Django REST Framework
|
||||||
djangorestframework==3.15.2 # https://github.com/encode/django-rest-framework
|
djangorestframework==3.15.2 # https://github.com/encode/django-rest-framework
|
||||||
django-cors-headers==4.4.0 # https://github.com/adamchainz/django-cors-headers
|
django-cors-headers==4.6.0 # https://github.com/adamchainz/django-cors-headers
|
||||||
# DRF-spectacular for api documentation
|
# DRF-spectacular for api documentation
|
||||||
drf-spectacular==0.27.2 # https://github.com/tfranzel/drf-spectacular
|
drf-spectacular==0.27.2 # https://github.com/tfranzel/drf-spectacular
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
-r production.txt
|
-r production.txt
|
||||||
|
|
||||||
watchdog==4.0.2 # https://github.com/gorakhargosh/watchdog
|
Werkzeug[watchdog]==3.0.6 # 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.3 # https://github.com/psycopg/psycopg
|
psycopg[c]==3.2.3 # https://github.com/psycopg/psycopg
|
||||||
|
@ -14,8 +13,8 @@ watchfiles==0.24.0 # https://github.com/samuelcolvin/watchfiles
|
||||||
|
|
||||||
# Testing
|
# Testing
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
mypy==1.11.2 # https://github.com/python/mypy
|
mypy==1.13.0 # https://github.com/python/mypy
|
||||||
django-stubs[compatible-mypy]==5.1.0 # https://github.com/typeddjango/django-stubs
|
django-stubs[compatible-mypy]==5.1.1 # 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,14 +23,14 @@ djangorestframework-stubs==3.15.1 # https://github.com/typeddjango/djangorestfr
|
||||||
|
|
||||||
# Documentation
|
# Documentation
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
sphinx==8.0.2 # https://github.com/sphinx-doc/sphinx
|
sphinx==8.1.3 # https://github.com/sphinx-doc/sphinx
|
||||||
sphinx-autobuild==2024.10.3 # https://github.com/GaretJax/sphinx-autobuild
|
sphinx-autobuild==2024.10.3 # https://github.com/GaretJax/sphinx-autobuild
|
||||||
sphinx-rtd-theme==3.0.1 # https://pypi.org/project/sphinx-rtd-theme/
|
sphinx-rtd-theme==3.0.1 # https://pypi.org/project/sphinx-rtd-theme/
|
||||||
|
|
||||||
# Code quality
|
# Code quality
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
ruff==0.6.9 # https://github.com/astral-sh/ruff
|
ruff==0.7.1 # https://github.com/astral-sh/ruff
|
||||||
coverage==7.6.2 # https://github.com/nedbat/coveragepy
|
coverage==7.6.4 # 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==4.0.1 # https://github.com/pre-commit/pre-commit
|
pre-commit==4.0.1 # https://github.com/pre-commit/pre-commit
|
||||||
|
|
||||||
|
|
|
@ -4,11 +4,11 @@
|
||||||
|
|
||||||
gunicorn==23.0.0 # https://github.com/benoitc/gunicorn
|
gunicorn==23.0.0 # https://github.com/benoitc/gunicorn
|
||||||
psycopg[c]==3.2.3 # 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'and cookiecutter.cloud_provider in ('AWS', 'GCP') %}
|
||||||
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.16.0 # https://github.com/getsentry/sentry-python
|
sentry-sdk==2.17.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
|
||||||
|
|
23
{{cookiecutter.project_slug}}/utility/requirements-noble.apt
Normal file
23
{{cookiecutter.project_slug}}/utility/requirements-noble.apt
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
##basic build dependencies of various Django apps for Debian Bookworm 12.x
|
||||||
|
#build-essential metapackage install: make, gcc, g++,
|
||||||
|
build-essential
|
||||||
|
#required to translate
|
||||||
|
gettext
|
||||||
|
python3-dev
|
||||||
|
|
||||||
|
##shared dependencies of:
|
||||||
|
##Pillow, pylibmc
|
||||||
|
zlib1g-dev
|
||||||
|
|
||||||
|
##Postgresql and psycopg dependencies
|
||||||
|
libpq-dev
|
||||||
|
|
||||||
|
##Pillow dependencies
|
||||||
|
libtiff5-dev
|
||||||
|
libjpeg62-turbo-dev
|
||||||
|
libfreetype6-dev
|
||||||
|
liblcms2-dev
|
||||||
|
libwebp-dev
|
||||||
|
|
||||||
|
##django-extensions
|
||||||
|
libgraphviz-dev
|
Loading…
Reference in New Issue
Block a user