diff --git a/.github/contributors.json b/.github/contributors.json index fab5e5f56..bccbb725f 100644 --- a/.github/contributors.json +++ b/.github/contributors.json @@ -1463,5 +1463,10 @@ "name": "itisnotyourenv", "github_login": "itisnotyourenv", "twitter_username": "" + }, + { + "name": "Vageeshan Mankala", + "github_login": "vagi8", + "twitter_username": "" } ] \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3ff9f06aa..17510ae25 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: name: "pytest ${{ matrix.os }}" runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: python-version: "3.11" @@ -53,7 +53,7 @@ jobs: COMPOSE_DOCKER_CLI_BUILD: 1 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: python-version: "3.11" @@ -97,7 +97,7 @@ jobs: DATABASE_URL: "postgres://postgres:postgres@localhost:5432/postgres" steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: python-version: "3.11" diff --git a/.github/workflows/django-issue-checker.yml b/.github/workflows/django-issue-checker.yml index cbfea922d..a926f7513 100644 --- a/.github/workflows/django-issue-checker.yml +++ b/.github/workflows/django-issue-checker.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: python-version: "3.11" diff --git a/.github/workflows/pre-commit-autoupdate.yml b/.github/workflows/pre-commit-autoupdate.yml index 75bfe0a20..67fe9f94a 100644 --- a/.github/workflows/pre-commit-autoupdate.yml +++ b/.github/workflows/pre-commit-autoupdate.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: python-version: "3.11" diff --git a/.github/workflows/update-changelog.yml b/.github/workflows/update-changelog.yml index f48f297aa..eb037b675 100644 --- a/.github/workflows/update-changelog.yml +++ b/.github/workflows/update-changelog.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 diff --git a/.github/workflows/update-contributors.yml b/.github/workflows/update-contributors.yml index 78d72c241..9b93ef6f1 100644 --- a/.github/workflows/update-contributors.yml +++ b/.github/workflows/update-contributors.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6243406b0..01032aec5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -30,7 +30,7 @@ repos: exclude: hooks/ - repo: https://github.com/psf/black - rev: 23.7.0 + rev: 23.9.1 hooks: - id: black diff --git a/CHANGELOG.md b/CHANGELOG.md index aba5b3c5c..6bfa22fbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,42 @@ All enhancements and patches to Cookiecutter Django will be documented in this f +## 2023.09.08 + + +### Updated + +- Update pytest to 7.4.2 ([#4573](https://github.com/cookiecutter/cookiecutter-django/pull/4573)) + +## 2023.09.07 + + +### Updated + +- Update django-allauth to 0.56.0 ([#4571](https://github.com/cookiecutter/cookiecutter-django/pull/4571)) + +## 2023.09.06 + + +### Changed + +- Replace Mailhog with Mailpit ([#4551](https://github.com/cookiecutter/cookiecutter-django/pull/4551)) + +### Updated + +- Update sphinx to 7.2.5 ([#4569](https://github.com/cookiecutter/cookiecutter-django/pull/4569)) + +- Bump actions/checkout from 3 to 4 ([#4565](https://github.com/cookiecutter/cookiecutter-django/pull/4565)) + +- Update coverage to 7.3.1 ([#4567](https://github.com/cookiecutter/cookiecutter-django/pull/4567)) + +## 2023.09.04 + + +### Updated + +- Update django to 4.2.5 ([#4563](https://github.com/cookiecutter/cookiecutter-django/pull/4563)) + ## 2023.09.03 diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 1e7bfd7ac..f7615c108 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -1944,6 +1944,13 @@ Listed in alphabetical order. egregors + + Vageeshan Mankala + + vagi8 + + + vascop diff --git a/README.md b/README.md index 7f2c358e7..c9d3d3489 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ _These features can be enabled during initial project setup._ - Serve static files from Amazon S3, Google Cloud Storage, Azure Storage or [Whitenoise](https://whitenoise.readthedocs.io/) - Configuration for [Celery](https://docs.celeryq.dev) and [Flower](https://github.com/mher/flower) (the latter in Docker setup only) -- Integration with [MailHog](https://github.com/mailhog/MailHog) for local email testing +- Integration with [Mailpit](https://github.com/axllent/mailpit/) for local email testing - Integration with [Sentry](https://sentry.io/welcome/) for error logging ## Constraints @@ -165,7 +165,7 @@ Answer the prompts with your own desired [options](http://cookiecutter-django.re 4 - Webpack Choose from 1, 2, 3, 4 [1]: 1 use_celery [n]: y - use_mailhog [n]: n + use_mailpit [n]: n use_sentry [n]: y use_whitenoise [n]: n use_heroku [n]: y diff --git a/cookiecutter.json b/cookiecutter.json index f66e281f5..e343617d1 100644 --- a/cookiecutter.json +++ b/cookiecutter.json @@ -35,7 +35,7 @@ "use_drf": "n", "frontend_pipeline": ["None", "Django Compressor", "Gulp", "Webpack"], "use_celery": "n", - "use_mailhog": "n", + "use_mailpit": "n", "use_sentry": "n", "use_whitenoise": "n", "use_heroku": "n", diff --git a/docs/developing-locally-docker.rst b/docs/developing-locally-docker.rst index 6af4fe7c2..a8f945adf 100644 --- a/docs/developing-locally-docker.rst +++ b/docs/developing-locally-docker.rst @@ -191,16 +191,16 @@ The ``container_name`` from the yml file can be used to check on containers with Notice that the ``container_name`` is generated dynamically using your project slug as a prefix -Mailhog +Mailpit ~~~~~~~ -When developing locally you can go with MailHog_ for email testing provided ``use_mailhog`` was set to ``y`` on setup. To proceed, +When developing locally you can go with Mailpit_ for email testing provided ``use_mailpit`` was set to ``y`` on setup. To proceed, -#. make sure ``_local_mailhog`` container is up and running; +#. make sure ``_local_mailpit`` container is up and running; #. open up ``http://127.0.0.1:8025``. -.. _Mailhog: https://github.com/mailhog/MailHog/ +.. _Mailpit: https://github.com/axllent/mailpit/ .. _`CeleryTasks`: diff --git a/docs/developing-locally.rst b/docs/developing-locally.rst index 88c8b3206..92379f4fd 100644 --- a/docs/developing-locally.rst +++ b/docs/developing-locally.rst @@ -99,39 +99,37 @@ First things first. Setup Email Backend ------------------- -MailHog +Mailpit ~~~~~~~ -.. note:: In order for the project to support MailHog_ it must have been bootstrapped with ``use_mailhog`` set to ``y``. +.. note:: In order for the project to support Mailpit_ it must have been bootstrapped with ``use_mailpit`` set to ``y``. -MailHog is used to receive emails during development, it is written in Go and has no external dependencies. +Mailpit is used to receive emails during development, it is written in Go and has no external dependencies. For instance, one of the packages we depend upon, ``django-allauth`` sends verification emails to new users signing up as well as to the existing ones who have not yet verified themselves. -#. `Download the latest MailHog release`_ for your OS. +#. `Download the latest Mailpit release`_ for your OS. -#. Rename the build to ``MailHog``. - -#. Copy the file to the project root. +#. Copy the binary file to the project root. #. Make it executable: :: - $ chmod +x MailHog + $ chmod +x mailpit #. Spin up another terminal window and start it there: :: - ./MailHog + ./mailpit #. Check out ``_ to see how it goes. Now you have your own mail server running locally, ready to receive whatever you send it. -.. _`Download the latest MailHog release`: https://github.com/mailhog/MailHog +.. _`Download the latest Mailpit release`: https://github.com/axllent/mailpit Console ~~~~~~~ -.. note:: If you have generated your project with ``use_mailhog`` set to ``n`` this will be a default setup. +.. note:: If you have generated your project with ``use_mailpit`` set to ``n`` this will be a default setup. Alternatively, deliver emails over console via ``EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'``. diff --git a/docs/project-generation-options.rst b/docs/project-generation-options.rst index bd368ae84..967b42426 100644 --- a/docs/project-generation-options.rst +++ b/docs/project-generation-options.rst @@ -115,8 +115,8 @@ Both Gulp and Webpack support Bootstrap recompilation with real-time variables a use_celery: Indicates whether the project should be configured to use Celery_. -use_mailhog: - Indicates whether the project should be configured to use MailHog_. +use_mailpit: + Indicates whether the project should be configured to use Mailpit_. use_sentry: Indicates whether the project should be configured to use Sentry_. @@ -185,7 +185,7 @@ debug: .. _Celery: https://github.com/celery/celery -.. _MailHog: https://github.com/mailhog/MailHog +.. _Mailpit: https://github.com/axllent/mailpit .. _Sentry: https://github.com/getsentry/sentry diff --git a/docs/requirements.txt b/docs/requirements.txt index d06b651b3..0e96d112b 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,3 +1,3 @@ -sphinx==6.2.1 -sphinx-rtd-theme==1.2.2 +sphinx==7.2.5 +sphinx-rtd-theme==1.3.0 myst-parser==2.0.0 diff --git a/requirements.txt b/requirements.txt index 019537110..1144741f3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ binaryornot==0.4.4 # Code quality # ------------------------------------------------------------------------------ -black==23.7.0 +black==23.9.1 isort==5.12.0 flake8==6.1.0 django-upgrade==1.14.1 @@ -13,8 +13,8 @@ pre-commit==3.4.0 # Testing # ------------------------------------------------------------------------------ -tox==4.11.1 -pytest==7.4.1 +tox==4.11.3 +pytest==7.4.2 pytest-xdist==3.3.1 pytest-cookies==0.7.0 pytest-instafail==0.5.0 @@ -23,6 +23,6 @@ pyyaml==6.0.1 # Scripting # ------------------------------------------------------------------------------ PyGithub==1.59.1 -gitpython==3.1.34 +gitpython==3.1.35 jinja2==3.1.2 requests==2.31.0 diff --git a/setup.py b/setup.py index 586e516fe..c1e6a6468 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ except ImportError: from distutils.core import setup # We use calendar versioning -version = "2023.09.03" +version = "2023.09.08" with open("README.md") as readme_file: long_description = readme_file.read() diff --git a/tests/test_cookiecutter_generation.py b/tests/test_cookiecutter_generation.py index 87e52ef01..31d006bed 100755 --- a/tests/test_cookiecutter_generation.py +++ b/tests/test_cookiecutter_generation.py @@ -115,8 +115,8 @@ SUPPORTED_COMBINATIONS = [ {"frontend_pipeline": "Webpack"}, {"use_celery": "y"}, {"use_celery": "n"}, - {"use_mailhog": "y"}, - {"use_mailhog": "n"}, + {"use_mailpit": "y"}, + {"use_mailpit": "n"}, {"use_sentry": "y"}, {"use_sentry": "n"}, {"use_whitenoise": "y"}, diff --git a/{{cookiecutter.project_slug}}/.github/workflows/ci.yml b/{{cookiecutter.project_slug}}/.github/workflows/ci.yml index 3a863ccb9..e39933fe1 100644 --- a/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +++ b/{{cookiecutter.project_slug}}/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Code Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 @@ -65,7 +65,7 @@ jobs: steps: - name: Checkout Code Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 {%- if cookiecutter.use_docker == 'y' %} - name: Build the Stack diff --git a/{{cookiecutter.project_slug}}/.gitignore b/{{cookiecutter.project_slug}}/.gitignore index 541f40846..0bb322186 100644 --- a/{{cookiecutter.project_slug}}/.gitignore +++ b/{{cookiecutter.project_slug}}/.gitignore @@ -329,8 +329,8 @@ tags dump.rdb ### Project template -{%- if cookiecutter.use_mailhog == 'y' and cookiecutter.use_docker == 'n' %} -MailHog +{%- if cookiecutter.use_mailpit == 'y' and cookiecutter.use_docker == 'n' %} +mailpit {%- endif %} {{ cookiecutter.project_slug }}/media/ diff --git a/{{cookiecutter.project_slug}}/.pre-commit-config.yaml b/{{cookiecutter.project_slug}}/.pre-commit-config.yaml index 2a03db795..fb249f2c0 100644 --- a/{{cookiecutter.project_slug}}/.pre-commit-config.yaml +++ b/{{cookiecutter.project_slug}}/.pre-commit-config.yaml @@ -37,7 +37,7 @@ repos: args: [--py311-plus] - repo: https://github.com/psf/black - rev: 23.7.0 + rev: 23.9.1 hooks: - id: black diff --git a/{{cookiecutter.project_slug}}/README.md b/{{cookiecutter.project_slug}}/README.md index 56853f8f7..ccf245a2f 100644 --- a/{{cookiecutter.project_slug}}/README.md +++ b/{{cookiecutter.project_slug}}/README.md @@ -78,37 +78,35 @@ celery -A config.celery_app worker -B -l info ``` {%- endif %} -{%- if cookiecutter.use_mailhog == "y" %} +{%- if cookiecutter.use_mailpit == "y" %} ### Email Server {%- if cookiecutter.use_docker == "y" %} -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 [MailHog](https://github.com/mailhog/MailHog) 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 mailhog 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. -With MailHog 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 %} -In development, it is often nice to be able to see emails that are being sent from your application. If you choose to use [MailHog](https://github.com/mailhog/MailHog) when generating the project a local SMTP server with a web interface will be available. +In development, it is often nice to be able to see emails that are being sent from your application. If you choose to use [Mailpit](https://github.com/axllent/mailpit) when generating the project a local SMTP server with a web interface will be available. -1. [Download the latest MailHog release](https://github.com/mailhog/MailHog/releases) for your OS. +1. [Download the latest Mailpit release](https://github.com/axllent/mailpit/releases) for your OS. -2. Rename the build to `MailHog`. +2. Copy the binary file to the project root. -3. Copy the file to the project root. +3. Make it executable: -4. Make it executable: + $ chmod +x mailpit - $ chmod +x MailHog +4. Spin up another terminal window and start it there: -5. Spin up another terminal window and start it there: + ./mailpit - ./MailHog - -6. Check out to see how it goes. +5. Check out to see how it goes. Now you have your own mail server running locally, ready to receive whatever you send it. diff --git a/{{cookiecutter.project_slug}}/config/settings/base.py b/{{cookiecutter.project_slug}}/config/settings/base.py index 688713313..331ff06e2 100644 --- a/{{cookiecutter.project_slug}}/config/settings/base.py +++ b/{{cookiecutter.project_slug}}/config/settings/base.py @@ -161,6 +161,7 @@ MIDDLEWARE = [ "django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.messages.middleware.MessageMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", + "allauth.account.middleware.AccountMiddleware", ] # STATIC diff --git a/{{cookiecutter.project_slug}}/config/settings/local.py b/{{cookiecutter.project_slug}}/config/settings/local.py index adab6087a..0304d6cd4 100644 --- a/{{cookiecutter.project_slug}}/config/settings/local.py +++ b/{{cookiecutter.project_slug}}/config/settings/local.py @@ -25,12 +25,12 @@ CACHES = { # EMAIL # ------------------------------------------------------------------------------ -{% if cookiecutter.use_mailhog == 'y' and cookiecutter.use_docker == 'y' -%} +{% if cookiecutter.use_mailpit == 'y' and cookiecutter.use_docker == 'y' -%} # https://docs.djangoproject.com/en/dev/ref/settings/#email-host -EMAIL_HOST = env("EMAIL_HOST", default="mailhog") +EMAIL_HOST = env("EMAIL_HOST", default="mailpit") # https://docs.djangoproject.com/en/dev/ref/settings/#email-port EMAIL_PORT = 1025 -{%- elif cookiecutter.use_mailhog == 'y' and cookiecutter.use_docker == 'n' -%} +{%- elif cookiecutter.use_mailpit == 'y' and cookiecutter.use_docker == 'n' -%} # https://docs.djangoproject.com/en/dev/ref/settings/#email-host EMAIL_HOST = "localhost" # https://docs.djangoproject.com/en/dev/ref/settings/#email-port diff --git a/{{cookiecutter.project_slug}}/local.yml b/{{cookiecutter.project_slug}}/local.yml index e55e18d32..692d87499 100644 --- a/{{cookiecutter.project_slug}}/local.yml +++ b/{{cookiecutter.project_slug}}/local.yml @@ -16,8 +16,8 @@ services: {%- if cookiecutter.use_celery == 'y' %} - redis {%- endif %} - {%- if cookiecutter.use_mailhog == 'y' %} - - mailhog + {%- if cookiecutter.use_mailpit == 'y' %} + - mailpit {%- endif %} volumes: - .:/app:z @@ -55,11 +55,11 @@ services: ports: - '9000:9000' command: /start-docs - {%- if cookiecutter.use_mailhog == 'y' %} + {%- if cookiecutter.use_mailpit == 'y' %} - mailhog: - image: mailhog/mailhog:v1.0.0 - container_name: {{ cookiecutter.project_slug }}_local_mailhog + mailpit: + image: axllent/mailpit:v1.8 + container_name: {{ cookiecutter.project_slug }}_local_mailpit ports: - "8025:8025" @@ -77,8 +77,8 @@ services: depends_on: - redis - postgres - {%- if cookiecutter.use_mailhog == 'y' %} - - mailhog + {%- if cookiecutter.use_mailpit == 'y' %} + - mailpit {%- endif %} ports: [] command: /start-celeryworker @@ -90,8 +90,8 @@ services: depends_on: - redis - postgres - {%- if cookiecutter.use_mailhog == 'y' %} - - mailhog + {%- if cookiecutter.use_mailpit == 'y' %} + - mailpit {%- endif %} ports: [] command: /start-celerybeat diff --git a/{{cookiecutter.project_slug}}/requirements/base.txt b/{{cookiecutter.project_slug}}/requirements/base.txt index 6ab01b791..61660121b 100644 --- a/{{cookiecutter.project_slug}}/requirements/base.txt +++ b/{{cookiecutter.project_slug}}/requirements/base.txt @@ -31,7 +31,7 @@ uvicorn[standard]==0.23.2 # https://github.com/encode/uvicorn django==4.2.5 # pyup: < 5.0 # https://www.djangoproject.com/ django-environ==0.11.2 # https://github.com/joke2k/django-environ django-model-utils==4.3.1 # https://github.com/jazzband/django-model-utils -django-allauth==0.55.2 # https://github.com/pennersr/django-allauth +django-allauth==0.56.1 # https://github.com/pennersr/django-allauth django-crispy-forms==2.0 # https://github.com/django-crispy-forms/django-crispy-forms crispy-bootstrap5==0.7 # https://github.com/django-crispy-forms/crispy-bootstrap5 {%- if cookiecutter.frontend_pipeline == 'Django Compressor' %} diff --git a/{{cookiecutter.project_slug}}/requirements/local.txt b/{{cookiecutter.project_slug}}/requirements/local.txt index bb125cc4b..349ddb423 100644 --- a/{{cookiecutter.project_slug}}/requirements/local.txt +++ b/{{cookiecutter.project_slug}}/requirements/local.txt @@ -15,7 +15,7 @@ watchfiles==0.20.0 # https://github.com/samuelcolvin/watchfiles # ------------------------------------------------------------------------------ mypy==1.4.1 # https://github.com/python/mypy django-stubs[compatible-mypy]==4.2.3 # https://github.com/typeddjango/django-stubs -pytest==7.4.1 # https://github.com/pytest-dev/pytest +pytest==7.4.2 # https://github.com/pytest-dev/pytest pytest-sugar==0.9.7 # https://github.com/Frozenball/pytest-sugar {%- if cookiecutter.use_drf == "y" %} djangorestframework-stubs[compatible-mypy]==3.14.2 # https://github.com/typeddjango/djangorestframework-stubs @@ -23,15 +23,15 @@ djangorestframework-stubs[compatible-mypy]==3.14.2 # https://github.com/typeddj # Documentation # ------------------------------------------------------------------------------ -sphinx==6.2.1 # https://github.com/sphinx-doc/sphinx +sphinx==7.2.5 # https://github.com/sphinx-doc/sphinx sphinx-autobuild==2021.3.14 # https://github.com/GaretJax/sphinx-autobuild # Code quality # ------------------------------------------------------------------------------ flake8==6.1.0 # https://github.com/PyCQA/flake8 flake8-isort==6.0.0 # https://github.com/gforcada/flake8-isort -coverage==7.3.0 # https://github.com/nedbat/coveragepy -black==23.7.0 # https://github.com/psf/black +coverage==7.3.1 # https://github.com/nedbat/coveragepy +black==23.9.1 # https://github.com/psf/black djlint==1.32.1 # https://github.com/Riverside-Healthcare/djLint pylint-django==2.5.3 # https://github.com/PyCQA/pylint-django {%- if cookiecutter.use_celery == 'y' %}