mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2025-04-12 21:04:12 +03:00
Compare commits
49 Commits
2025.03.17
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
846af52e73 | ||
|
9a3a3c686a | ||
|
8316bdc708 | ||
|
71f6c8ac09 | ||
|
22fb3141a1 | ||
|
458a21ee5c | ||
|
06c0cd2bf8 | ||
|
10d80a2ff9 | ||
|
6455b39c07 | ||
|
bf9ac68fed | ||
|
bb2d056a15 | ||
|
7ba49c9dc5 | ||
|
b4590cf8d9 | ||
|
8f1b488069 | ||
|
9085f602fa | ||
|
1e19553ded | ||
|
285e86bf71 | ||
|
7d8dabb813 | ||
|
b4f95514aa | ||
|
97c363bf9e | ||
|
6ea1f3c718 | ||
|
a802ac491c | ||
|
f1760fb835 | ||
|
5c5ec3a2ba | ||
|
dd24cdb036 | ||
|
0c1a349bfa | ||
|
54c70edf39 | ||
|
c550acd874 | ||
|
3e95ca6d8f | ||
|
9910a2bb91 | ||
|
179e4846a5 | ||
|
23747ef0f4 | ||
|
2504a349af | ||
|
31f7901060 | ||
|
28aa085015 | ||
|
8459a36369 | ||
|
7fbcc652f1 | ||
|
c04a8e39f9 | ||
|
9c68c8f3db | ||
|
e1a7d93d09 | ||
|
6d5fdb7e04 | ||
|
0822b46c2f | ||
|
1e22b0b987 | ||
|
29c70dfd0d | ||
|
1696a9d277 | ||
|
100271e7e1 | ||
|
b37fa9c79f | ||
|
3f3bc529ae | ||
|
e5c315bbc7 |
15
.github/contributors.json
vendored
15
.github/contributors.json
vendored
|
@ -1698,5 +1698,20 @@
|
|||
"name": "Kawsar Alam Foysal",
|
||||
"github_login": "iamfoysal",
|
||||
"twitter_username": ""
|
||||
},
|
||||
{
|
||||
"name": "Igor Jerosimić",
|
||||
"github_login": "igor-wl",
|
||||
"twitter_username": ""
|
||||
},
|
||||
{
|
||||
"name": "Pepa",
|
||||
"github_login": "07pepa",
|
||||
"twitter_username": ""
|
||||
},
|
||||
{
|
||||
"name": "Aidos Kanapyanov",
|
||||
"github_login": "aidoskanapyanov",
|
||||
"twitter_username": ""
|
||||
}
|
||||
]
|
4
.github/dependabot.yml
vendored
4
.github/dependabot.yml
vendored
|
@ -43,6 +43,10 @@ updates:
|
|||
- "version-update:semver-minor"
|
||||
labels:
|
||||
- "update"
|
||||
groups:
|
||||
docker-python:
|
||||
patterns:
|
||||
- "*"
|
||||
|
||||
- package-ecosystem: "docker"
|
||||
directories:
|
||||
|
|
1
.github/workflows/align-versions.yml
vendored
1
.github/workflows/align-versions.yml
vendored
|
@ -14,6 +14,7 @@ permissions:
|
|||
|
||||
jobs:
|
||||
run:
|
||||
if: ${{ github.actor == 'pyup-bot' }}
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GH_PAT: ${{ secrets.GH_PAT }}
|
||||
|
|
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
|
@ -81,7 +81,7 @@ jobs:
|
|||
ports:
|
||||
- 6379:6379
|
||||
postgres:
|
||||
image: postgres:12
|
||||
image: postgres:13
|
||||
ports:
|
||||
- 5432:5432
|
||||
env:
|
||||
|
|
|
@ -34,22 +34,22 @@ repos:
|
|||
exclude: hooks/
|
||||
|
||||
- repo: https://github.com/psf/black
|
||||
rev: 24.10.0
|
||||
rev: 25.1.0
|
||||
hooks:
|
||||
- id: black
|
||||
|
||||
- repo: https://github.com/PyCQA/isort
|
||||
rev: 5.13.2
|
||||
rev: 6.0.1
|
||||
hooks:
|
||||
- id: isort
|
||||
|
||||
- repo: https://github.com/PyCQA/flake8
|
||||
rev: 7.1.1
|
||||
rev: 7.2.0
|
||||
hooks:
|
||||
- id: flake8
|
||||
|
||||
- repo: https://github.com/tox-dev/pyproject-fmt
|
||||
rev: "v2.5.0"
|
||||
rev: "v2.5.1"
|
||||
hooks:
|
||||
- id: pyproject-fmt
|
||||
|
||||
|
|
121
CHANGELOG.md
121
CHANGELOG.md
|
@ -3,6 +3,127 @@ All enhancements and patches to Cookiecutter Django will be documented in this f
|
|||
|
||||
<!-- GENERATOR_PLACEHOLDER -->
|
||||
|
||||
## 2025.04.08
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update django-extensions to 4.0 ([#5770](https://github.com/cookiecutter/cookiecutter-django/pull/5770))
|
||||
|
||||
## 2025.04.05
|
||||
|
||||
|
||||
### Changed
|
||||
|
||||
- Add Docker build caching on GitHub Actions ([#5700](https://github.com/cookiecutter/cookiecutter-django/pull/5700))
|
||||
|
||||
- Pin Pillow and Sphinx to non yanked release ([#5765](https://github.com/cookiecutter/cookiecutter-django/pull/5765))
|
||||
|
||||
### Updated
|
||||
|
||||
- Update ruff to 0.11.4 ([#5767](https://github.com/cookiecutter/cookiecutter-django/pull/5767))
|
||||
|
||||
## 2025.04.03
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update django-anymail to 13.0 ([#5763](https://github.com/cookiecutter/cookiecutter-django/pull/5763))
|
||||
|
||||
- Update pytest-django to 4.11.1 ([#5762](https://github.com/cookiecutter/cookiecutter-django/pull/5762))
|
||||
|
||||
- Update ruff to 0.11.3 ([#5761](https://github.com/cookiecutter/cookiecutter-django/pull/5761))
|
||||
|
||||
- Update django-allauth to 65.7.0 ([#5760](https://github.com/cookiecutter/cookiecutter-django/pull/5760))
|
||||
|
||||
## 2025.04.02
|
||||
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix line endings for dotenv merge script on Windows ([#5754](https://github.com/cookiecutter/cookiecutter-django/pull/5754))
|
||||
|
||||
### Updated
|
||||
|
||||
- Update crispy-bootstrap5 to 2025.4 ([#5756](https://github.com/cookiecutter/cookiecutter-django/pull/5756))
|
||||
|
||||
- Update Django from 5.0 to 5.1 ([#5740](https://github.com/cookiecutter/cookiecutter-django/pull/5740))
|
||||
|
||||
- Update sentry-sdk to 2.25.1 ([#5757](https://github.com/cookiecutter/cookiecutter-django/pull/5757))
|
||||
|
||||
- Update django-storages to 1.14.6 ([#5753](https://github.com/cookiecutter/cookiecutter-django/pull/5753))
|
||||
|
||||
- Update pytest-django to 4.11.0 ([#5752](https://github.com/cookiecutter/cookiecutter-django/pull/5752))
|
||||
|
||||
## 2025.04.01
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update pillow to 11.2.0 ([#5751](https://github.com/cookiecutter/cookiecutter-django/pull/5751))
|
||||
|
||||
- Bump traefik from 3.3.4 to 3.3.5 ([#5750](https://github.com/cookiecutter/cookiecutter-django/pull/5750))
|
||||
|
||||
- Update celery to 5.5.0 ([#5748](https://github.com/cookiecutter/cookiecutter-django/pull/5748))
|
||||
|
||||
## 2025.03.31
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update django-allauth to 65.6.0 ([#5741](https://github.com/cookiecutter/cookiecutter-django/pull/5741))
|
||||
|
||||
- Update sentry-sdk to 2.25.0 ([#5747](https://github.com/cookiecutter/cookiecutter-django/pull/5747))
|
||||
|
||||
- Update coverage to 7.8.0 ([#5745](https://github.com/cookiecutter/cookiecutter-django/pull/5745))
|
||||
|
||||
## 2025.03.28
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update djangorestframework to 3.16.0 ([#5743](https://github.com/cookiecutter/cookiecutter-django/pull/5743))
|
||||
|
||||
- Update django-upgrade pre-commit hook to v1.24.0 ([#5742](https://github.com/cookiecutter/cookiecutter-django/pull/5742))
|
||||
|
||||
## 2025.03.24
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update django-allauth to 65.5.0 ([#5723](https://github.com/cookiecutter/cookiecutter-django/pull/5723))
|
||||
|
||||
- Update sentry-sdk to 2.24.1 ([#5739](https://github.com/cookiecutter/cookiecutter-django/pull/5739))
|
||||
|
||||
## 2025.03.22
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update coverage to 7.7.1 ([#5736](https://github.com/cookiecutter/cookiecutter-django/pull/5736))
|
||||
|
||||
## 2025.03.21
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update sentry-sdk to 2.24.0 ([#5734](https://github.com/cookiecutter/cookiecutter-django/pull/5734))
|
||||
|
||||
- Update django-debug-toolbar to 5.1.0 ([#5732](https://github.com/cookiecutter/cookiecutter-django/pull/5732))
|
||||
|
||||
- Update ruff to 0.11.2 ([#5735](https://github.com/cookiecutter/cookiecutter-django/pull/5735))
|
||||
|
||||
- Bump amazon/aws-cli from 2.24.0 to 2.25.0 ([#5733](https://github.com/cookiecutter/cookiecutter-django/pull/5733))
|
||||
|
||||
- Auto-update pre-commit hooks ([#5657](https://github.com/cookiecutter/cookiecutter-django/pull/5657))
|
||||
|
||||
## 2025.03.19
|
||||
|
||||
|
||||
### Updated
|
||||
|
||||
- Update pre-commit to 4.2.0 ([#5730](https://github.com/cookiecutter/cookiecutter-django/pull/5730))
|
||||
|
||||
## 2025.03.17
|
||||
|
||||
|
||||
|
|
|
@ -201,6 +201,13 @@ Listed in alphabetical order.
|
|||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Aidos Kanapyanov</td>
|
||||
<td>
|
||||
<a href="https://github.com/aidoskanapyanov">aidoskanapyanov</a>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Alan Cyment</td>
|
||||
<td>
|
||||
|
@ -1104,6 +1111,13 @@ Listed in alphabetical order.
|
|||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Igor Jerosimić</td>
|
||||
<td>
|
||||
<a href="https://github.com/igor-wl">igor-wl</a>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Imran Rahman</td>
|
||||
<td>
|
||||
|
@ -1874,6 +1888,13 @@ Listed in alphabetical order.
|
|||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Pepa</td>
|
||||
<td>
|
||||
<a href="https://github.com/07pepa">07pepa</a>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Peter Bittner</td>
|
||||
<td>
|
||||
|
|
|
@ -19,7 +19,7 @@ production-ready Django projects quickly.
|
|||
|
||||
## Features
|
||||
|
||||
- For Django 5.0
|
||||
- For Django 5.1
|
||||
- Works with Python 3.12
|
||||
- Renders Django projects with 100% starting test coverage
|
||||
- Twitter [Bootstrap](https://github.com/twbs/bootstrap) v5
|
||||
|
@ -51,7 +51,7 @@ _These features can be enabled during initial project setup._
|
|||
## Constraints
|
||||
|
||||
- Only maintained 3rd party libraries are used.
|
||||
- Uses PostgreSQL everywhere: 12 - 16 ([MySQL fork](https://github.com/mabdullahadeel/cookiecutter-django-mysql) also available).
|
||||
- Uses PostgreSQL everywhere: 13 - 16 ([MySQL fork](https://github.com/mabdullahadeel/cookiecutter-django-mysql) also available).
|
||||
- Environment variables for configuration (This won't work with Apache/mod_wsgi).
|
||||
|
||||
## Support this Project!
|
||||
|
@ -133,8 +133,7 @@ Answer the prompts with your own desired [options](http://cookiecutter-django.re
|
|||
2 - 15
|
||||
3 - 14
|
||||
4 - 13
|
||||
5 - 12
|
||||
Choose from 1, 2, 3, 4, 5 [1]: 1
|
||||
Choose from 1, 2, 3, 4 [1]: 1
|
||||
Select cloud_provider:
|
||||
1 - AWS
|
||||
2 - GCP
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
"windows": "n",
|
||||
"editor": ["None", "PyCharm", "VS Code"],
|
||||
"use_docker": "n",
|
||||
"postgresql_version": ["16", "15", "14", "13", "12"],
|
||||
"postgresql_version": ["16", "15", "14", "13"],
|
||||
"cloud_provider": ["AWS", "GCP", "Azure", "None"],
|
||||
"mail_service": [
|
||||
"Mailgun",
|
||||
|
|
|
@ -70,7 +70,6 @@ postgresql_version:
|
|||
2. 15
|
||||
3. 14
|
||||
4. 13
|
||||
5. 12
|
||||
|
||||
cloud_provider:
|
||||
Select a cloud provider for static & media files. The choices are:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[project]
|
||||
name = "cookiecutter-django"
|
||||
version = "2025.03.17"
|
||||
version = "2025.04.08"
|
||||
description = "A Cookiecutter template for creating production-ready Django projects quickly."
|
||||
readme = "README.md"
|
||||
keywords = [
|
||||
|
@ -43,7 +43,7 @@ dependencies = [
|
|||
"pytest-xdist==3.6.1",
|
||||
"pyyaml==6.0.2",
|
||||
"requests==2.32.3",
|
||||
"ruff==0.11.0",
|
||||
"ruff==0.11.4",
|
||||
"sh==2.1; sys_platform!='win23'",
|
||||
"tox==4.23.2",
|
||||
"tox-uv>=1.17",
|
||||
|
|
|
@ -63,7 +63,6 @@ SUPPORTED_COMBINATIONS = [
|
|||
{"postgresql_version": "15"},
|
||||
{"postgresql_version": "14"},
|
||||
{"postgresql_version": "13"},
|
||||
{"postgresql_version": "12"},
|
||||
{"cloud_provider": "AWS", "use_whitenoise": "y"},
|
||||
{"cloud_provider": "AWS", "use_whitenoise": "n"},
|
||||
{"cloud_provider": "GCP", "use_whitenoise": "y"},
|
||||
|
|
42
uv.lock
42
uv.lock
|
@ -182,7 +182,7 @@ wheels = [
|
|||
|
||||
[[package]]
|
||||
name = "cookiecutter-django"
|
||||
version = "2025.3.17"
|
||||
version = "2025.4.8"
|
||||
source = { virtual = "." }
|
||||
dependencies = [
|
||||
{ name = "binaryornot" },
|
||||
|
@ -229,7 +229,7 @@ requires-dist = [
|
|||
{ name = "pytest-xdist", specifier = "==3.6.1" },
|
||||
{ name = "pyyaml", specifier = "==6.0.2" },
|
||||
{ name = "requests", specifier = "==2.32.3" },
|
||||
{ name = "ruff", specifier = "==0.11.0" },
|
||||
{ name = "ruff", specifier = "==0.11.4" },
|
||||
{ name = "sh", marker = "sys_platform != 'win23'", specifier = "==2.1" },
|
||||
{ name = "tox", specifier = "==4.23.2" },
|
||||
{ name = "tox-uv", specifier = ">=1.17" },
|
||||
|
@ -830,27 +830,27 @@ wheels = [
|
|||
|
||||
[[package]]
|
||||
name = "ruff"
|
||||
version = "0.11.0"
|
||||
version = "0.11.4"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/77/2b/7ca27e854d92df5e681e6527dc0f9254c9dc06c8408317893cf96c851cdd/ruff-0.11.0.tar.gz", hash = "sha256:e55c620690a4a7ee6f1cccb256ec2157dc597d109400ae75bbf944fc9d6462e2", size = 3799407 }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/e8/5b/3ae20f89777115944e89c2d8c2e795dcc5b9e04052f76d5347e35e0da66e/ruff-0.11.4.tar.gz", hash = "sha256:f45bd2fb1a56a5a85fae3b95add03fb185a0b30cf47f5edc92aa0355ca1d7407", size = 3933063 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/48/40/3d0340a9e5edc77d37852c0cd98c5985a5a8081fc3befaeb2ae90aaafd2b/ruff-0.11.0-py3-none-linux_armv6l.whl", hash = "sha256:dc67e32bc3b29557513eb7eeabb23efdb25753684b913bebb8a0c62495095acb", size = 10098158 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ec/a9/d8f5abb3b87b973b007649ac7bf63665a05b2ae2b2af39217b09f52abbbf/ruff-0.11.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38c23fd9bdec4eb437b4c1e3595905a0a8edfccd63a790f818b28c78fe345639", size = 10879071 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ab/62/aaa198614c6211677913ec480415c5e6509586d7b796356cec73a2f8a3e6/ruff-0.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7c8661b0be91a38bd56db593e9331beaf9064a79028adee2d5f392674bbc5e88", size = 10247944 },
|
||||
{ url = "https://files.pythonhosted.org/packages/9f/52/59e0a9f2cf1ce5e6cbe336b6dd0144725c8ea3b97cac60688f4e7880bf13/ruff-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6c0e8d3d2db7e9f6efd884f44b8dc542d5b6b590fc4bb334fdbc624d93a29a2", size = 10421725 },
|
||||
{ url = "https://files.pythonhosted.org/packages/a6/c3/dcd71acc6dff72ce66d13f4be5bca1dbed4db678dff2f0f6f307b04e5c02/ruff-0.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c3156d3f4b42e57247275a0a7e15a851c165a4fc89c5e8fa30ea6da4f7407b8", size = 9954435 },
|
||||
{ url = "https://files.pythonhosted.org/packages/a6/9a/342d336c7c52dbd136dee97d4c7797e66c3f92df804f8f3b30da59b92e9c/ruff-0.11.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:490b1e147c1260545f6d041c4092483e3f6d8eba81dc2875eaebcf9140b53905", size = 11492664 },
|
||||
{ url = "https://files.pythonhosted.org/packages/84/35/6e7defd2d7ca95cc385ac1bd9f7f2e4a61b9cc35d60a263aebc8e590c462/ruff-0.11.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1bc09a7419e09662983b1312f6fa5dab829d6ab5d11f18c3760be7ca521c9329", size = 12207856 },
|
||||
{ url = "https://files.pythonhosted.org/packages/22/78/da669c8731bacf40001c880ada6d31bcfb81f89cc996230c3b80d319993e/ruff-0.11.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcfa478daf61ac8002214eb2ca5f3e9365048506a9d52b11bea3ecea822bb844", size = 11645156 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ee/47/e27d17d83530a208f4a9ab2e94f758574a04c51e492aa58f91a3ed7cbbcb/ruff-0.11.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fbb2aed66fe742a6a3a0075ed467a459b7cedc5ae01008340075909d819df1e", size = 13884167 },
|
||||
{ url = "https://files.pythonhosted.org/packages/9f/5e/42ffbb0a5d4b07bbc642b7d58357b4e19a0f4774275ca6ca7d1f7b5452cd/ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92c0c1ff014351c0b0cdfdb1e35fa83b780f1e065667167bb9502d47ca41e6db", size = 11348311 },
|
||||
{ url = "https://files.pythonhosted.org/packages/c8/51/dc3ce0c5ce1a586727a3444a32f98b83ba99599bb1ebca29d9302886e87f/ruff-0.11.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e4fd5ff5de5f83e0458a138e8a869c7c5e907541aec32b707f57cf9a5e124445", size = 10305039 },
|
||||
{ url = "https://files.pythonhosted.org/packages/60/e0/475f0c2f26280f46f2d6d1df1ba96b3399e0234cf368cc4c88e6ad10dcd9/ruff-0.11.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:96bc89a5c5fd21a04939773f9e0e276308be0935de06845110f43fd5c2e4ead7", size = 9937939 },
|
||||
{ url = "https://files.pythonhosted.org/packages/e2/d3/3e61b7fd3e9cdd1e5b8c7ac188bec12975c824e51c5cd3d64caf81b0331e/ruff-0.11.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a9352b9d767889ec5df1483f94870564e8102d4d7e99da52ebf564b882cdc2c7", size = 10923259 },
|
||||
{ url = "https://files.pythonhosted.org/packages/30/32/cd74149ebb40b62ddd14bd2d1842149aeb7f74191fb0f49bd45c76909ff2/ruff-0.11.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:049a191969a10897fe052ef9cc7491b3ef6de79acd7790af7d7897b7a9bfbcb6", size = 11406212 },
|
||||
{ url = "https://files.pythonhosted.org/packages/00/ef/033022a6b104be32e899b00de704d7c6d1723a54d4c9e09d147368f14b62/ruff-0.11.0-py3-none-win32.whl", hash = "sha256:3191e9116b6b5bbe187447656f0c8526f0d36b6fd89ad78ccaad6bdc2fad7df2", size = 10310905 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ed/8a/163f2e78c37757d035bd56cd60c8d96312904ca4a6deeab8442d7b3cbf89/ruff-0.11.0-py3-none-win_amd64.whl", hash = "sha256:c58bfa00e740ca0a6c43d41fb004cd22d165302f360aaa56f7126d544db31a21", size = 11411730 },
|
||||
{ url = "https://files.pythonhosted.org/packages/4e/f7/096f6efabe69b49d7ca61052fc70289c05d8d35735c137ef5ba5ef423662/ruff-0.11.0-py3-none-win_arm64.whl", hash = "sha256:868364fc23f5aa122b00c6f794211e85f7e78f5dffdf7c590ab90b8c4e69b657", size = 10538956 },
|
||||
{ url = "https://files.pythonhosted.org/packages/9c/db/baee59ac88f57527fcbaad3a7b309994e42329c6bc4d4d2b681a3d7b5426/ruff-0.11.4-py3-none-linux_armv6l.whl", hash = "sha256:d9f4a761ecbde448a2d3e12fb398647c7f0bf526dbc354a643ec505965824ed2", size = 10106493 },
|
||||
{ url = "https://files.pythonhosted.org/packages/c1/d6/9a0962cbb347f4ff98b33d699bf1193ff04ca93bed4b4222fd881b502154/ruff-0.11.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:8c1747d903447d45ca3d40c794d1a56458c51e5cc1bc77b7b64bd2cf0b1626cc", size = 10876382 },
|
||||
{ url = "https://files.pythonhosted.org/packages/3a/8f/62bab0c7d7e1ae3707b69b157701b41c1ccab8f83e8501734d12ea8a839f/ruff-0.11.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:51a6494209cacca79e121e9b244dc30d3414dac8cc5afb93f852173a2ecfc906", size = 10237050 },
|
||||
{ url = "https://files.pythonhosted.org/packages/09/96/e296965ae9705af19c265d4d441958ed65c0c58fc4ec340c27cc9d2a1f5b/ruff-0.11.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f171605f65f4fc49c87f41b456e882cd0c89e4ac9d58e149a2b07930e1d466f", size = 10424984 },
|
||||
{ url = "https://files.pythonhosted.org/packages/e5/56/644595eb57d855afed6e54b852e2df8cd5ca94c78043b2f29bdfb29882d5/ruff-0.11.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ebf99ea9af918878e6ce42098981fc8c1db3850fef2f1ada69fb1dcdb0f8e79e", size = 9957438 },
|
||||
{ url = "https://files.pythonhosted.org/packages/86/83/9d3f3bed0118aef3e871ded9e5687fb8c5776bde233427fd9ce0a45db2d4/ruff-0.11.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edad2eac42279df12e176564a23fc6f4aaeeb09abba840627780b1bb11a9d223", size = 11547282 },
|
||||
{ url = "https://files.pythonhosted.org/packages/40/e6/0c6e4f5ae72fac5ccb44d72c0111f294a5c2c8cc5024afcb38e6bda5f4b3/ruff-0.11.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f103a848be9ff379fc19b5d656c1f911d0a0b4e3e0424f9532ececf319a4296e", size = 12182020 },
|
||||
{ url = "https://files.pythonhosted.org/packages/b5/92/4aed0e460aeb1df5ea0c2fbe8d04f9725cccdb25d8da09a0d3f5b8764bf8/ruff-0.11.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:193e6fac6eb60cc97b9f728e953c21cc38a20077ed64f912e9d62b97487f3f2d", size = 11679154 },
|
||||
{ url = "https://files.pythonhosted.org/packages/1b/d3/7316aa2609f2c592038e2543483eafbc62a0e1a6a6965178e284808c095c/ruff-0.11.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7af4e5f69b7c138be8dcffa5b4a061bf6ba6a3301f632a6bce25d45daff9bc99", size = 13905985 },
|
||||
{ url = "https://files.pythonhosted.org/packages/63/80/734d3d17546e47ff99871f44ea7540ad2bbd7a480ed197fe8a1c8a261075/ruff-0.11.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:126b1bf13154aa18ae2d6c3c5efe144ec14b97c60844cfa6eb960c2a05188222", size = 11348343 },
|
||||
{ url = "https://files.pythonhosted.org/packages/04/7b/70fc7f09a0161dce9613a4671d198f609e653d6f4ff9eee14d64c4c240fb/ruff-0.11.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e8806daaf9dfa881a0ed603f8a0e364e4f11b6ed461b56cae2b1c0cab0645304", size = 10308487 },
|
||||
{ url = "https://files.pythonhosted.org/packages/1a/22/1cdd62dabd678d75842bf4944fd889cf794dc9e58c18cc547f9eb28f95ed/ruff-0.11.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5d94bb1cc2fc94a769b0eb975344f1b1f3d294da1da9ddbb5a77665feb3a3019", size = 9929091 },
|
||||
{ url = "https://files.pythonhosted.org/packages/9f/20/40e0563506332313148e783bbc1e4276d657962cc370657b2fff20e6e058/ruff-0.11.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:995071203d0fe2183fc7a268766fd7603afb9996785f086b0d76edee8755c896", size = 10924659 },
|
||||
{ url = "https://files.pythonhosted.org/packages/b5/41/eef9b7aac8819d9e942f617f9db296f13d2c4576806d604aba8db5a753f1/ruff-0.11.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:7a37ca937e307ea18156e775a6ac6e02f34b99e8c23fe63c1996185a4efe0751", size = 11428160 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ff/61/c488943414fb2b8754c02f3879de003e26efdd20f38167ded3fb3fc1cda3/ruff-0.11.4-py3-none-win32.whl", hash = "sha256:0e9365a7dff9b93af933dab8aebce53b72d8f815e131796268709890b4a83270", size = 10311496 },
|
||||
{ url = "https://files.pythonhosted.org/packages/b6/2b/2a1c8deb5f5dfa3871eb7daa41492c4d2b2824a74d2b38e788617612a66d/ruff-0.11.4-py3-none-win_amd64.whl", hash = "sha256:5a9fa1c69c7815e39fcfb3646bbfd7f528fa8e2d4bebdcf4c2bd0fa037a255fb", size = 11399146 },
|
||||
{ url = "https://files.pythonhosted.org/packages/4f/03/3aec4846226d54a37822e4c7ea39489e4abd6f88388fba74e3d4abe77300/ruff-0.11.4-py3-none-win_arm64.whl", hash = "sha256:d435db6b9b93d02934cf61ef332e66af82da6d8c69aefdea5994c89997c7a0fc", size = 10450306 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
|
@ -68,11 +68,31 @@ jobs:
|
|||
uses: actions/checkout@v4
|
||||
{%- if cookiecutter.use_docker == 'y' %}
|
||||
|
||||
- name: Build the Stack
|
||||
run: docker compose -f docker-compose.local.yml build django
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Build the docs
|
||||
run: docker compose -f docker-compose.docs.yml build docs
|
||||
- name: Build and cache local backend
|
||||
uses: docker/bake-action@v6
|
||||
with:
|
||||
push: false
|
||||
load: true
|
||||
files: docker-compose.local.yml
|
||||
targets: django
|
||||
set: |
|
||||
django.cache-from=type=gha,scope=django-cached-tests
|
||||
django.cache-to=type=gha,scope=django-cached-tests,mode=max
|
||||
postgres.cache-from=type=gha,scope=postgres-cached-tests
|
||||
postgres.cache-to=type=gha,scope=postgres-cached-tests,mode=max
|
||||
|
||||
- name: Build and cache docs
|
||||
uses: docker/bake-action@v6
|
||||
with:
|
||||
push: false
|
||||
load: true
|
||||
files: docker-compose.docs.yml
|
||||
set: |
|
||||
docs.cache-from=type=gha,scope=cached-docs
|
||||
docs.cache-to=type=gha,scope=cached-docs,mode=max
|
||||
|
||||
- name: Check DB Migrations
|
||||
run: docker compose -f docker-compose.local.yml run --rm django python manage.py makemigrations --check
|
||||
|
|
|
@ -29,14 +29,14 @@ repos:
|
|||
exclude: '{{cookiecutter.project_slug}}/templates/'
|
||||
|
||||
- repo: https://github.com/adamchainz/django-upgrade
|
||||
rev: '1.22.2'
|
||||
rev: '1.24.0'
|
||||
hooks:
|
||||
- id: django-upgrade
|
||||
args: ['--target-version', '5.0']
|
||||
|
||||
# Run the Ruff linter.
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.11.0
|
||||
rev: v0.11.4
|
||||
hooks:
|
||||
# Linter
|
||||
- id: ruff
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM docker.io/amazon/aws-cli:2.24.0
|
||||
FROM docker.io/amazon/aws-cli:2.25.0
|
||||
|
||||
# Clear entrypoint from the base image, otherwise it's always calling the aws CLI
|
||||
ENTRYPOINT []
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM docker.io/traefik:3.3.4
|
||||
FROM docker.io/traefik:3.3.5
|
||||
RUN mkdir -p /etc/traefik/acme \
|
||||
&& touch /etc/traefik/acme/acme.json \
|
||||
&& chmod 600 /etc/traefik/acme/acme.json
|
||||
|
|
|
@ -337,10 +337,10 @@ ACCOUNT_ALLOW_REGISTRATION = env.bool("DJANGO_ACCOUNT_ALLOW_REGISTRATION", True)
|
|||
# https://docs.allauth.org/en/latest/account/configuration.html
|
||||
ACCOUNT_LOGIN_METHODS = {"{{cookiecutter.username_type}}"}
|
||||
# https://docs.allauth.org/en/latest/account/configuration.html
|
||||
ACCOUNT_EMAIL_REQUIRED = True
|
||||
{%- if cookiecutter.username_type == "email" %}
|
||||
# https://docs.allauth.org/en/latest/account/configuration.html
|
||||
ACCOUNT_USERNAME_REQUIRED = False
|
||||
{%- if cookiecutter.username_type == "username" %}
|
||||
ACCOUNT_SIGNUP_FIELDS = ["email*", "username*", "password1*", "password2*"]
|
||||
{%- else %}
|
||||
ACCOUNT_SIGNUP_FIELDS = ["email*", "password1*", "password2*"]
|
||||
# https://docs.allauth.org/en/latest/account/configuration.html
|
||||
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
|
||||
{%- endif %}
|
||||
|
|
|
@ -42,7 +42,7 @@ urlpatterns += [
|
|||
# API base url
|
||||
path("api/", include("config.api_router")),
|
||||
# DRF auth token
|
||||
path("api/auth-token/", obtain_auth_token),
|
||||
path("api/auth-token/", obtain_auth_token, name="obtain_auth_token"),
|
||||
path("api/schema/", SpectacularAPIView.as_view(), name="api-schema"),
|
||||
path(
|
||||
"api/docs/",
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import os
|
||||
from collections.abc import Sequence
|
||||
from pathlib import Path
|
||||
|
||||
|
@ -18,7 +17,7 @@ def merge(
|
|||
merged_content = ""
|
||||
for merge_file in files_to_merge:
|
||||
merged_content += merge_file.read_text()
|
||||
merged_content += os.linesep
|
||||
merged_content += "\n"
|
||||
output_file.write_text(merged_content)
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
python-slugify==8.0.4 # https://github.com/un33k/python-slugify
|
||||
Pillow==11.1.0 # https://github.com/python-pillow/Pillow
|
||||
Pillow==11.1.0 # pyup: != 11.2.0 # https://github.com/python-pillow/Pillow
|
||||
{%- if cookiecutter.frontend_pipeline == 'Django Compressor' %}
|
||||
{%- if cookiecutter.windows == 'y' and cookiecutter.use_docker == 'n' %}
|
||||
rcssmin==1.1.2 --install-option="--without-c-extensions" # https://github.com/ndparker/rcssmin
|
||||
|
@ -16,7 +16,7 @@ redis==5.2.1 # https://github.com/redis/redis-py
|
|||
hiredis==3.1.0 # https://github.com/redis/hiredis-py
|
||||
{%- endif %}
|
||||
{%- if cookiecutter.use_celery == "y" %}
|
||||
celery==5.4.0 # pyup: < 6.0 # https://github.com/celery/celery
|
||||
celery==5.5.0 # pyup: < 6.0 # https://github.com/celery/celery
|
||||
django-celery-beat==2.7.0 # https://github.com/celery/django-celery-beat
|
||||
{%- if cookiecutter.use_docker == 'y' %}
|
||||
flower==2.0.1 # https://github.com/mher/flower
|
||||
|
@ -29,19 +29,19 @@ uvicorn-worker==0.3.0 # https://github.com/Kludex/uvicorn-worker
|
|||
|
||||
# Django
|
||||
# ------------------------------------------------------------------------------
|
||||
django==5.0.13 # pyup: < 5.1 # https://www.djangoproject.com/
|
||||
django==5.1.8 # pyup: < 5.2 # https://www.djangoproject.com/
|
||||
django-environ==0.12.0 # https://github.com/joke2k/django-environ
|
||||
django-model-utils==5.0.0 # https://github.com/jazzband/django-model-utils
|
||||
django-allauth[mfa]==65.4.1 # https://github.com/pennersr/django-allauth
|
||||
django-allauth[mfa]==65.7.0 # https://github.com/pennersr/django-allauth
|
||||
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==2025.4 # https://github.com/django-crispy-forms/crispy-bootstrap5
|
||||
{%- if cookiecutter.frontend_pipeline == 'Django Compressor' %}
|
||||
django-compressor==4.5.1 # https://github.com/django-compressor/django-compressor
|
||||
{%- endif %}
|
||||
django-redis==5.4.0 # https://github.com/jazzband/django-redis
|
||||
{%- if cookiecutter.use_drf == 'y' %}
|
||||
# Django REST Framework
|
||||
djangorestframework==3.15.2 # https://github.com/encode/django-rest-framework
|
||||
djangorestframework==3.16.0 # https://github.com/encode/django-rest-framework
|
||||
django-cors-headers==4.7.0 # https://github.com/adamchainz/django-cors-headers
|
||||
# DRF-spectacular for api documentation
|
||||
drf-spectacular==0.28.0 # https://github.com/tfranzel/drf-spectacular
|
||||
|
|
|
@ -16,28 +16,28 @@ watchfiles==1.0.4 # https://github.com/samuelcolvin/watchfiles
|
|||
mypy==1.15.0 # https://github.com/python/mypy
|
||||
django-stubs[compatible-mypy]==5.1.3 # https://github.com/typeddjango/django-stubs
|
||||
pytest==8.3.5 # 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/Teemu/pytest-sugar
|
||||
{%- if cookiecutter.use_drf == "y" %}
|
||||
djangorestframework-stubs==3.15.3 # https://github.com/typeddjango/djangorestframework-stubs
|
||||
{%- endif %}
|
||||
|
||||
# Documentation
|
||||
# ------------------------------------------------------------------------------
|
||||
sphinx==8.3.0 # https://github.com/sphinx-doc/sphinx
|
||||
sphinx==8.2.3 # pyup: != 8.3.0 # https://github.com/sphinx-doc/sphinx
|
||||
sphinx-autobuild==2024.10.3 # https://github.com/GaretJax/sphinx-autobuild
|
||||
|
||||
# Code quality
|
||||
# ------------------------------------------------------------------------------
|
||||
ruff==0.11.0 # https://github.com/astral-sh/ruff
|
||||
coverage==7.7.0 # https://github.com/nedbat/coveragepy
|
||||
ruff==0.11.4 # https://github.com/astral-sh/ruff
|
||||
coverage==7.8.0 # https://github.com/nedbat/coveragepy
|
||||
djlint==1.36.4 # https://github.com/Riverside-Healthcare/djLint
|
||||
pre-commit==4.1.0 # https://github.com/pre-commit/pre-commit
|
||||
pre-commit==4.2.0 # https://github.com/pre-commit/pre-commit
|
||||
|
||||
# Django
|
||||
# ------------------------------------------------------------------------------
|
||||
factory-boy==3.3.2 # https://github.com/FactoryBoy/factory_boy
|
||||
|
||||
django-debug-toolbar==5.0.1 # https://github.com/jazzband/django-debug-toolbar
|
||||
django-extensions==3.2.3 # https://github.com/django-extensions/django-extensions
|
||||
django-debug-toolbar==5.1.0 # https://github.com/jazzband/django-debug-toolbar
|
||||
django-extensions==4.0 # https://github.com/django-extensions/django-extensions
|
||||
django-coverage-plugin==3.1.0 # https://github.com/nedbat/django_coverage_plugin
|
||||
pytest-django==4.10.0 # https://github.com/pytest-dev/pytest-django
|
||||
pytest-django==4.11.1 # https://github.com/pytest-dev/pytest-django
|
||||
|
|
|
@ -8,7 +8,7 @@ psycopg[c]==3.2.6 # https://github.com/psycopg/psycopg
|
|||
Collectfasta==3.2.1 # https://github.com/jasongi/collectfasta
|
||||
{%- endif %}
|
||||
{%- if cookiecutter.use_sentry == "y" %}
|
||||
sentry-sdk==2.23.1 # https://github.com/getsentry/sentry-python
|
||||
sentry-sdk==2.25.1 # https://github.com/getsentry/sentry-python
|
||||
{%- endif %}
|
||||
{%- if cookiecutter.use_docker == "n" and cookiecutter.windows == "y" %}
|
||||
hiredis==3.1.0 # https://github.com/redis/hiredis-py
|
||||
|
@ -17,28 +17,28 @@ hiredis==3.1.0 # https://github.com/redis/hiredis-py
|
|||
# Django
|
||||
# ------------------------------------------------------------------------------
|
||||
{%- if cookiecutter.cloud_provider == 'AWS' %}
|
||||
django-storages[s3]==1.14.5 # https://github.com/jschneier/django-storages
|
||||
django-storages[s3]==1.14.6 # https://github.com/jschneier/django-storages
|
||||
{%- elif cookiecutter.cloud_provider == 'GCP' %}
|
||||
django-storages[google]==1.14.5 # https://github.com/jschneier/django-storages
|
||||
django-storages[google]==1.14.6 # https://github.com/jschneier/django-storages
|
||||
{%- elif cookiecutter.cloud_provider == 'Azure' %}
|
||||
django-storages[azure]==1.14.5 # https://github.com/jschneier/django-storages
|
||||
django-storages[azure]==1.14.6 # https://github.com/jschneier/django-storages
|
||||
{%- endif %}
|
||||
{%- if cookiecutter.mail_service == 'Mailgun' %}
|
||||
django-anymail[mailgun]==12.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[mailgun]==13.0 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'Amazon SES' %}
|
||||
django-anymail[amazon-ses]==12.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[amazon-ses]==13.0 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'Mailjet' %}
|
||||
django-anymail[mailjet]==12.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[mailjet]==13.0 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'Mandrill' %}
|
||||
django-anymail[mandrill]==12.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[mandrill]==13.0 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'Postmark' %}
|
||||
django-anymail[postmark]==12.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[postmark]==13.0 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'Sendgrid' %}
|
||||
django-anymail[sendgrid]==12.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[sendgrid]==13.0 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'Brevo' %}
|
||||
django-anymail[brevo]==12.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[brevo]==13.0 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'SparkPost' %}
|
||||
django-anymail[sparkpost]==12.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail[sparkpost]==13.0 # https://github.com/anymail/django-anymail
|
||||
{%- elif cookiecutter.mail_service == 'Other SMTP' %}
|
||||
django-anymail==12.0 # https://github.com/anymail/django-anymail
|
||||
django-anymail==13.0 # https://github.com/anymail/django-anymail
|
||||
{%- endif %}
|
||||
|
|
|
@ -17,7 +17,7 @@ class UserAdminChangeForm(admin_forms.UserChangeForm):
|
|||
{%- endif %}
|
||||
|
||||
|
||||
class UserAdminCreationForm(admin_forms.UserCreationForm):
|
||||
class UserAdminCreationForm(admin_forms.AdminUserCreationForm): # type: ignore[name-defined] # django-stubs is missing the class, thats why the error is thrown: typeddjango/django-stubs#2555
|
||||
"""
|
||||
Form for User Creation in the Admin Area.
|
||||
To change user signup, see UserSignupForm and UserSocialSignupForm.
|
||||
|
|
Loading…
Reference in New Issue
Block a user