.. _changelog:

================
 Change history
================

Next
====

.. _version-2.7.0:

2.7.0
=====
:release-date: 2024-08-21
:release-by: Christian Clauss (@cclauss)

Added
~~~~~

- Add official support for Django 5.1 (:github_pr:`761`)
- Relax Django upper version to allow version 5.1 (:github_pr:`756`)
- Add ``PeriodicTaskInline`` to the schedule admin to showing tasks using the schedule (:github_pr:`743`)

Fixed
~~~~~

- Fix display of long name day of week in admin (:github_pr:`745`)
- Fix a few French translations (:github_pr:`760`)
- Fix documentation about timezone changes (:github_pr:`769`)
- Remove usages of deprecated setuptools API ``setuptools.command.test`` (:github_pr:`771`)
- Clean up running of ``setup.py`` as it's deprecated (:github_pr:`737`)

Project infrastructure
~~~~~~~~~~~~~~~~~~~~~~

- Automate PyPI release from GitHub actions using trusted publisher (:github_pr:`749`)
- Simplify logic for minimum Python requirement (:github_pr:`765`)
- Add Ruff to pre-commit config (:github_pr:`778`)

.. _version-2.6.0:

2.6.0
=====
:release-date: 2024-03-03
:release-by: Christian Clauss (@cclauss)

