mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2024-11-26 19:44:00 +03:00
Merge commit '4259af3fd8a4eefa3f2c0ed35183d4c0bfb7995a'
This commit is contained in:
commit
340c7da93e
|
@ -73,6 +73,7 @@ Listed in alphabetical order.
|
|||
Bo Lopker `@blopker`_
|
||||
Bouke Haarsma
|
||||
Brent Payne `@brentpayne`_ @brentpayne
|
||||
Bruce Olivier `@bolivierjr`_
|
||||
Burhan Khalid `@burhan`_ @burhan
|
||||
Caio Ariede `@caioariede`_ @caioariede
|
||||
Carl Johnson `@carlmjohnson`_ @carlmjohnson
|
||||
|
@ -112,8 +113,10 @@ Listed in alphabetical order.
|
|||
Florian Idelberger `@step21`_ @windrush
|
||||
Garry Cairns `@garry-cairns`_
|
||||
Garry Polley `@garrypolley`_
|
||||
Gilbishkosma `@Gilbishkosma`_
|
||||
Hamish Durkin `@durkode`_
|
||||
Hana Quadara `@hanaquadara`_
|
||||
Harry Moreno `@morenoh149`_ @morenoh149
|
||||
Harry Percival `@hjwp`_
|
||||
Hendrik Schneider `@hendrikschneider`_
|
||||
Henrique G. G. Pereira `@ikkebr`_
|
||||
|
@ -137,6 +140,7 @@ Listed in alphabetical order.
|
|||
Keyvan Mosharraf `@keyvanm`_
|
||||
Krzysztof Szumny `@noisy`_
|
||||
Krzysztof Żuraw `@krzysztofzuraw`_
|
||||
Leo won `@leollon`_
|
||||
Leo Zhou `@glasslion`_
|
||||
Leonardo Jimenez `@xpostudio4`_
|
||||
Lin Xianyi `@iynaix`_
|
||||
|
@ -200,6 +204,7 @@ Listed in alphabetical order.
|
|||
William Archinal `@archinal`_
|
||||
Xaver Y.R. Chen `@yrchen`_ @yrchen
|
||||
Yaroslav Halchenko
|
||||
Yuchen Xie `@mapx`_
|
||||
========================== ============================ ==============
|
||||
|
||||
.. _@a7p: https://github.com/a7p
|
||||
|
@ -224,6 +229,7 @@ Listed in alphabetical order.
|
|||
.. _@bloodpet: https://github.com/bloodpet
|
||||
.. _@blopker: https://github.com/blopker
|
||||
.. _@bogdal: https://github.com/bogdal
|
||||
.. _@bolivierjr: https://github.com/bolivierjr
|
||||
.. _@brentpayne: https://github.com/brentpayne
|
||||
.. _@btknu: https://github.com/btknu
|
||||
.. _@burhan: https://github.com/burhan
|
||||
|
@ -266,6 +272,7 @@ Listed in alphabetical order.
|
|||
.. _@foarsitter: https://github.com/foarsitter
|
||||
.. _@garry-cairns: https://github.com/garry-cairns
|
||||
.. _@garrypolley: https://github.com/garrypolley
|
||||
.. _@Gilbishkosma: https://github.com/Gilbishkosma
|
||||
.. _@glasslion: https://github.com/glasslion
|
||||
.. _@goldhand: https://github.com/goldhand
|
||||
.. _@hackebrot: https://github.com/hackebrot
|
||||
|
@ -290,7 +297,9 @@ Listed in alphabetical order.
|
|||
.. _@keyvanm: https://github.com/keyvanm
|
||||
.. _@knitatoms: https://github.com/knitatoms
|
||||
.. _@krzysztofzuraw: https://github.com/krzysztofzuraw
|
||||
.. _@leollon: https://github.com/leollon
|
||||
.. _@MathijsHoogland: https://github.com/MathijsHoogland
|
||||
.. _@mapx: https://github.com/mapx
|
||||
.. _@mattayes: https://github.com/mattayes
|
||||
.. _@menzenski: https://github.com/menzenski
|
||||
.. _@mfwarren: https://github.com/mfwarren
|
||||
|
@ -299,6 +308,7 @@ Listed in alphabetical order.
|
|||
.. _@minho42: https://github.com/minho42
|
||||
.. _@mjsisley: https://github.com/mjsisley
|
||||
.. _@mknapper1: https://github.com/mknapper1
|
||||
.. _@morenoh149: https://github.com/morenoh149
|
||||
.. _@mostaszewski: https://github.com/mostaszewski
|
||||
.. _@mozillazg: https://github.com/mozillazg
|
||||
.. _@mrcoles: https://github.com/mrcoles
|
||||
|
|
|
@ -53,6 +53,7 @@ Features
|
|||
* Instructions for deploying to PythonAnywhere_
|
||||
* Run tests with unittest or pytest
|
||||
* Customizable PostgreSQL version
|
||||
* Default integration with pre-commit_ for identifying simple issues before submission to code review
|
||||
|
||||
.. _`maintained Foundation fork`: https://github.com/Parbhat/cookiecutter-django-foundation
|
||||
|
||||
|
@ -84,6 +85,7 @@ Optional Integrations
|
|||
.. _PythonAnywhere: https://www.pythonanywhere.com/
|
||||
.. _Traefik: https://traefik.io/
|
||||
.. _LetsEncrypt: https://letsencrypt.org/
|
||||
.. _pre-commit: https://github.com/pre-commit/pre-commit
|
||||
|
||||
Constraints
|
||||
-----------
|
||||
|
@ -106,7 +108,7 @@ Projects that provide financial support to the maintainers:
|
|||
Two Scoops of Django 1.11
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. image:: https://cdn.shopify.com/s/files/1/0304/6901/products/tsd-111-alpha_medium.jpg?v=1499531513
|
||||
.. image:: https://cdn.shopify.com/s/files/1/0304/6901/products/2017-06-29-tsd11-sticker-02.png
|
||||
:name: Two Scoops of Django 1.11 Cover
|
||||
:align: center
|
||||
:alt: Two Scoops of Django
|
||||
|
|
|
@ -152,6 +152,7 @@ If you are using ``supervisor``, you can use this file as a starting point::
|
|||
Move it to ``/etc/supervisor/conf.d/{{cookiecutter.project_slug}}.conf`` and run::
|
||||
|
||||
supervisorctl reread
|
||||
supervisorctl update
|
||||
supervisorctl start {{cookiecutter.project_slug}}
|
||||
|
||||
For status check, run::
|
||||
|
|
|
@ -26,6 +26,12 @@ First things first.
|
|||
#. Install development requirements: ::
|
||||
|
||||
$ pip install -r requirements/local.txt
|
||||
$ pre-commit install
|
||||
|
||||
.. note::
|
||||
|
||||
the `pre-commit` exists in the generated project as default.
|
||||
for the details of `pre-commit`, follow the [site of pre-commit](https://pre-commit.com/).
|
||||
|
||||
#. Create a new PostgreSQL database using createdb_: ::
|
||||
|
||||
|
|
|
@ -279,6 +279,10 @@ def remove_node_dockerfile():
|
|||
shutil.rmtree(os.path.join("compose", "local", "node"))
|
||||
|
||||
|
||||
def remove_aws_dockerfile():
|
||||
shutil.rmtree(os.path.join("compose", "production", "aws"))
|
||||
|
||||
|
||||
def main():
|
||||
debug = "{{ cookiecutter.debug }}".lower() == "y"
|
||||
|
||||
|
@ -302,6 +306,12 @@ def main():
|
|||
else:
|
||||
remove_docker_files()
|
||||
|
||||
if (
|
||||
"{{ cookiecutter.use_docker }}".lower() == "y"
|
||||
and "{{ cookiecutter.cloud_provider}}".lower() != "aws"
|
||||
):
|
||||
remove_aws_dockerfile()
|
||||
|
||||
if "{{ cookiecutter.use_heroku }}".lower() == "n":
|
||||
remove_heroku_files()
|
||||
|
||||
|
|
|
@ -4,14 +4,14 @@ binaryornot==0.4.4
|
|||
|
||||
# Code quality
|
||||
# ------------------------------------------------------------------------------
|
||||
black==19.3b0
|
||||
flake8==3.7.8
|
||||
black==19.10b0
|
||||
flake8==3.7.9
|
||||
|
||||
# Testing
|
||||
# ------------------------------------------------------------------------------
|
||||
tox==3.14.0
|
||||
pytest==5.2.1
|
||||
pytest_cases==1.11.3
|
||||
tox==3.14.2
|
||||
pytest==5.3.1
|
||||
pytest_cases==1.11.8
|
||||
pytest-cookies==0.4.0
|
||||
pytest-xdist==1.30.0
|
||||
pyyaml==5.1.2
|
||||
pyyaml==5.2
|
||||
|
|
|
@ -13,10 +13,16 @@ indent_style = space
|
|||
indent_size = 4
|
||||
|
||||
[*.py]
|
||||
line_length=120
|
||||
known_first_party={{ cookiecutter.project_slug }}
|
||||
multi_line_output=3
|
||||
default_section=THIRDPARTY
|
||||
line_length = 120
|
||||
known_first_party = {{ cookiecutter.project_slug }}
|
||||
multi_line_output = 3
|
||||
default_section = THIRDPARTY
|
||||
recursive = true
|
||||
skip = venv/
|
||||
skip_glob = **/migrations/*.py
|
||||
include_trailing_comma = true
|
||||
force_grid_wrap = 0
|
||||
use_parentheses = true
|
||||
|
||||
[*.{html,css,scss,json,yml}]
|
||||
indent_style = space
|
||||
|
|
19
{{cookiecutter.project_slug}}/.pre-commit-config.yaml
Normal file
19
{{cookiecutter.project_slug}}/.pre-commit-config.yaml
Normal file
|
@ -0,0 +1,19 @@
|
|||
exclude: 'docs|node_modules|migrations|.git|.tox'
|
||||
default_stages: [commit]
|
||||
fail_fast: true
|
||||
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: master
|
||||
hooks:
|
||||
- id: trailing-whitespace
|
||||
files: (^|/)a/.+\.(py|html|sh|css|js)$
|
||||
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: flake8
|
||||
name: flake8
|
||||
entry: flake8
|
||||
language: python
|
||||
types: [python]
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
FROM traefik:alpine
|
||||
FROM traefik:1.7-alpine
|
||||
RUN mkdir -p /etc/traefik/acme
|
||||
RUN touch /etc/traefik/acme/acme.json
|
||||
RUN chmod 600 /etc/traefik/acme/acme.json
|
||||
|
|
|
@ -131,6 +131,9 @@ AUTH_PASSWORD_VALIDATORS = [
|
|||
# https://docs.djangoproject.com/en/dev/ref/settings/#middleware
|
||||
MIDDLEWARE = [
|
||||
"django.middleware.security.SecurityMiddleware",
|
||||
{%- if cookiecutter.use_whitenoise == 'y' %}
|
||||
"whitenoise.middleware.WhiteNoiseMiddleware",
|
||||
{%- endif %}
|
||||
"django.contrib.sessions.middleware.SessionMiddleware",
|
||||
"django.middleware.locale.LocaleMiddleware",
|
||||
"django.middleware.common.CommonMiddleware",
|
||||
|
|
|
@ -42,6 +42,14 @@ EMAIL_BACKEND = env(
|
|||
)
|
||||
{%- endif %}
|
||||
|
||||
{%- if cookiecutter.use_whitenoise == 'y' %}
|
||||
|
||||
# WhiteNoise
|
||||
# ------------------------------------------------------------------------------
|
||||
# http://whitenoise.evans.io/en/latest/django.html#using-whitenoise-in-development
|
||||
INSTALLED_APPS = ["whitenoise.runserver_nostatic"] + INSTALLED_APPS # noqa F405
|
||||
{% endif %}
|
||||
|
||||
# django-debug-toolbar
|
||||
# ------------------------------------------------------------------------------
|
||||
# https://django-debug-toolbar.readthedocs.io/en/latest/installation.html#prerequisites
|
||||
|
|
|
@ -104,9 +104,11 @@ GS_DEFAULT_ACL = "publicRead"
|
|||
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"
|
||||
{% elif cookiecutter.cloud_provider == 'AWS' -%}
|
||||
STATICFILES_STORAGE = "config.settings.production.StaticRootS3Boto3Storage"
|
||||
COLLECTFAST_STRATEGY = "collectfast.strategies.boto3.Boto3Strategy"
|
||||
STATIC_URL = f"https://{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com/static/"
|
||||
{% elif cookiecutter.cloud_provider == 'GCP' -%}
|
||||
STATICFILES_STORAGE = "config.settings.production.StaticRootGoogleCloudStorage"
|
||||
COLLECTFAST_STRATEGY = "collectfast.strategies.gcloud.GoogleCloudStrategy"
|
||||
STATIC_URL = f"https://storage.googleapis.com/{GS_BUCKET_NAME}/static/"
|
||||
{% endif -%}
|
||||
|
||||
|
@ -192,14 +194,7 @@ ANYMAIL = {
|
|||
"MAILGUN_API_URL": env("MAILGUN_API_URL", default="https://api.mailgun.net/v3"),
|
||||
}
|
||||
|
||||
{% if cookiecutter.use_whitenoise == 'y' -%}
|
||||
# WhiteNoise
|
||||
# ------------------------------------------------------------------------------
|
||||
# http://whitenoise.evans.io/en/latest/django.html#enable-whitenoise
|
||||
MIDDLEWARE.insert(1, "whitenoise.middleware.WhiteNoiseMiddleware") # noqa F405
|
||||
|
||||
{% endif %}
|
||||
{%- if cookiecutter.use_compressor == 'y' -%}
|
||||
{% if cookiecutter.use_compressor == 'y' -%}
|
||||
# django-compressor
|
||||
# ------------------------------------------------------------------------------
|
||||
# https://django-compressor.readthedocs.io/en/latest/settings/#django.conf.settings.COMPRESS_ENABLED
|
||||
|
|
|
@ -65,6 +65,8 @@ services:
|
|||
command: /start-flower
|
||||
|
||||
{%- endif %}
|
||||
|
||||
{% if cookiecutter.cloud_provider == 'AWS' %}
|
||||
awscli:
|
||||
build:
|
||||
context: .
|
||||
|
@ -73,3 +75,4 @@ services:
|
|||
- ./.envs/.production/.django
|
||||
volumes:
|
||||
- production_postgres_data_backups:/backups
|
||||
{%- endif %}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[pytest]
|
||||
addopts = --ds=config.settings.test
|
||||
addopts = --ds=config.settings.test --reuse-db
|
||||
python_files = tests.py test_*.py
|
||||
{%- if cookiecutter.js_task_runner != 'None' %}
|
||||
norecursedirs = node_modules
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
pytz==2019.3 # https://github.com/stub42/pytz
|
||||
python-slugify==3.0.4 # https://github.com/un33k/python-slugify
|
||||
Pillow==6.2.0 # https://github.com/python-pillow/Pillow
|
||||
python-slugify==4.0.0 # https://github.com/un33k/python-slugify
|
||||
Pillow==6.2.1 # https://github.com/python-pillow/Pillow
|
||||
{%- if cookiecutter.use_compressor == "y" %}
|
||||
rcssmin==1.0.6{% if cookiecutter.windows == 'y' and cookiecutter.use_docker == 'n' %} --install-option="--without-c-extensions"{% endif %} # https://github.com/ndparker/rcssmin
|
||||
{%- endif %}
|
||||
argon2-cffi==19.1.0 # https://github.com/hynek/argon2_cffi
|
||||
argon2-cffi==19.2.0 # https://github.com/hynek/argon2_cffi
|
||||
{%- if cookiecutter.use_whitenoise == 'y' %}
|
||||
whitenoise==4.1.4 # https://github.com/evansd/whitenoise
|
||||
{%- endif %}
|
||||
redis==3.3.8 # https://github.com/antirez/redis
|
||||
redis==3.3.11 # https://github.com/antirez/redis
|
||||
{%- if cookiecutter.use_celery == "y" %}
|
||||
celery==4.3.0 # pyup: < 5.0 # https://github.com/celery/celery
|
||||
django-celery-beat==1.5.0 # https://github.com/celery/django-celery-beat
|
||||
|
@ -19,11 +19,11 @@ flower==0.9.3 # https://github.com/mher/flower
|
|||
|
||||
# Django
|
||||
# ------------------------------------------------------------------------------
|
||||
django==2.2.6 # pyup: < 3.0 # https://www.djangoproject.com/
|
||||
django==2.2.8 # pyup: < 3.0 # https://www.djangoproject.com/
|
||||
django-environ==0.4.5 # https://github.com/joke2k/django-environ
|
||||
django-model-utils==3.2.0 # https://github.com/jazzband/django-model-utils
|
||||
django-allauth==0.40.0 # https://github.com/pennersr/django-allauth
|
||||
django-crispy-forms==1.7.2 # https://github.com/django-crispy-forms/django-crispy-forms
|
||||
django-crispy-forms==1.8.1 # https://github.com/django-crispy-forms/django-crispy-forms
|
||||
{%- if cookiecutter.use_compressor == "y" %}
|
||||
django-compressor==2.3 # https://github.com/django-compressor/django-compressor
|
||||
{%- endif %}
|
||||
|
|
|
@ -1,35 +1,36 @@
|
|||
-r ./base.txt
|
||||
|
||||
Werkzeug==0.14.1 # pyup: < 0.15 # https://github.com/pallets/werkzeug
|
||||
ipdb==0.12.2 # https://github.com/gotcha/ipdb
|
||||
Sphinx==2.2.0 # https://github.com/sphinx-doc/sphinx
|
||||
Werkzeug==0.16.0 # https://github.com/pallets/werkzeug
|
||||
ipdb==0.12.3 # https://github.com/gotcha/ipdb
|
||||
Sphinx==2.2.2 # https://github.com/sphinx-doc/sphinx
|
||||
{%- if cookiecutter.use_docker == 'y' %}
|
||||
psycopg2==2.8.3 --no-binary psycopg2 # https://github.com/psycopg/psycopg2
|
||||
{%- else %}
|
||||
psycopg2-binary==2.8.3 # https://github.com/psycopg/psycopg2
|
||||
psycopg2-binary==2.8.4 # https://github.com/psycopg/psycopg2
|
||||
{%- endif %}
|
||||
|
||||
# Testing
|
||||
# ------------------------------------------------------------------------------
|
||||
mypy==0.730 # https://github.com/python/mypy
|
||||
pytest==5.2.1 # https://github.com/pytest-dev/pytest
|
||||
mypy==0.750 # https://github.com/python/mypy
|
||||
pytest==5.3.1 # https://github.com/pytest-dev/pytest
|
||||
pytest-sugar==0.9.2 # https://github.com/Frozenball/pytest-sugar
|
||||
|
||||
# Code quality
|
||||
# ------------------------------------------------------------------------------
|
||||
flake8==3.7.8 # https://github.com/PyCQA/flake8
|
||||
flake8==3.7.9 # https://github.com/PyCQA/flake8
|
||||
coverage==4.5.4 # https://github.com/nedbat/coveragepy
|
||||
black==19.3b0 # https://github.com/ambv/black
|
||||
pylint-django==2.0.11 # https://github.com/PyCQA/pylint-django
|
||||
black==19.10b0 # https://github.com/ambv/black
|
||||
pylint-django==2.0.13 # https://github.com/PyCQA/pylint-django
|
||||
{%- if cookiecutter.use_celery == 'y' %}
|
||||
pylint-celery==0.3 # https://github.com/PyCQA/pylint-celery
|
||||
{%- endif %}
|
||||
pre-commit==1.20.0 # https://github.com/pre-commit/pre-commit
|
||||
|
||||
# Django
|
||||
# ------------------------------------------------------------------------------
|
||||
factory-boy==2.12.0 # https://github.com/FactoryBoy/factory_boy
|
||||
|
||||
django-debug-toolbar==2.0 # https://github.com/jazzband/django-debug-toolbar
|
||||
django-extensions==2.2.3 # https://github.com/django-extensions/django-extensions
|
||||
django-debug-toolbar==2.1 # https://github.com/jazzband/django-debug-toolbar
|
||||
django-extensions==2.2.5 # https://github.com/django-extensions/django-extensions
|
||||
django-coverage-plugin==1.6.0 # https://github.com/nedbat/django_coverage_plugin
|
||||
pytest-django==3.5.1 # https://github.com/pytest-dev/pytest-django
|
||||
pytest-django==3.7.0 # https://github.com/pytest-dev/pytest-django
|
||||
|
|
|
@ -2,20 +2,20 @@
|
|||
|
||||
-r ./base.txt
|
||||
|
||||
gunicorn==19.9.0 # https://github.com/benoitc/gunicorn
|
||||
gunicorn==20.0.4 # https://github.com/benoitc/gunicorn
|
||||
psycopg2==2.8.3 --no-binary psycopg2 # https://github.com/psycopg/psycopg2
|
||||
{%- if cookiecutter.use_whitenoise == 'n' %}
|
||||
Collectfast==1.2.0 # https://github.com/antonagestam/collectfast
|
||||
Collectfast==1.3.1 # https://github.com/antonagestam/collectfast
|
||||
{%- endif %}
|
||||
{%- if cookiecutter.use_sentry == "y" %}
|
||||
sentry-sdk==0.12.3 # https://github.com/getsentry/sentry-python
|
||||
sentry-sdk==0.13.5 # https://github.com/getsentry/sentry-python
|
||||
{%- endif %}
|
||||
|
||||
# Django
|
||||
# ------------------------------------------------------------------------------
|
||||
{%- if cookiecutter.cloud_provider == 'AWS' %}
|
||||
django-storages[boto3]==1.7.2 # https://github.com/jschneier/django-storages
|
||||
django-storages[boto3]==1.8 # https://github.com/jschneier/django-storages
|
||||
{%- elif cookiecutter.cloud_provider == 'GCP' %}
|
||||
django-storages[google]==1.7.2 # https://github.com/jschneier/django-storages
|
||||
django-storages[google]==1.8 # https://github.com/jschneier/django-storages
|
||||
{%- endif %}
|
||||
django-anymail[mailgun]==7.0.0 # https://github.com/anymail/django-anymail
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
{{ form|crispy }}
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<button type="submit" class="btn">Update</button>
|
||||
<button type="submit" class="btn btn-primary">Update</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
Loading…
Reference in New Issue
Block a user