- Avoid crash when can not get human readable description (#648).
- Update codeql-analysis.yml (#653).
- Fix CI: Change assert self.app.timezone.zone to assert self.app.timezone.key (#664).
- Drop Django 4.0 from CI to avoid security issues (#662).
- Fix Issue #388: Celery Beat scheduled tasks may be executed repeatedly (#660).
- Update README.rst (#670).
- Update runtime.txt to include Django 5.0 (#681).
- Replace case.patching fixture with mockeypatch + MagicMock (#692).
- Update README.rst - Crontab effect description (#689).
- Update supported Python & Django version in setup.py (#672).
- Add Python 3.12 to test matrix and add classifier (#690).
- Django v5.0: django.utils.timezone.utc alias --> datetime.timezone.utc (#703).
- Upgrade GitHub Actions and PyPy 3.10 and Django 5.0 (#699).
- Testing Django v5.0 on pypy-3.10-v7.3.14 passes (#705).
- Prepare for release v2.6.0 to support Py3.12 and Dj5.0 (#712).
- GitHub Actions: Do not hardcode an out-of-date version of PyPy (#715).
- Use the same order in the admin as in the cron schedule expression (#716).
- Upgrade pip and GitHub Actions dependencies with dependabot (#721).
- Bump github/codeql-action from 2 to 3 (#722).
- Bump actions/checkout from 3 to 4 (#723).
- Update pytest requirement from <8.0,>=6.2.5 to >=6.2.5,<9.0 (#724).
- Remove requirements/test-djangoXY.txt (#728).
- Remove code for unsupported django.VERSION < (3, 2) (#729).
- Added sphinxcontrib-django to extensions (#736).


.. _version-2.5.0:

2.5.0
=====
:release-date: 2023-03-14 4:00 p.m. UTC+6:00
:release-by: Asif Saif Uddin

- Prefetch_related on PeriodicTaskQuerySet.enabled (#608).
- Clarify month range (#615).
- Declare support for Django 4.2 & Python 3.11.
- Adding human readable descriptions of crontab schedules (#622).
- Start time heap block fix (#636).


.. _version-2.4.0:

2.4.0
=====
:release-date: 2022-10-19 7:15 p.m. UTC+6:00
:release-by: Asif Saif Uddin

- Fixed error path for zh-Hans translate (#548).
- Django>=3.2,<4.2 (#567).
- fix: downgrade importlib-metadata<5.0 until celery 5.3.0 release.
- Fixed signals can not connect to OneToOneField (#572) (#573).
- Remove superseded ExtendedQuerySet as it's functionality is built in.
- Wrapped fieldset labels of PeriodicTaskAdmin around gettext_lazy.
- fix: update PeriodicTask from entry (#344).


.. _version-2.3.0:

2.3.0
=====
:release-date:
:release-by:

- Admin "disable_tasks" action also updates PeriodicTask's last_run_at field
- feat: add periodic_task_name in favor of celery/django-celery-results
- Fix ClockedSchedule and PeriodicTasks showing UTC time when Time Zone
- Change last_run_at=None when using disable tasks admin action (#501)
- fix the conflict with celery configuration (#525)
- A unit Test to make sure ClockedSchedule and PeriodicTasks are shown
- Django 4.0 and Python 3.10 support (#528)


.. _version-2.2.1:

2.2.1
=====
:release-date: 2021-07-02 11:15 a.m. UTC+6:00
:release-by: Asif Saif Uddin

- Require celery>=5.0,<6.0
- Enable Django 3.2 CI and add default_auto_field
- Fix locale in dir tree
- Do not blindly delete duplicate schedules (#389)
- Use `python:3.8-slim` for lighter builds

.. _version-2.2.0:

2.2.0
=====
:release-date: 2021-01-19 2:30 p.m. UTC+6:00
:release-by: Asif Saif Uddin

- Fixed compatibility with django-timezone-field>=4.1.0
- Fixed deprecation warnings: 'assertEquals' in tests.
- Fixed SolarSchedule event choices i18n support.
- Updated 'es' .po file metadata
- Update 'fr' .po file metadata
- New schema migrations for SolarSchedule events choices changes in models.

.. _version-2.1.0:

2.1.0
=====
:release-date: 2020-10-20
:release-by: Asif Saif Uddin

- Fix string representation of CrontabSchedule, so it matches UNIX CRON expression format (#318)
- If no schedule is selected in PeriodicTask form, raise a non-field error instead of an error bounded to the `interval` field (#327)
- Fix some Spanish translations (#339)
- Log "Writing entries..." message as DEBUG instead of INFO (#342)
- Use CELERY_TIMEZONE setting as `CrontabSchedule.timezone` default instead of UTC (#346)
- Fix bug in ClockedSchedule that made the schedule stuck after a clocked task was executed. The `enabled` field of ClockedSchedule has been dropped (#341)
- Drop support for Python < 3.6 (#368)
- Add support for Celery 5 and Django 3.1 (#368)

.. _version-2.0.0:

2.0.0
=====
:release-date: 2020-03-18
:release-by: Asif Saif Uddin

- Added support for Django 3.0
- Dropped support for Django < 2.2 and Python < 3.5

.. _version-1.6.0:

1.6.0
=====
:release-date: 2020-02-01 4:30 p.m. UTC+6:00
:release-by: Asif Saif Uddin

- Fixed invalid long_description (#255)
- Exposed read-only field PeriodicTask.last_run_at in Django admin (#257)
- Added docker config to ease development (#260, #261, #264, #288)
- Added validation schedule validation on save (#271)
- Added French translation (#286)
- Fixed case where last_run_at = None and CELERY_TIMEZONE != TIME_ZONE (#294)

.. _version-1.5.0:

1.5.0
=====
:release-date: 2019-05-21 17:00 p.m. UTC+6:00
:release-by: Asif Saif Uddin

- Fixed delay returned when a task has a start_time in the future. (#208)
- PeriodicTaskAdmin: Declare some filtering, for usability (#215)
- fix _default_now is_aware bug (#216)
- Adds support for message headers for periodic tasks (#98)
- make last_run_at tz aware before passing to celery (#233)

.. _version-1.4.0:

1.4.0
=====
:release-date: 2018-12-09 1:30 p.m. UTC+2:00
:release-by: Omer Katz

- Fix migrations dependencies.
- Added the DJANGO_CELERY_BEAT_TZ_AWARE setting.

.. _version-1.3.0:

1.3.0
=====
:release-date: 2018-11-12 17:30 p.m. UTC+2:00
:release-by: Omer Katz

- Fix transaction handling while syncing the schedule.
- Fix schedule type validation logic.
- Scheduler no longer forgets the tasks after first schedule change.
- Fix race condition for schedule_changed() resulting in erroneously closed connections.
- Add support for task priorities when using RabbitMQ or Redis as broker.
- Disabled tasks are now correctly deleted from the schedule.
- Added name as search filter.

.. _version-1.2.0:

1.2.0
=====
:release-date: 2018-10-08 16:00 p.m. UTC+3:00
:release-by: Omer Katz

- Allow timezone-aware Cron schedules.
- Retry later in case of InterfaceError in sync.
- Show Periodic Task Description in panel admin.
- Fix CrontabSchedule example.
- Support Periodic Tasks with a start date and one-off tasks.
- Fixes a problem with beat not reconnecting to MySQL (server restart, network problem, etc.) when checking if schedule has changed.
- Add toggle admin action which allows to activate disabled tasks or deactivate enabled tasks.
- Add fields validation for CrontabSchedule.
- Drop support for Django<1.11.
- Fix task heap invalidation bug which prevented scheduled tasks from running when syncing tasks from the database.
- Raise a ValidationError when more than one type (solar, crontab or interval) of schedule is provided.

.. _version-1.1.1:

1.1.1
=====
:release-date: 2018-2-18 2:30 p.m. UTC+3:00
:release-by: Omer Katz

- Fix interval schedules by providing nowfun.
- Removing code that forced last_run_at to be timezone naive for no reason, made timezone aware. Fixes crontab schedules after celery/celery#4173.
- Entry.last_run_at is no-longer timezone naive.
- Use a localized PyTZ timezone object for now() otherwise conversions fail scheduling breaks resulting in constant running of tasks or possibly not running ever.
- Fix endless migrations creation for solar schedules events.
- Prevent MySQL has gone away errors.
- Added support for Django 2.0.
- Adjust CrontabSchedule's minutes, hour & day_of_month fields max length

.. _version-1.1.0:

1.1.0
=====
:release-date: 2017-10-31 2:30 p.m. UTC+3:00
:release-by: Omer Katz

- Adds default_app_config (Issue celery/celery#3567)
- Adds "run now" admin action for tasks.
- Adds admin actions to toggle tasks.
- Add solar schedules (Issue #8)
- Notify beat of changes when Interval/Crontab models change. (Issue celery/celery#3683)
- Fix PeriodicTask.enable sync issues
- Notify beat of changes when Solar model changes.
- Resolve CSS class conflict with django-adminlte2 package.
- We now support Django 1.11
- Deletes are now performed cascadingly.
- Return schedule for solar periodic tasks so that Celery Beat does not crash when one is scheduled.
- Adding nowfun to solar and crontab schedulers so that the Django timezone is used.

.. _version-1.0.1:

1.0.1
=====
:release-date: 2016-11-07 02:28 p.m. PST
:release-by: Ask Solem

- Now depends on Celery 4.0.0.
- Migration modules were not included in the distribution.
- Adds documentation: http://django-celery-beat.readthedocs.io/

.. _version-1.0.0:

1.0.0
=====
:release-date: 2016-09-08 03:19 p.m. PDT
:release-by: Ask Solem

- Initial release
