New Upstream Release - python-django-celery-beat
Ready changes
Summary
Merged new upstream version: 2.5.0 (was: 2.4.0).
Diff
diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index 65c36bb..661d620 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -1,5 +1,5 @@
[bumpversion]
-current_version = 2.4.0
+current_version = 2.5.0
commit = True
tag = True
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(?P<releaselevel>[a-z]+)?
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index f8c5f66..03933bc 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -2,9 +2,9 @@ name: CI
on:
push:
- branches: [ master ]
+ branches: [ main ]
pull_request:
- branches: [ master ]
+ branches: [ main ]
jobs:
build:
@@ -12,7 +12,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- python-version: ['3.7', '3.8', '3.9', '3.10', 'pypy-3.9']
+ python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', 'pypy-3.9']
services:
rabbitmq:
diff --git a/.github/workflows/tidelift.yml b/.github/workflows/tidelift.yml
deleted file mode 100644
index d62a8a7..0000000
--- a/.github/workflows/tidelift.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-name: Tidelift Alignment
-on:
- schedule:
- - cron: "30 2 * * *" # daily at 02:30 UTC
- push:
- paths:
- - ".github/workflows/tidelift.yml"
-
- workflow_dispatch:
-
-jobs:
- build:
- if: github.repository_owner == 'celery'
- name: Ensure approved open source packages are in use
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Scan
- uses: tidelift/alignment-action@main
- env:
- TIDELIFT_API_KEY: ${{ secrets.TIDELIFT_API_KEY }}
- TIDELIFT_ORGANIZATION: team/auvipy
- TIDELIFT_PROJECT: celeryproject
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index b07fb49..e8111b6 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -3,13 +3,13 @@ exclude: "migrations"
repos:
- repo: https://github.com/asottile/pyupgrade
- rev: v3.1.0
+ rev: v3.3.1
hooks:
- id: pyupgrade
args: ["--py37-plus"]
- repo: https://github.com/PyCQA/flake8
- rev: 5.0.4
+ rev: 6.0.0
hooks:
- id: flake8
@@ -19,7 +19,7 @@ repos:
- id: yesqa
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.3.0
+ rev: v4.4.0
hooks:
- id: check-merge-conflict
- id: check-toml
@@ -27,6 +27,6 @@ repos:
- id: mixed-line-ending
- repo: https://github.com/pycqa/isort
- rev: 5.10.1
+ rev: 5.12.0
hooks:
- id: isort
diff --git a/Changelog b/Changelog
index 0d3abcb..cfcdfb3 100644
--- a/Changelog
+++ b/Changelog
@@ -4,6 +4,20 @@
Change history
================
+.. _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
diff --git a/README.rst b/README.rst
index b2e14ab..f1e9f3b 100644
--- a/README.rst
+++ b/README.rst
@@ -4,7 +4,7 @@
|build-status| |coverage| |license| |wheel| |pyversion| |pyimp|
-:Version: 2.4.0
+:Version: 2.5.0
:Web: http://django-celery-beat.readthedocs.io/
:Download: http://pypi.python.org/pypi/django-celery-beat
:Source: http://github.com/celery/django-celery-beat
diff --git a/debian/changelog b/debian/changelog
index d6ba37f..f8eb6ab 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+python-django-celery-beat (2.5.0-1) UNRELEASED; urgency=low
+
+ * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk> Sat, 08 Apr 2023 03:42:55 -0000
+
python-django-celery-beat (2.4.0-1) unstable; urgency=low
* New upstream release.
diff --git a/debian/patches/0001-Use-local-objects.inv-in-intersphinx-mapping.patch b/debian/patches/0001-Use-local-objects.inv-in-intersphinx-mapping.patch
index 0f791c1..8786c9f 100644
--- a/debian/patches/0001-Use-local-objects.inv-in-intersphinx-mapping.patch
+++ b/debian/patches/0001-Use-local-objects.inv-in-intersphinx-mapping.patch
@@ -6,10 +6,10 @@ Subject: Use local objects.inv in intersphinx mapping.
docs/conf.py | 47 ++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 40 insertions(+), 7 deletions(-)
-diff --git a/docs/conf.py b/docs/conf.py
-index 29e8031..9cd570b 100644
---- a/docs/conf.py
-+++ b/docs/conf.py
+Index: python-django-celery-beat.git/docs/conf.py
+===================================================================
+--- python-django-celery-beat.git.orig/docs/conf.py
++++ python-django-celery-beat.git/docs/conf.py
@@ -1,7 +1,46 @@
import os
+import sys
diff --git a/debian/patches/0002-Drop-requirement-on-tzdata.patch b/debian/patches/0002-Drop-requirement-on-tzdata.patch
index 00debe7..0628258 100644
--- a/debian/patches/0002-Drop-requirement-on-tzdata.patch
+++ b/debian/patches/0002-Drop-requirement-on-tzdata.patch
@@ -12,13 +12,14 @@ Signed-off-by: Mattia Rizzolo <mattia@debian.org>
requirements/default.txt | 1 -
1 file changed, 1 deletion(-)
-diff --git a/requirements/default.txt b/requirements/default.txt
-index 3374e92..889d9db 100644
---- a/requirements/default.txt
-+++ b/requirements/default.txt
-@@ -2,5 +2,4 @@ celery>=5.2.3,<6.0
+Index: python-django-celery-beat.git/requirements/default.txt
+===================================================================
+--- python-django-celery-beat.git.orig/requirements/default.txt
++++ python-django-celery-beat.git/requirements/default.txt
+@@ -2,6 +2,5 @@ celery>=5.2.3,<6.0
importlib-metadata<5.0; python_version<"3.8" # TODO: remove this when celery >= 5.3.0
django-timezone-field>=5.0
backports.zoneinfo; python_version<"3.9"
-tzdata
python-crontab>=2.3.4
+ cron-descriptor>=1.2.32
diff --git a/django_celery_beat/__init__.py b/django_celery_beat/__init__.py
index 6f2b62d..c118085 100644
--- a/django_celery_beat/__init__.py
+++ b/django_celery_beat/__init__.py
@@ -7,7 +7,7 @@ from collections import namedtuple
import django
-__version__ = '2.4.0'
+__version__ = '2.5.0'
__author__ = 'Asif Saif Uddin, Ask Solem'
__contact__ = 'auvipy@gmail.com, ask@celeryproject.org'
__homepage__ = 'https://github.com/celery/django-celery-beat'
diff --git a/django_celery_beat/admin.py b/django_celery_beat/admin.py
index d43e671..0ba8a12 100644
--- a/django_celery_beat/admin.py
+++ b/django_celery_beat/admin.py
@@ -112,7 +112,7 @@ class PeriodicTaskAdmin(admin.ModelAdmin):
model = PeriodicTask
celery_app = current_app
date_hierarchy = 'start_time'
- list_display = ('__str__', 'enabled', 'interval', 'start_time',
+ list_display = ('name', 'enabled', 'scheduler', 'interval', 'start_time',
'last_run_at', 'one_off')
list_filter = ['enabled', 'one_off', 'task', 'start_time', 'last_run_at']
actions = ('enable_tasks', 'disable_tasks', 'toggle_tasks', 'run_tasks')
@@ -123,8 +123,8 @@ class PeriodicTaskAdmin(admin.ModelAdmin):
'classes': ('extrapretty', 'wide'),
}),
(_('Schedule'), {
- 'fields': ('interval', 'crontab', 'solar', 'clocked',
- 'start_time', 'last_run_at', 'one_off'),
+ 'fields': ('interval', 'crontab', 'crontab_translation', 'solar',
+ 'clocked', 'start_time', 'last_run_at', 'one_off'),
'classes': ('extrapretty', 'wide'),
}),
(_('Arguments'), {
@@ -138,12 +138,28 @@ class PeriodicTaskAdmin(admin.ModelAdmin):
}),
)
readonly_fields = (
- 'last_run_at',
+ 'last_run_at', 'crontab_translation',
)
+ def crontab_translation(self, obj):
+ return obj.crontab.human_readable
+
+ change_form_template = 'admin/djcelery/change_periodictask_form.html'
+
+ def changeform_view(self, request, object_id=None, form_url='',
+ extra_context=None):
+ extra_context = extra_context or {}
+ crontabs = CrontabSchedule.objects.all()
+ crontab_dict = {}
+ for crontab in crontabs:
+ crontab_dict[crontab.id] = crontab.human_readable
+ extra_context['readable_crontabs'] = crontab_dict
+ return super().changeform_view(request, object_id,
+ extra_context=extra_context)
+
def changelist_view(self, request, extra_context=None):
extra_context = extra_context or {}
- scheduler = getattr(settings, 'CELERYBEAT_SCHEDULER', None)
+ scheduler = getattr(settings, 'CELERY_BEAT_SCHEDULER', None)
extra_context['wrong_scheduler'] = not is_database_scheduler(scheduler)
return super().changelist_view(
request, extra_context)
@@ -247,8 +263,12 @@ class ClockedScheduleAdmin(admin.ModelAdmin):
)
+class CrontabScheduleAdmin(admin.ModelAdmin):
+ list_display = ('__str__', 'human_readable')
+
+
admin.site.register(IntervalSchedule)
-admin.site.register(CrontabSchedule)
+admin.site.register(CrontabSchedule, CrontabScheduleAdmin)
admin.site.register(SolarSchedule)
admin.site.register(ClockedSchedule, ClockedScheduleAdmin)
admin.site.register(PeriodicTask, PeriodicTaskAdmin)
diff --git a/django_celery_beat/locale/de/LC_MESSAGES/django.mo b/django_celery_beat/locale/de/LC_MESSAGES/django.mo
index 87ea8bd..7e6b1d9 100644
Binary files a/django_celery_beat/locale/de/LC_MESSAGES/django.mo and b/django_celery_beat/locale/de/LC_MESSAGES/django.mo differ
diff --git a/django_celery_beat/locale/de/LC_MESSAGES/django.po b/django_celery_beat/locale/de/LC_MESSAGES/django.po
index 8ea78c7..3427ba5 100644
--- a/django_celery_beat/locale/de/LC_MESSAGES/django.po
+++ b/django_celery_beat/locale/de/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-08-28 01:05+0000\n"
+"POT-Creation-Date: 2022-12-22 18:56+0000\n"
"PO-Revision-Date: 2022-08-28 03:29+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -18,316 +18,326 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.1.1\n"
-#: admin.py:60
+#: django_celery_beat/admin.py:60
msgid "Task (registered)"
msgstr "Aufgabe (registriert)"
-#: admin.py:64
+#: django_celery_beat/admin.py:64
msgid "Task (custom)"
msgstr "Aufgabe (benutzerdefiniert)"
-#: admin.py:81
+#: django_celery_beat/admin.py:81
msgid "Need name of task"
msgstr "Name der Aufgabe benötigt"
-#: admin.py:87 models.py:593
+#: django_celery_beat/admin.py:87 django_celery_beat/models.py:605
msgid "Only one can be set, in expires and expire_seconds"
msgstr ""
"Es kann nur eine festgelegt werden, \"Ablaufdatum\" oder \"Ablauf-Timedelta "
"in Sekunden\""
-#: admin.py:97
+#: django_celery_beat/admin.py:97
#, python-format
msgid "Unable to parse JSON: %s"
msgstr "Ausserstande JSON zu parsen: %s"
-#: admin.py:125
+#: django_celery_beat/admin.py:125
msgid "Schedule"
msgstr "Zeitplan"
-#: admin.py:130
+#: django_celery_beat/admin.py:130
msgid "Arguments"
msgstr "Argumente"
-#: admin.py:134
+#: django_celery_beat/admin.py:134
msgid "Execution Options"
msgstr "Ausführungsoptionen"
-#: admin.py:163
+#: django_celery_beat/admin.py:177
#, python-brace-format
msgid "{0} task{1} {2} successfully {3}"
msgstr "{0} Aufgabe{1} {2} erfolgreich {3}"
-#: admin.py:166 admin.py:233
+#: django_celery_beat/admin.py:180 django_celery_beat/admin.py:247
msgid "was,were"
msgstr "war,waren"
-#: admin.py:175
+#: django_celery_beat/admin.py:189
msgid "Enable selected tasks"
msgstr "Ausgewählte Aufgaben aktivieren"
-#: admin.py:181
+#: django_celery_beat/admin.py:195
msgid "Disable selected tasks"
msgstr "Ausgewählte Aufgaben deaktivieren"
-#: admin.py:193
+#: django_celery_beat/admin.py:207
msgid "Toggle activity of selected tasks"
msgstr "Aktivität ausgewählter Aufgaben ein-/ausschalten"
-#: admin.py:214
-#, python-brace-format
-msgid "task \"{0}\" not found"
+#: django_celery_beat/admin.py:228
+#, fuzzy, python-brace-format
+#| msgid "task \"{0}\" not found"
+msgid "task \"{not_found_task_name}\" not found"
msgstr "Aufgabe \"{0}\" nicht gefunden"
-#: admin.py:230
+#: django_celery_beat/admin.py:244
#, python-brace-format
msgid "{0} task{1} {2} successfully run"
msgstr "{0} Aufgabe{1} {2} erfolgreich ausgeführt"
-#: admin.py:236
+#: django_celery_beat/admin.py:250
msgid "Run selected tasks"
msgstr "Ausgewählte Aufgaben ausführen"
-#: apps.py:13
+#: django_celery_beat/apps.py:13
msgid "Periodic Tasks"
msgstr "Periodische Aufgaben"
-#: models.py:30
+#: django_celery_beat/models.py:30
msgid "Days"
msgstr "Tage"
-#: models.py:31
+#: django_celery_beat/models.py:31
msgid "Hours"
msgstr "Stunden"
-#: models.py:32
+#: django_celery_beat/models.py:32
msgid "Minutes"
msgstr "Minuten"
-#: models.py:33
+#: django_celery_beat/models.py:33
msgid "Seconds"
msgstr "Sekunden"
-#: models.py:34
+#: django_celery_beat/models.py:34
msgid "Microseconds"
msgstr "Mikrosekunden"
-#: models.py:38
+#: django_celery_beat/models.py:38
msgid "Day"
msgstr "Tag"
-#: models.py:39
+#: django_celery_beat/models.py:39
msgid "Hour"
msgstr "Stunde"
-#: models.py:40
+#: django_celery_beat/models.py:40
msgid "Minute"
msgstr "Minute"
-#: models.py:41
+#: django_celery_beat/models.py:41
msgid "Second"
msgstr "Sekunde"
-#: models.py:42
+#: django_celery_beat/models.py:42
msgid "Microsecond"
msgstr "Mikrosekunde"
-#: models.py:46
+#: django_celery_beat/models.py:46
msgid "Astronomical dawn"
msgstr "Astronomische Morgendämmerung"
-#: models.py:47
+#: django_celery_beat/models.py:47
msgid "Civil dawn"
msgstr "Zivile Morgendämmerung"
-#: models.py:48
+#: django_celery_beat/models.py:48
msgid "Nautical dawn"
msgstr "Nautische Morgendämmerung"
-#: models.py:49
+#: django_celery_beat/models.py:49
msgid "Astronomical dusk"
msgstr "Astronomische Dämmerung"
-#: models.py:50
+#: django_celery_beat/models.py:50
msgid "Civil dusk"
msgstr "Zivile Dämmerung"
-#: models.py:51
+#: django_celery_beat/models.py:51
msgid "Nautical dusk"
msgstr "Nautische Dämmerung"
-#: models.py:52
+#: django_celery_beat/models.py:52
msgid "Solar noon"
msgstr "Sonnenmittag"
-#: models.py:53
+#: django_celery_beat/models.py:53
msgid "Sunrise"
msgstr "Sonnenaufgang"
-#: models.py:54
+#: django_celery_beat/models.py:54
msgid "Sunset"
msgstr "Sonnenuntergang"
-#: models.py:88
+#: django_celery_beat/models.py:88
msgid "Solar Event"
msgstr "Sonnenereigniss"
-#: models.py:89
+#: django_celery_beat/models.py:89
msgid "The type of solar event when the job should run"
msgstr "Die Art des Solarereignisses, wenn die Aufgabe ausgeführt werden soll"
-#: models.py:93
+#: django_celery_beat/models.py:93
msgid "Latitude"
msgstr "Breitengrad"
-#: models.py:94
+#: django_celery_beat/models.py:94
msgid "Run the task when the event happens at this latitude"
msgstr ""
"Führen Sie diese Aufgabe aus, wenn das Ereignis in diesem Breitengrad "
"auftritt"
-#: models.py:99
+#: django_celery_beat/models.py:99
msgid "Longitude"
msgstr "Längengrad"
-#: models.py:100
+#: django_celery_beat/models.py:100
msgid "Run the task when the event happens at this longitude"
msgstr ""
"Führen Sie diese Aufgabe aus, wenn das Ereignis in diesem Längengrad auftritt"
-#: models.py:107
+#: django_celery_beat/models.py:107
msgid "solar event"
msgstr "Sonnenereigniss"
-#: models.py:108
+#: django_celery_beat/models.py:108
msgid "solar events"
msgstr "Sonnenereignisse"
-#: models.py:158
+#: django_celery_beat/models.py:158
msgid "Number of Periods"
msgstr "Anzahl der Perioden"
-#: models.py:159
+#: django_celery_beat/models.py:159
msgid "Number of interval periods to wait before running the task again"
msgstr ""
"Anzahl der Intervallperioden, die gewartet werden sollen, bevor der Task "
"erneut ausgeführt wird"
-#: models.py:165
+#: django_celery_beat/models.py:165
msgid "Interval Period"
msgstr "Intervallperiode"
-#: models.py:166
+#: django_celery_beat/models.py:166
msgid "The type of period between task runs (Example: days)"
msgstr "Der Typ des Zeitraums zwischen den Taskläufen (Beispiel: Tage)"
-#: models.py:172
+#: django_celery_beat/models.py:172
msgid "interval"
msgstr "Intervall"
-#: models.py:173
+#: django_celery_beat/models.py:173
msgid "intervals"
msgstr "Intervalle"
-#: models.py:200
+#: django_celery_beat/models.py:200
msgid "every {}"
msgstr "jede {}"
-#: models.py:205
+#: django_celery_beat/models.py:205
msgid "every {} {}"
msgstr "jede {} {}"
-#: models.py:216
+#: django_celery_beat/models.py:216
msgid "Clock Time"
msgstr "Uhrzeit"
-#: models.py:217
+#: django_celery_beat/models.py:217
msgid "Run the task at clocked time"
msgstr "Die Aufgabe zur Uhrzeit ausführen"
-#: models.py:223 models.py:224
+#: django_celery_beat/models.py:223 django_celery_beat/models.py:224
msgid "clocked"
msgstr "Getaktet"
-#: models.py:264
+#: django_celery_beat/models.py:264
msgid "Minute(s)"
msgstr "Minute(n)"
-#: models.py:266
+#: django_celery_beat/models.py:266
msgid "Cron Minutes to Run. Use \"*\" for \"all\". (Example: \"0,30\")"
msgstr ""
"Cron Minuten zur Ausführung. Verwenden Sie \"*\" für \"alle\". (Beispiel: "
"\"0,30\")"
-#: models.py:271
+#: django_celery_beat/models.py:271
msgid "Hour(s)"
msgstr "Stunde(n)"
-#: models.py:273
+#: django_celery_beat/models.py:273
msgid "Cron Hours to Run. Use \"*\" for \"all\". (Example: \"8,20\")"
msgstr ""
"Cron Stunden zur Ausführung. Verwenden Sie \"*\" für \"alle\". (Beispiel: "
"„8,20“)"
-#: models.py:278
+#: django_celery_beat/models.py:278
msgid "Day(s) Of The Week"
msgstr "Tag(e) der Woche"
-#: models.py:280
-msgid "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")"
+#: django_celery_beat/models.py:280
+#, fuzzy
+#| msgid ""
+#| "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")"
+msgid ""
+"Cron Days Of The Week to Run. Use \"*\" for \"all\", Sunday is 0 or 7, "
+"Monday is 1. (Example: \"0,5\")"
msgstr ""
-"Cron Tage der Woche zur Ausführung. Verwenden Sie \"*\" für \"alle\". "
-"(Beispiel: \"0,5\")"
+"Cron Tage der Woche zur Ausführung. Verwenden Sie \"*\" für \"alle\", Sonntag ist 0 oder 7, "
+"Montag ist 1. (Beispiel: \"0,5\")"
-#: models.py:286
+#: django_celery_beat/models.py:286
msgid "Day(s) Of The Month"
msgstr "Tag(e) des Monats"
-#: models.py:288
+#: django_celery_beat/models.py:288
msgid ""
"Cron Days Of The Month to Run. Use \"*\" for \"all\". (Example: \"1,15\")"
msgstr ""
"Cron Tage des Monats zur Ausführung. Verwenden Sie \"*\" für \"alle\". "
"(Beispiel: \"1,15\")"
-#: models.py:294
+#: django_celery_beat/models.py:294
msgid "Month(s) Of The Year"
msgstr "Monat(e) des Jahres"
-#: models.py:296
+#: django_celery_beat/models.py:296
+#, fuzzy
+#| msgid ""
+#| "Cron Months Of The Year to Run. Use \"*\" for \"all\". (Example: \"0,6\")"
msgid ""
-"Cron Months Of The Year to Run. Use \"*\" for \"all\". (Example: \"0,6\")"
+"Cron Months (1-12) Of The Year to Run. Use \"*\" for \"all\". (Example: "
+"\"1,12\")"
msgstr ""
"Cron Monate des Jahres zur Ausführung. Verwenden Sie \"*\" für \"alle\". "
"(Beispiel: \"0,6\")"
-#: models.py:304
+#: django_celery_beat/models.py:304
msgid "Cron Timezone"
msgstr "Cron Zeitzone"
-#: models.py:306
+#: django_celery_beat/models.py:306
msgid "Timezone to Run the Cron Schedule on. Default is UTC."
msgstr ""
"Zeitzone, in der der Cron-Zeitplan ausgeführt werden soll. Der Standardwert "
"ist UTC."
-#: models.py:312
+#: django_celery_beat/models.py:312
msgid "crontab"
msgstr "Crontab"
-#: models.py:313
+#: django_celery_beat/models.py:313
msgid "crontabs"
msgstr "Crontabs"
-#: models.py:397
+#: django_celery_beat/models.py:404
msgid "Name"
msgstr "Name"
-#: models.py:398
+#: django_celery_beat/models.py:405
msgid "Short Description For This Task"
msgstr "Kurzbeschreibung für diese Aufgabe"
-#: models.py:403
+#: django_celery_beat/models.py:410
msgid ""
"The Name of the Celery Task that Should be Run. (Example: \"proj.tasks."
"import_contacts\")"
@@ -335,11 +345,11 @@ msgstr ""
"Der Name des Celery-Tasks, der ausgeführt werden soll. (Beispiel: \"proj."
"tasks.import_contacts\")"
-#: models.py:411
+#: django_celery_beat/models.py:418
msgid "Interval Schedule"
msgstr "Intervall-Zeitplan"
-#: models.py:412
+#: django_celery_beat/models.py:419
msgid ""
"Interval Schedule to run the task on. Set only one schedule type, leave the "
"others null."
@@ -347,11 +357,11 @@ msgstr ""
"Intervallzeitplan zum Ausführen der Aufgabe. Legen Sie nur einen Zeitplantyp "
"fest und lassen Sie die anderen null."
-#: models.py:417
+#: django_celery_beat/models.py:424
msgid "Crontab Schedule"
msgstr "Crontab-Zeitplan"
-#: models.py:418
+#: django_celery_beat/models.py:425
msgid ""
"Crontab Schedule to run the task on. Set only one schedule type, leave the "
"others null."
@@ -359,11 +369,11 @@ msgstr ""
"Crontab Zeitplan zum Ausführen der Aufgabe. Legen Sie nur einen Zeitplantyp "
"fest und lassen Sie die anderen null."
-#: models.py:423
+#: django_celery_beat/models.py:430
msgid "Solar Schedule"
msgstr "Solar-Zeitplan"
-#: models.py:424
+#: django_celery_beat/models.py:431
msgid ""
"Solar Schedule to run the task on. Set only one schedule type, leave the "
"others null."
@@ -371,11 +381,11 @@ msgstr ""
"Solarzeitplan, um die Aufgabe auszuführen. Legen Sie nur einen Zeitplantyp "
"fest und lassen Sie die anderen auf null."
-#: models.py:429
+#: django_celery_beat/models.py:436
msgid "Clocked Schedule"
msgstr "Getakteter-Zeitplan"
-#: models.py:430
+#: django_celery_beat/models.py:437
msgid ""
"Clocked Schedule to run the task on. Set only one schedule type, leave the "
"others null."
@@ -383,62 +393,62 @@ msgstr ""
"Getakteter Zeitplan zum Ausführen der Aufgabe. Legen Sie nur einen "
"Zeitplantyp fest und lassen Sie die anderen null."
-#: models.py:436
+#: django_celery_beat/models.py:443
msgid "Positional Arguments"
msgstr "Positionsargumente"
-#: models.py:438
+#: django_celery_beat/models.py:445
msgid "JSON encoded positional arguments (Example: [\"arg1\", \"arg2\"])"
msgstr "JSON-Codierte Positionsargumente (Beispiel: [\"arg1\", \"arg2\"])"
-#: models.py:443
+#: django_celery_beat/models.py:450
msgid "Keyword Arguments"
msgstr "Schlüsselwort-Argumente"
-#: models.py:445
+#: django_celery_beat/models.py:452
msgid "JSON encoded keyword arguments (Example: {\"argument\": \"value\"})"
msgstr ""
"JSON-Codierte Schlüsselwortargumente (Beispiel: {\"argument\": \"wert\"})"
-#: models.py:451
+#: django_celery_beat/models.py:458
msgid "Queue Override"
msgstr "Warteschlangenüberschreibung"
-#: models.py:453
+#: django_celery_beat/models.py:460
msgid "Queue defined in CELERY_TASK_QUEUES. Leave None for default queuing."
msgstr ""
"In CELERY_TASK_QUEUES definierte Warteschlange. Auf None lassen, für die "
"Standardwarteschlange."
-#: models.py:462
+#: django_celery_beat/models.py:469
msgid "Exchange"
msgstr "Exchange"
-#: models.py:463
+#: django_celery_beat/models.py:470
msgid "Override Exchange for low-level AMQP routing"
msgstr "Override Exchange für Low-Level-AMQP-Routing"
-#: models.py:467
+#: django_celery_beat/models.py:474
msgid "Routing Key"
msgstr "Routing-Schlüssel"
-#: models.py:468
+#: django_celery_beat/models.py:475
msgid "Override Routing Key for low-level AMQP routing"
msgstr "Override Routing Key für Low-Level-AMQP-Routing"
-#: models.py:472
+#: django_celery_beat/models.py:479
msgid "AMQP Message Headers"
msgstr "AMQP-Nachrichtenheader"
-#: models.py:473
+#: django_celery_beat/models.py:480
msgid "JSON encoded message headers for the AMQP message."
msgstr "JSON-Codierte Nachrichtenheader für die AMQP-Nachricht."
-#: models.py:479
+#: django_celery_beat/models.py:486
msgid "Priority"
msgstr "Priorität"
-#: models.py:481
+#: django_celery_beat/models.py:488
msgid ""
"Priority Number between 0 and 255. Supported by: RabbitMQ, Redis (priority "
"reversed, 0 is highest)."
@@ -446,22 +456,22 @@ msgstr ""
"Prioritätsnummer zwischen 0 und 255. Unterstützt von: RabbitMQ, Redis "
"(Priorität umgekehrt, 0 ist am höchsten)."
-#: models.py:486
+#: django_celery_beat/models.py:493
msgid "Expires Datetime"
msgstr "Ablaufdatum"
-#: models.py:488
+#: django_celery_beat/models.py:495
msgid ""
"Datetime after which the schedule will no longer trigger the task to run"
msgstr ""
"Zeitpunkt, nach dem der Zeitplan die Ausführung die Aufgabe nicht mehr "
"auslöst"
-#: models.py:493
+#: django_celery_beat/models.py:500
msgid "Expires timedelta with seconds"
msgstr "Ablauf-Timedelta in Sekunden"
-#: models.py:495
+#: django_celery_beat/models.py:502
msgid ""
"Timedelta with seconds which the schedule will no longer trigger the task to "
"run"
@@ -469,37 +479,37 @@ msgstr ""
"Timedelta in Sekunden, die der Zeitplan nicht mehr auslöst, um die Aufgabe "
"auszuführen"
-#: models.py:501
+#: django_celery_beat/models.py:508
msgid "One-off Task"
msgstr "Einmalige Aufgabe"
-#: models.py:503
+#: django_celery_beat/models.py:510
msgid "If True, the schedule will only run the task a single time"
msgstr "Wenn aktiv, wird die Aufgabe im Zeitplan nur einmal ausgeführt"
-#: models.py:507
+#: django_celery_beat/models.py:514
msgid "Start Datetime"
msgstr "Start-Datum"
-#: models.py:509
+#: django_celery_beat/models.py:516
msgid "Datetime when the schedule should begin triggering the task to run"
msgstr ""
"Zeitpunkt, zu der der Zeitplan beginnen soll, die Ausführung der Aufgabe "
"auszulösen"
-#: models.py:514
+#: django_celery_beat/models.py:521
msgid "Enabled"
msgstr "Aktiviert"
-#: models.py:515
+#: django_celery_beat/models.py:522
msgid "Set to False to disable the schedule"
msgstr "Deaktivieren zum deaktivieren -_-"
-#: models.py:520
+#: django_celery_beat/models.py:527
msgid "Last Run Datetime"
msgstr "Uhrzeit der letzten Ausführung"
-#: models.py:522
+#: django_celery_beat/models.py:529
msgid ""
"Datetime that the schedule last triggered the task to run. Reset to None if "
"enabled is set to False."
@@ -507,38 +517,38 @@ msgstr ""
"Uhrzeit, zu der der letzte Zeitplan die Ausführung die Aufgabe ausgelöst "
"hat. Setzt auf Keine zurück, wenn \"Aktiviert\" ist auf False gesetzt wird."
-#: models.py:527
+#: django_celery_beat/models.py:534
msgid "Total Run Count"
msgstr "Gesamtzahl der Durchgänge"
-#: models.py:529
+#: django_celery_beat/models.py:536
msgid "Running count of how many times the schedule has triggered the task"
msgstr "Laufende Zählung, wie oft der Zeitplan die Aufgabe ausgelöst hat"
-#: models.py:534
+#: django_celery_beat/models.py:541
msgid "Last Modified"
msgstr "Zuletzt geändert"
-#: models.py:535
+#: django_celery_beat/models.py:542
msgid "Datetime that this PeriodicTask was last modified"
msgstr "Uhrzeit zu dem diese periodische Aufgabe zuletzt modifiziert wurde"
-#: models.py:539
+#: django_celery_beat/models.py:546
msgid "Description"
msgstr "Beschreibung"
-#: models.py:541
+#: django_celery_beat/models.py:548
msgid "Detailed description about the details of this Periodic Task"
msgstr "Detaillierte Beschreibung der Details dieser periodischen Aufgabe"
-#: models.py:550
+#: django_celery_beat/models.py:557
msgid "periodic task"
msgstr "Periodische Aufgabe"
-#: models.py:551
+#: django_celery_beat/models.py:558
msgid "periodic tasks"
msgstr "Periodische Aufgaben"
-#: templates/admin/djcelery/change_list.html:6
+#: django_celery_beat/templates/admin/djcelery/change_list.html:6
msgid "Home"
msgstr "Start"
diff --git a/django_celery_beat/locale/es/LC_MESSAGES/django.mo b/django_celery_beat/locale/es/LC_MESSAGES/django.mo
index 89cd5dc..aa7d417 100644
Binary files a/django_celery_beat/locale/es/LC_MESSAGES/django.mo and b/django_celery_beat/locale/es/LC_MESSAGES/django.mo differ
diff --git a/django_celery_beat/locale/es/LC_MESSAGES/django.po b/django_celery_beat/locale/es/LC_MESSAGES/django.po
index 7317fcc..0faa3b3 100644
--- a/django_celery_beat/locale/es/LC_MESSAGES/django.po
+++ b/django_celery_beat/locale/es/LC_MESSAGES/django.po
@@ -257,9 +257,9 @@ msgid "Day(s) Of The Week"
msgstr "Día(s) de la semana"
#: django_celery_beat/models.py:274
-msgid "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")"
+msgid "Cron Days Of The Week to Run. Use \"*\" for \"all\", Sunday is 0 or 7, Monday is 1. (Example: \"0,5\")"
msgstr ""
-"Días de la semana Cron cuando ejecutar. Usa \"*\" para \"todos\". (Ejemplo: "
+"Días de la semana Cron cuando ejecutar. Usa \"*\" para \"todos\", Domingo es 0 o 7, Lunes es 1. (Ejemplo: "
"\"0,5\")"
#: django_celery_beat/models.py:280
diff --git a/django_celery_beat/locale/fr/LC_MESSAGES/django.mo b/django_celery_beat/locale/fr/LC_MESSAGES/django.mo
index 340c1bb..8adf028 100644
Binary files a/django_celery_beat/locale/fr/LC_MESSAGES/django.mo and b/django_celery_beat/locale/fr/LC_MESSAGES/django.mo differ
diff --git a/django_celery_beat/locale/fr/LC_MESSAGES/django.po b/django_celery_beat/locale/fr/LC_MESSAGES/django.po
index a5a8929..b7f8d3b 100644
--- a/django_celery_beat/locale/fr/LC_MESSAGES/django.po
+++ b/django_celery_beat/locale/fr/LC_MESSAGES/django.po
@@ -7,69 +7,86 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-11-10 14:36+0000\n"
+"POT-Creation-Date: 2022-12-22 19:03+0000\n"
"PO-Revision-Date: 2022-10-14 23:48+0200\n"
"Last-Translator: Álvaro Mondéjar <mondejar1994@gmail.com>\n"
-"Language-Team: n"
-"Language: fr\n"
+"Language-Team: nLanguage: fr\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: django_celery_beat/admin.py:69
+#: django_celery_beat/admin.py:60
msgid "Task (registered)"
msgstr "Tâche (enregistrée)"
-#: django_celery_beat/admin.py:73
+#: django_celery_beat/admin.py:64
msgid "Task (custom)"
msgstr "Tâche (personalisée)"
-#: django_celery_beat/admin.py:90
+#: django_celery_beat/admin.py:81
msgid "Need name of task"
msgstr "Besoin du nom de la tâche"
-#: django_celery_beat/admin.py:96 django_celery_beat/models.py:595
+#: django_celery_beat/admin.py:87 django_celery_beat/models.py:605
msgid "Only one can be set, in expires and expire_seconds"
msgstr "Seulement un peu être définie, soit expires ou expire_seconds"
-#: django_celery_beat/admin.py:106
+#: django_celery_beat/admin.py:97
#, python-format
msgid "Unable to parse JSON: %s"
msgstr "Incapable d'analyser le JSON: %s"
-#: django_celery_beat/admin.py:172
+#: django_celery_beat/admin.py:125
+#, fuzzy
+#| msgid "Solar Schedule"
+msgid "Schedule"
+msgstr "Planification Solaire"
+
+#: django_celery_beat/admin.py:130
+#, fuzzy
+#| msgid "Keyword Arguments"
+msgid "Arguments"
+msgstr "Arguments Nommés"
+
+#: django_celery_beat/admin.py:134
+msgid "Execution Options"
+msgstr ""
+
+#: django_celery_beat/admin.py:177
#, python-brace-format
msgid "{0} task{1} {2} successfully {3}"
msgstr "{0} tâche{1} {2} avec succès {3}"
-#: django_celery_beat/admin.py:175 django_celery_beat/admin.py:237
+#: django_celery_beat/admin.py:180 django_celery_beat/admin.py:247
msgid "was,were"
msgstr "a été,ont été"
-#: django_celery_beat/admin.py:184
+#: django_celery_beat/admin.py:189
msgid "Enable selected tasks"
msgstr "Active les tâches sélectionnées"
-#: django_celery_beat/admin.py:190
+#: django_celery_beat/admin.py:195
msgid "Disable selected tasks"
msgstr "Désactive les tâches sélectionnées"
-#: django_celery_beat/admin.py:202
+#: django_celery_beat/admin.py:207
msgid "Toggle activity of selected tasks"
msgstr "Bascule l'activité des tâches sélectionnées"
-#: django_celery_beat/admin.py:222
-#, python-brace-format
-msgid "task \"{0}\" not found"
+#: django_celery_beat/admin.py:228
+#, fuzzy, python-brace-format
+#| msgid "task \"{0}\" not found"
+msgid "task \"{not_found_task_name}\" not found"
msgstr "tâche \"{0}\" introuvable"
-#: django_celery_beat/admin.py:234
+#: django_celery_beat/admin.py:244
#, python-brace-format
msgid "{0} task{1} {2} successfully run"
msgstr "{0} tâche{1} {2} a fonctionnée avec succès"
-#: django_celery_beat/admin.py:240
+#: django_celery_beat/admin.py:250
msgid "Run selected tasks"
msgstr "Démarre les tâches sélectionnées"
@@ -77,242 +94,247 @@ msgstr "Démarre les tâches sélectionnées"
msgid "Periodic Tasks"
msgstr "Tâches Périodique"
-#: django_celery_beat/models.py:26
+#: django_celery_beat/models.py:30
msgid "Days"
msgstr "Jours"
-#: django_celery_beat/models.py:27
+#: django_celery_beat/models.py:31
msgid "Hours"
msgstr "Heures"
-#: django_celery_beat/models.py:28
+#: django_celery_beat/models.py:32
msgid "Minutes"
msgstr "Minutes"
-#: django_celery_beat/models.py:29
+#: django_celery_beat/models.py:33
msgid "Seconds"
msgstr "Secondes"
-#: django_celery_beat/models.py:30
+#: django_celery_beat/models.py:34
msgid "Microseconds"
msgstr "Microsecondes"
-#: django_celery_beat/models.py:34
+#: django_celery_beat/models.py:38
msgid "Day"
msgstr "Jour"
-#: django_celery_beat/models.py:35
+#: django_celery_beat/models.py:39
msgid "Hour"
msgstr "Heure"
-#: django_celery_beat/models.py:36
+#: django_celery_beat/models.py:40
msgid "Minute"
msgstr "Minute"
-#: django_celery_beat/models.py:37
+#: django_celery_beat/models.py:41
msgid "Second"
msgstr "Seconde"
-#: django_celery_beat/models.py:38
+#: django_celery_beat/models.py:42
msgid "Microsecond"
msgstr "Microseconde"
-#: django_celery_beat/models.py:42
+#: django_celery_beat/models.py:46
msgid "Astronomical dawn"
msgstr "Aube astronomique"
-#: django_celery_beat/models.py:43
+#: django_celery_beat/models.py:47
msgid "Civil dawn"
msgstr "Aube civile"
-#: django_celery_beat/models.py:44
+#: django_celery_beat/models.py:48
msgid "Nautical dawn"
msgstr "Aube nautique"
-#: django_celery_beat/models.py:45
+#: django_celery_beat/models.py:49
msgid "Astronomical dusk"
msgstr "Crépuscule astronomique"
-#: django_celery_beat/models.py:46
+#: django_celery_beat/models.py:50
msgid "Civil dusk"
msgstr "Crépuscule civil"
-#: django_celery_beat/models.py:47
+#: django_celery_beat/models.py:51
msgid "Nautical dusk"
msgstr "Crépuscule nautique"
-#: django_celery_beat/models.py:48
+#: django_celery_beat/models.py:52
msgid "Solar noon"
msgstr "Midi solaire"
-#: django_celery_beat/models.py:49
+#: django_celery_beat/models.py:53
msgid "Sunrise"
msgstr "Lever du soleil"
-#: django_celery_beat/models.py:50
+#: django_celery_beat/models.py:54
msgid "Sunset"
msgstr "Coucher du soleil"
-#: django_celery_beat/models.py:82
+#: django_celery_beat/models.py:88
msgid "Solar Event"
msgstr "Évènement Solaire"
-#: django_celery_beat/models.py:83
+#: django_celery_beat/models.py:89
msgid "The type of solar event when the job should run"
msgstr "Le type d'évènement solaire pour lequel la tâche devrait démarrer"
-#: django_celery_beat/models.py:87
+#: django_celery_beat/models.py:93
msgid "Latitude"
msgstr "Latitude"
-#: django_celery_beat/models.py:88
+#: django_celery_beat/models.py:94
msgid "Run the task when the event happens at this latitude"
msgstr "Démarre cette tâche lorsque l'évènement se produit à cette latitude"
-#: django_celery_beat/models.py:93
+#: django_celery_beat/models.py:99
msgid "Longitude"
msgstr "Longitude"
-#: django_celery_beat/models.py:94
+#: django_celery_beat/models.py:100
msgid "Run the task when the event happens at this longitude"
msgstr "Démarre cette tâche lorsque cet évènement se produit à cette longitude"
-#: django_celery_beat/models.py:101
+#: django_celery_beat/models.py:107
msgid "solar event"
msgstr "évènement solaire"
-#: django_celery_beat/models.py:102
+#: django_celery_beat/models.py:108
msgid "solar events"
msgstr "évènements solaire"
-#: django_celery_beat/models.py:151
+#: django_celery_beat/models.py:158
msgid "Number of Periods"
msgstr "Nombre de Périodes"
-#: django_celery_beat/models.py:152
+#: django_celery_beat/models.py:159
msgid "Number of interval periods to wait before running the task again"
msgstr ""
"Nombre d'intervale de périodes à attendre avant de démarrer la tâche à "
"nouveau"
-#: django_celery_beat/models.py:158
+#: django_celery_beat/models.py:165
msgid "Interval Period"
msgstr "Période d'Intervale"
-#: django_celery_beat/models.py:159
+#: django_celery_beat/models.py:166
msgid "The type of period between task runs (Example: days)"
msgstr "Le type de période entre chaque démarrage de tâche (Exemple: jours)"
-#: django_celery_beat/models.py:165
+#: django_celery_beat/models.py:172
msgid "interval"
msgstr "intervale"
-#: django_celery_beat/models.py:166
+#: django_celery_beat/models.py:173
msgid "intervals"
msgstr "intervales"
-#: django_celery_beat/models.py:194
+#: django_celery_beat/models.py:200
msgid "every {}"
msgstr "chaque {}"
-#: django_celery_beat/models.py:199
+#: django_celery_beat/models.py:205
msgid "every {} {}"
msgstr "chaque {} {}"
-#: django_celery_beat/models.py:210
+#: django_celery_beat/models.py:216
msgid "Clock Time"
msgstr "Horaire"
-#: django_celery_beat/models.py:211
+#: django_celery_beat/models.py:217
msgid "Run the task at clocked time"
msgstr "Démarre la tâche à l'horaire définie"
-#: django_celery_beat/models.py:217 django_celery_beat/models.py:517
-msgid "Set to False to disable the schedule"
-msgstr "Mettre à Faux pour désactiver la planification"
-
#: django_celery_beat/models.py:223 django_celery_beat/models.py:224
msgid "clocked"
msgstr "horaire"
-#: django_celery_beat/models.py:266
+#: django_celery_beat/models.py:264
msgid "Minute(s)"
msgstr "Minute⋅s"
-#: django_celery_beat/models.py:268
+#: django_celery_beat/models.py:266
msgid "Cron Minutes to Run. Use \"*\" for \"all\". (Example: \"0,30\")"
msgstr ""
"Minutes Cron pour démarrer. Utilisez \"*\" pour \"toutes\". (Exemple: "
"\"0,30\")"
-#: django_celery_beat/models.py:273
+#: django_celery_beat/models.py:271
msgid "Hour(s)"
msgstr "Heure⋅s"
-#: django_celery_beat/models.py:275
+#: django_celery_beat/models.py:273
msgid "Cron Hours to Run. Use \"*\" for \"all\". (Example: \"8,20\")"
msgstr ""
"Heures Cron pour démarrer. Utilisez \"*\" pour \"toutes\". (Exemple: "
"\"8,20\")"
-#: django_celery_beat/models.py:280
+#: django_celery_beat/models.py:278
msgid "Day(s) Of The Week"
msgstr "Jour⋅s de la semaine"
-#: django_celery_beat/models.py:282
-msgid "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")"
+#: django_celery_beat/models.py:280
+#, fuzzy
+#| msgid ""
+#| "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")"
+msgid ""
+"Cron Days Of The Week to Run. Use \"*\" for \"all\", Sunday is 0 or 7, "
+"Monday is 1. (Example: \"0,5\")"
msgstr ""
"Jours De La Semaine Cron pour Démarrer. Utilisez \"*\" pour \"tous\". "
"(Exemple: \"0,5\")"
-#: django_celery_beat/models.py:288
+#: django_celery_beat/models.py:286
msgid "Day(s) Of The Month"
msgstr "Jour⋅s Du mois"
-#: django_celery_beat/models.py:290
+#: django_celery_beat/models.py:288
msgid ""
"Cron Days Of The Month to Run. Use \"*\" for \"all\". (Example: \"1,15\")"
msgstr ""
"Jours Du mois Cron pour démarrer. Utilisez \"*\" pour \"tous\". (Exemple: "
"\"1,15\")"
-#: django_celery_beat/models.py:296
+#: django_celery_beat/models.py:294
msgid "Month(s) Of The Year"
msgstr "Mois De L'année"
-#: django_celery_beat/models.py:298
+#: django_celery_beat/models.py:296
+#, fuzzy
+#| msgid ""
+#| "Cron Months Of The Year to Run. Use \"*\" for \"all\". (Example: \"0,6\")"
msgid ""
-"Cron Months Of The Year to Run. Use \"*\" for \"all\". (Example: \"0,6\")"
+"Cron Months (1-12) Of The Year to Run. Use \"*\" for \"all\". (Example: "
+"\"1,12\")"
msgstr ""
-"Mois De L'année Cron pour démarrer. Utilisez \"*\" pour \"tous\". (Exemple:"
-" ,6\")"
+"Mois De L'année Cron pour démarrer. Utilisez \"*\" pour \"tous\". (Exemple: "
+",6\")"
-#: django_celery_beat/models.py:305
+#: django_celery_beat/models.py:304
msgid "Cron Timezone"
msgstr "Fuseau horaire Cron"
-#: django_celery_beat/models.py:307
+#: django_celery_beat/models.py:306
msgid "Timezone to Run the Cron Schedule on. Default is UTC."
msgstr ""
"Fuseau horaire pour lequel démarrer la planification Cron. UTC par défaut."
-#: django_celery_beat/models.py:313
+#: django_celery_beat/models.py:312
msgid "crontab"
msgstr "crontab"
-#: django_celery_beat/models.py:314
+#: django_celery_beat/models.py:313
msgid "crontabs"
msgstr "crontabs"
-#: django_celery_beat/models.py:399
+#: django_celery_beat/models.py:404
msgid "Name"
msgstr "Nom"
-#: django_celery_beat/models.py:400
+#: django_celery_beat/models.py:405
msgid "Short Description For This Task"
msgstr "Description courte pour cette tâche"
-#: django_celery_beat/models.py:405
+#: django_celery_beat/models.py:410
msgid ""
"The Name of the Celery Task that Should be Run. (Example: \"proj.tasks."
"import_contacts\")"
@@ -320,11 +342,11 @@ msgstr ""
"Le nom de la tâche Celery qui devrait être démarrée. (Exemple: \"proj.tasks."
"import_contacts\")"
-#: django_celery_beat/models.py:413
+#: django_celery_beat/models.py:418
msgid "Interval Schedule"
msgstr "Planification intervalée"
-#: django_celery_beat/models.py:414
+#: django_celery_beat/models.py:419
msgid ""
"Interval Schedule to run the task on. Set only one schedule type, leave the "
"others null."
@@ -332,11 +354,11 @@ msgstr ""
"Planification intervalée pour démarrer cette tâche. Ne mettez qu'un seul "
"type de planification, laissez les autres vides"
-#: django_celery_beat/models.py:419
+#: django_celery_beat/models.py:424
msgid "Crontab Schedule"
msgstr "Planification Crontab"
-#: django_celery_beat/models.py:420
+#: django_celery_beat/models.py:425
msgid ""
"Crontab Schedule to run the task on. Set only one schedule type, leave the "
"others null."
@@ -344,11 +366,11 @@ msgstr ""
"Planification Crontab pour démarrer cette tâche. Ne mettez qu'un seul type "
"de planification, laissez les autres vides"
-#: django_celery_beat/models.py:425
+#: django_celery_beat/models.py:430
msgid "Solar Schedule"
msgstr "Planification Solaire"
-#: django_celery_beat/models.py:426
+#: django_celery_beat/models.py:431
msgid ""
"Solar Schedule to run the task on. Set only one schedule type, leave the "
"others null."
@@ -356,11 +378,11 @@ msgstr ""
"Planification Solaire pour démarrer cette tâche. Ne mettez qu'un seul type "
"de planification, laissez les autres vides"
-#: django_celery_beat/models.py:431
+#: django_celery_beat/models.py:436
msgid "Clocked Schedule"
msgstr "Planification Horaire"
-#: django_celery_beat/models.py:432
+#: django_celery_beat/models.py:437
msgid ""
"Clocked Schedule to run the task on. Set only one schedule type, leave the "
"others null."
@@ -368,61 +390,61 @@ msgstr ""
"Planification Horaire pour démarrer cette tâche. Ne mettez qu'un seul type "
"de planification, laissez les autres vides"
-#: django_celery_beat/models.py:438
+#: django_celery_beat/models.py:443
msgid "Positional Arguments"
msgstr "Arguments Positionnels"
-#: django_celery_beat/models.py:440
+#: django_celery_beat/models.py:445
msgid "JSON encoded positional arguments (Example: [\"arg1\", \"arg2\"])"
msgstr "Arguments positionnels encodés en JSON (Exemple: [\"arg1\", \"arg2\"])"
-#: django_celery_beat/models.py:445
+#: django_celery_beat/models.py:450
msgid "Keyword Arguments"
msgstr "Arguments Nommés"
-#: django_celery_beat/models.py:447
+#: django_celery_beat/models.py:452
msgid "JSON encoded keyword arguments (Example: {\"argument\": \"value\"})"
msgstr "Arguments Nommés encodés en JSON (Exemple: {\"argument\": \"valeur\"})"
-#: django_celery_beat/models.py:453
+#: django_celery_beat/models.py:458
msgid "Queue Override"
msgstr "Surcharge de file d'attente"
-#: django_celery_beat/models.py:455
+#: django_celery_beat/models.py:460
msgid "Queue defined in CELERY_TASK_QUEUES. Leave None for default queuing."
msgstr ""
"File d'attente définie dans CELERY_TASK_QEUEUS. Laissez Vide pour la mise en "
"file d'attente par défaut."
-#: django_celery_beat/models.py:464
+#: django_celery_beat/models.py:469
msgid "Exchange"
msgstr "Échange"
-#: django_celery_beat/models.py:465
+#: django_celery_beat/models.py:470
msgid "Override Exchange for low-level AMQP routing"
msgstr "Surcharge d'échange pour un routage AMQP bas-niveau"
-#: django_celery_beat/models.py:469
+#: django_celery_beat/models.py:474
msgid "Routing Key"
msgstr "Clé de routage"
-#: django_celery_beat/models.py:470
+#: django_celery_beat/models.py:475
msgid "Override Routing Key for low-level AMQP routing"
msgstr "Surcharge de clé de routage pour un routage AMQP bas-niveau"
-#: django_celery_beat/models.py:474
+#: django_celery_beat/models.py:479
msgid "AMQP Message Headers"
msgstr "Message d'en-têtes AMQP"
-#: django_celery_beat/models.py:475
+#: django_celery_beat/models.py:480
msgid "JSON encoded message headers for the AMQP message."
msgstr "Message d'en-têtes encodés en JSON pour le message AMQP"
-#: django_celery_beat/models.py:481
+#: django_celery_beat/models.py:486
msgid "Priority"
msgstr "Priorité"
-#: django_celery_beat/models.py:483
+#: django_celery_beat/models.py:488
msgid ""
"Priority Number between 0 and 255. Supported by: RabbitMQ, Redis (priority "
"reversed, 0 is highest)."
@@ -430,22 +452,22 @@ msgstr ""
"Valeur de priorité entre 0 et 255. Supporté par: RabbitMQ, Redis (priorité "
"inversé, 0 est plus élevé)."
-#: django_celery_beat/models.py:488
+#: django_celery_beat/models.py:493
msgid "Expires Datetime"
msgstr "Date et heure d'expiration"
-#: django_celery_beat/models.py:490
+#: django_celery_beat/models.py:495
msgid ""
"Datetime after which the schedule will no longer trigger the task to run"
msgstr ""
"Date et heure après laquelle la planification ne déclenchera plus la tâche à "
"démarrer"
-#: django_celery_beat/models.py:495
+#: django_celery_beat/models.py:500
msgid "Expires timedelta with seconds"
msgstr "Différence de temps en secondes d'expiration"
-#: django_celery_beat/models.py:497
+#: django_celery_beat/models.py:502
msgid ""
"Timedelta with seconds which the schedule will no longer trigger the task to "
"run"
@@ -453,33 +475,37 @@ msgstr ""
"Différence de temps en secondes à laquelle la planification ne déclenchera "
"plus la tâche à démarrer"
-#: django_celery_beat/models.py:503
+#: django_celery_beat/models.py:508
msgid "One-off Task"
msgstr "Tâche Ponctuelle"
-#: django_celery_beat/models.py:505
+#: django_celery_beat/models.py:510
msgid "If True, the schedule will only run the task a single time"
msgstr "Si Vrai, la planification ne démarrera la tâche qu'une seule fois"
-#: django_celery_beat/models.py:507
-msgid "Enabled"
-msgstr "Activé"
-
-#: django_celery_beat/models.py:509
+#: django_celery_beat/models.py:514
msgid "Start Datetime"
msgstr "Date et heure de démarrage"
-#: django_celery_beat/models.py:511
+#: django_celery_beat/models.py:516
msgid "Datetime when the schedule should begin triggering the task to run"
msgstr ""
"Date et heure à laquelle la planification devrait commencer à déclencher la "
"tâche à démarrer"
+#: django_celery_beat/models.py:521
+msgid "Enabled"
+msgstr "Activé"
+
#: django_celery_beat/models.py:522
+msgid "Set to False to disable the schedule"
+msgstr "Mettre à Faux pour désactiver la planification"
+
+#: django_celery_beat/models.py:527
msgid "Last Run Datetime"
msgstr "Date et heure du dernier démarrage"
-#: django_celery_beat/models.py:524
+#: django_celery_beat/models.py:529
msgid ""
"Datetime that the schedule last triggered the task to run. Reset to None if "
"enabled is set to False."
@@ -487,34 +513,38 @@ msgstr ""
"Date et heure à laquelle la planification à dernièrement déclenchée la tâche "
"à démarrer. Est remis à Vide si activé est mis à Faux"
-#: django_celery_beat/models.py:529
+#: django_celery_beat/models.py:534
msgid "Total Run Count"
msgstr "Nombre total de démarrages"
-#: django_celery_beat/models.py:531
+#: django_celery_beat/models.py:536
msgid "Running count of how many times the schedule has triggered the task"
msgstr "Compte combien de fois la planification a déclenchée la tâche"
-#: django_celery_beat/models.py:536
+#: django_celery_beat/models.py:541
msgid "Last Modified"
msgstr "Dernière modification"
-#: django_celery_beat/models.py:537
+#: django_celery_beat/models.py:542
msgid "Datetime that this PeriodicTask was last modified"
msgstr "Date et heure de la dernière modification de cette Tâche Périodique"
-#: django_celery_beat/models.py:541
+#: django_celery_beat/models.py:546
msgid "Description"
msgstr "Description"
-#: django_celery_beat/models.py:543
+#: django_celery_beat/models.py:548
msgid "Detailed description about the details of this Periodic Task"
msgstr "Description détaillée à propos des détails de cette Tâche Périodique"
-#: django_celery_beat/models.py:552
+#: django_celery_beat/models.py:557
msgid "periodic task"
msgstr "tâche périodique"
-#: django_celery_beat/models.py:553
+#: django_celery_beat/models.py:558
msgid "periodic tasks"
msgstr "tâches périodique"
+
+#: django_celery_beat/templates/admin/djcelery/change_list.html:6
+msgid "Home"
+msgstr ""
diff --git a/django_celery_beat/locale/ko/LC_MESSAGES/django.mo b/django_celery_beat/locale/ko/LC_MESSAGES/django.mo
index 3c77300..f392d06 100644
Binary files a/django_celery_beat/locale/ko/LC_MESSAGES/django.mo and b/django_celery_beat/locale/ko/LC_MESSAGES/django.mo differ
diff --git a/django_celery_beat/locale/ko/LC_MESSAGES/django.po b/django_celery_beat/locale/ko/LC_MESSAGES/django.po
index c776b03..aed2c74 100644
--- a/django_celery_beat/locale/ko/LC_MESSAGES/django.po
+++ b/django_celery_beat/locale/ko/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-24 09:35+0000\n"
+"POT-Creation-Date: 2022-12-22 19:03+0000\n"
"PO-Revision-Date: 2022-10-14 23:48+0200\n"
"Last-Translator: Jaeyoung Heo <jay.jaeyoung@gmail.com>\n"
"Language-Team: \n"
@@ -16,59 +16,77 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: django_celery_beat/admin.py:64
+
+#: django_celery_beat/admin.py:60
msgid "Task (registered)"
msgstr "등록 태스크 목록"
-#: django_celery_beat/admin.py:68
+#: django_celery_beat/admin.py:64
msgid "Task (custom)"
msgstr "사용자 정의 태스크"
-#: django_celery_beat/admin.py:85
+#: django_celery_beat/admin.py:81
msgid "Need name of task"
msgstr "태스크 이름이 필요 합니다."
-#: django_celery_beat/admin.py:91 django_celery_beat/models.py:586
+#: django_celery_beat/admin.py:87 django_celery_beat/models.py:605
msgid "Only one can be set, in expires and expire_seconds"
msgstr "'만료 시각'과 '만료 기준 초' 중에 하나만 지정할 수 있습니다."
-#: django_celery_beat/admin.py:101
+#: django_celery_beat/admin.py:97
#, python-format
msgid "Unable to parse JSON: %s"
msgstr "해석할 수 없습니다. JSON: %s"
-#: django_celery_beat/admin.py:167
+#: django_celery_beat/admin.py:125
+#, fuzzy
+#| msgid "Solar Schedule"
+msgid "Schedule"
+msgstr "Solar Schedule"
+
+#: django_celery_beat/admin.py:130
+#, fuzzy
+#| msgid "Keyword Arguments"
+msgid "Arguments"
+msgstr "Keyword Arguments"
+
+#: django_celery_beat/admin.py:134
+msgid "Execution Options"
+msgstr ""
+
+#: django_celery_beat/admin.py:177
#, python-brace-format
msgid "{0} task{1} {2} successfully {3}"
msgstr "{0} 태스크{1} {2} 성공적으로 {3}"
-#: django_celery_beat/admin.py:170 django_celery_beat/admin.py:233
+#: django_celery_beat/admin.py:180 django_celery_beat/admin.py:247
msgid "was,were"
msgstr "가,들이"
-#: django_celery_beat/admin.py:179
+#: django_celery_beat/admin.py:189
msgid "Enable selected tasks"
msgstr "선택된 태스크들을 활성화 합니다."
-#: django_celery_beat/admin.py:185
+#: django_celery_beat/admin.py:195
msgid "Disable selected tasks"
msgstr "선택된 태스크들을 비활성화 합니다."
-#: django_celery_beat/admin.py:197
+#: django_celery_beat/admin.py:207
msgid "Toggle activity of selected tasks"
msgstr "선택된 태스크들의 활성화 상태를 토글 합니다."
-#: django_celery_beat/admin.py:218
-#, python-brace-format
-msgid "task \"{0}\" not found"
+#: django_celery_beat/admin.py:228
+#, fuzzy, python-brace-format
+#| msgid "task \"{0}\" not found"
+msgid "task \"{not_found_task_name}\" not found"
msgstr "태스크 \"{0}\" 을 찾을 수 없습니다."
-#: django_celery_beat/admin.py:230
+#: django_celery_beat/admin.py:244
#, python-brace-format
msgid "{0} task{1} {2} successfully run"
msgstr "{0} 태스크{1} {2} 성공적으로 작동했습니다."
-#: django_celery_beat/admin.py:236
+#: django_celery_beat/admin.py:250
msgid "Run selected tasks"
msgstr "선택된 태스크들을 실행 합니다."
@@ -76,236 +94,245 @@ msgstr "선택된 태스크들을 실행 합니다."
msgid "Periodic Tasks"
msgstr "주기적인 태스크들"
-#: django_celery_beat/models.py:26
+#: django_celery_beat/models.py:30
msgid "Days"
msgstr "일"
-#: django_celery_beat/models.py:27
+#: django_celery_beat/models.py:31
msgid "Hours"
msgstr "시간"
-#: django_celery_beat/models.py:28
+#: django_celery_beat/models.py:32
msgid "Minutes"
msgstr "분"
-#: django_celery_beat/models.py:29
+#: django_celery_beat/models.py:33
msgid "Seconds"
msgstr "초"
-#: django_celery_beat/models.py:30
+#: django_celery_beat/models.py:34
msgid "Microseconds"
msgstr "마이크로초"
-#: django_celery_beat/models.py:34
+#: django_celery_beat/models.py:38
msgid "Day"
msgstr "일"
-#: django_celery_beat/models.py:35
+#: django_celery_beat/models.py:39
msgid "Hour"
msgstr "시"
-#: django_celery_beat/models.py:36
+#: django_celery_beat/models.py:40
msgid "Minute"
msgstr "분"
-#: django_celery_beat/models.py:37
+#: django_celery_beat/models.py:41
msgid "Second"
msgstr "초"
-#: django_celery_beat/models.py:38
+#: django_celery_beat/models.py:42
msgid "Microsecond"
msgstr "마이크로초"
-#: django_celery_beat/models.py:42
+#: django_celery_beat/models.py:46
msgid "Astronomical dawn"
msgstr "천문 박명"
-#: django_celery_beat/models.py:43
+#: django_celery_beat/models.py:47
msgid "Civil dawn"
msgstr "시민 박명"
-#: django_celery_beat/models.py:44
+#: django_celery_beat/models.py:48
msgid "Nautical dawn"
msgstr "항해 박명"
-#: django_celery_beat/models.py:45
+#: django_celery_beat/models.py:49
msgid "Astronomical dusk"
msgstr "천문 황혼"
-#: django_celery_beat/models.py:46
+#: django_celery_beat/models.py:50
msgid "Civil dusk"
msgstr "시민 황혼"
-#: django_celery_beat/models.py:47
+#: django_celery_beat/models.py:51
msgid "Nautical dusk"
msgstr "항해 황혼"
-#: django_celery_beat/models.py:48
+#: django_celery_beat/models.py:52
msgid "Solar noon"
msgstr "정오"
-#: django_celery_beat/models.py:49
+#: django_celery_beat/models.py:53
msgid "Sunrise"
msgstr "일출"
-#: django_celery_beat/models.py:50
+#: django_celery_beat/models.py:54
msgid "Sunset"
msgstr "일몰"
-#: django_celery_beat/models.py:84
+#: django_celery_beat/models.py:88
msgid "Solar Event"
msgstr "Solar Event"
-#: django_celery_beat/models.py:85
+#: django_celery_beat/models.py:89
msgid "The type of solar event when the job should run"
msgstr "태스크가 작동 해야 하는 Solar Event"
-#: django_celery_beat/models.py:89
+#: django_celery_beat/models.py:93
msgid "Latitude"
msgstr "위도"
-#: django_celery_beat/models.py:90
+#: django_celery_beat/models.py:94
msgid "Run the task when the event happens at this latitude"
msgstr "입력된 위도에서 Solar Event 가 발생하면 태스크를 실행합니다."
-#: django_celery_beat/models.py:95
+#: django_celery_beat/models.py:99
msgid "Longitude"
msgstr "경도"
-#: django_celery_beat/models.py:96
+#: django_celery_beat/models.py:100
msgid "Run the task when the event happens at this longitude"
msgstr "입력된 경도에서 Solar Event 가 발생하면 태스크를 실행합니다."
-#: django_celery_beat/models.py:103
+#: django_celery_beat/models.py:107
msgid "solar event"
msgstr "solar event"
-#: django_celery_beat/models.py:104
+#: django_celery_beat/models.py:108
msgid "solar events"
msgstr "solar events"
-#: django_celery_beat/models.py:153
+#: django_celery_beat/models.py:158
msgid "Number of Periods"
msgstr "매"
-#: django_celery_beat/models.py:154
+#: django_celery_beat/models.py:159
msgid "Number of interval periods to wait before running the task again"
msgstr "태스크의 다음 동작까지 몇 번의 간격을 기다릴 것인지 입력합니다."
-#: django_celery_beat/models.py:160
+#: django_celery_beat/models.py:165
msgid "Interval Period"
msgstr "간격"
-#: django_celery_beat/models.py:161
+#: django_celery_beat/models.py:166
msgid "The type of period between task runs (Example: days)"
msgstr "실행 간격 (예: 일, 시간)"
-#: django_celery_beat/models.py:167
+#: django_celery_beat/models.py:172
msgid "interval"
msgstr "interval"
-#: django_celery_beat/models.py:168
+#: django_celery_beat/models.py:173
msgid "intervals"
msgstr "intervals"
-#: django_celery_beat/models.py:195
+#: django_celery_beat/models.py:200
msgid "every {}"
msgstr "매 {}"
-#: django_celery_beat/models.py:200
+#: django_celery_beat/models.py:205
msgid "every {} {}"
msgstr "매 {} {}"
-#: django_celery_beat/models.py:211
+#: django_celery_beat/models.py:216
msgid "Clock Time"
msgstr "Clock Time"
-#: django_celery_beat/models.py:212
+#: django_celery_beat/models.py:217
msgid "Run the task at clocked time"
msgstr "Clock Time 기준으로 태스크를 작동합니다."
-#: django_celery_beat/models.py:218 django_celery_beat/models.py:219
+#: django_celery_beat/models.py:223 django_celery_beat/models.py:224
msgid "clocked"
msgstr "clocked"
-#: django_celery_beat/models.py:258
+#: django_celery_beat/models.py:264
msgid "Minute(s)"
msgstr "분"
-#: django_celery_beat/models.py:260
+#: django_celery_beat/models.py:266
msgid "Cron Minutes to Run. Use \"*\" for \"all\". (Example: \"0,30\")"
msgstr "Cron 의 분. 모두인 경우 \"*\". (예: \"0,30\")"
-#: django_celery_beat/models.py:265
+#: django_celery_beat/models.py:271
msgid "Hour(s)"
msgstr "시"
-#: django_celery_beat/models.py:267
+#: django_celery_beat/models.py:273
msgid "Cron Hours to Run. Use \"*\" for \"all\". (Example: \"8,20\")"
msgstr "Cron 의 시간. 모두인 경우 \"*\". (예: \"8,20\")"
-#: django_celery_beat/models.py:272
+#: django_celery_beat/models.py:278
msgid "Day(s) Of The Week"
msgstr "요일"
-#: django_celery_beat/models.py:274
-msgid "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")"
+#: django_celery_beat/models.py:280
+#, fuzzy
+#| msgid ""
+#| "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")"
+msgid ""
+"Cron Days Of The Week to Run. Use \"*\" for \"all\", Sunday is 0 or 7, "
+"Monday is 1. (Example: \"0,5\")"
msgstr "Cron 의 요일. 모두인 경우 \"*\". (예: \"0,5\")"
-#: django_celery_beat/models.py:280
+#: django_celery_beat/models.py:286
msgid "Day(s) Of The Month"
msgstr "일"
-#: django_celery_beat/models.py:282
+#: django_celery_beat/models.py:288
msgid ""
"Cron Days Of The Month to Run. Use \"*\" for \"all\". (Example: \"1,15\")"
msgstr "Cron 의 일. 모두인 경우 \"*\". (예: \"1,15\")"
-#: django_celery_beat/models.py:288
+#: django_celery_beat/models.py:294
msgid "Month(s) Of The Year"
msgstr "월"
-#: django_celery_beat/models.py:290
+#: django_celery_beat/models.py:296
+#, fuzzy
+#| msgid ""
+#| "Cron Months Of The Year to Run. Use \"*\" for \"all\". (Example: \"0,6\")"
msgid ""
-"Cron Months Of The Year to Run. Use \"*\" for \"all\". (Example: \"0,6\")"
+"Cron Months (1-12) Of The Year to Run. Use \"*\" for \"all\". (Example: "
+"\"1,12\")"
msgstr "Cron 의 월. 모두인 경우 \"*\"."
-#: django_celery_beat/models.py:297
+#: django_celery_beat/models.py:304
msgid "Cron Timezone"
msgstr "타임존"
-#: django_celery_beat/models.py:299
+#: django_celery_beat/models.py:306
msgid "Timezone to Run the Cron Schedule on. Default is UTC."
msgstr "Cron 의 타임존. 기본값은 UTC"
-#: django_celery_beat/models.py:305
+#: django_celery_beat/models.py:312
msgid "crontab"
msgstr "crontab"
-#: django_celery_beat/models.py:306
+#: django_celery_beat/models.py:313
msgid "crontabs"
msgstr "crontabs"
-#: django_celery_beat/models.py:390
+#: django_celery_beat/models.py:404
msgid "Name"
msgstr "태스크 이름"
-#: django_celery_beat/models.py:391
+#: django_celery_beat/models.py:405
msgid "Short Description For This Task"
msgstr "태스크의 간단한 설명을 작성합니다."
-#: django_celery_beat/models.py:396
+#: django_celery_beat/models.py:410
msgid ""
"The Name of the Celery Task that Should be Run. (Example: \"proj.tasks."
"import_contacts\")"
msgstr ""
"실행 되어야 하는 셀러리 태스크의 이름 (예: \"proj.tasks.import_contacts\")"
-#: django_celery_beat/models.py:404
+#: django_celery_beat/models.py:418
msgid "Interval Schedule"
msgstr "Interval Schedule"
-#: django_celery_beat/models.py:405
+#: django_celery_beat/models.py:419
msgid ""
"Interval Schedule to run the task on. Set only one schedule type, leave the "
"others null."
@@ -313,11 +340,11 @@ msgstr ""
"태스크 실행 Interval Schedule. 한 종류의 스케줄 타입을 지정하면 나머지는 빈 "
"값으로 두어야 합니다."
-#: django_celery_beat/models.py:410
+#: django_celery_beat/models.py:424
msgid "Crontab Schedule"
msgstr "Crontab Schedule"
-#: django_celery_beat/models.py:411
+#: django_celery_beat/models.py:425
msgid ""
"Crontab Schedule to run the task on. Set only one schedule type, leave the "
"others null."
@@ -325,11 +352,11 @@ msgstr ""
"태스크 실행 Crontab Schedule. 한 종류의 스케줄 타입을 지정하면 나머지는 빈 값"
"으로 두어야 합니다."
-#: django_celery_beat/models.py:416
+#: django_celery_beat/models.py:430
msgid "Solar Schedule"
msgstr "Solar Schedule"
-#: django_celery_beat/models.py:417
+#: django_celery_beat/models.py:431
msgid ""
"Solar Schedule to run the task on. Set only one schedule type, leave the "
"others null."
@@ -337,11 +364,11 @@ msgstr ""
"태스크 실행을 위한 Solar Schedule. 한 종류의 스케줄 타입을 지정하면 나머지는 "
"빈 값으로 두어야 합니다."
-#: django_celery_beat/models.py:422
+#: django_celery_beat/models.py:436
msgid "Clocked Schedule"
msgstr "Clocked Schedule"
-#: django_celery_beat/models.py:423
+#: django_celery_beat/models.py:437
msgid ""
"Clocked Schedule to run the task on. Set only one schedule type, leave the "
"others null."
@@ -349,59 +376,59 @@ msgstr ""
"태스크 실행을 위한 Clocked Schedule. 한 종류의 스케줄 타입을 지정하면 나머지"
"는 빈 값으로 두어야 합니다."
-#: django_celery_beat/models.py:429
+#: django_celery_beat/models.py:443
msgid "Positional Arguments"
msgstr "Positional Arguments"
-#: django_celery_beat/models.py:431
+#: django_celery_beat/models.py:445
msgid "JSON encoded positional arguments (Example: [\"arg1\", \"arg2\"])"
msgstr "JSON 형태로 인코딩된 위치 인자 (예: [\"arg1\", \"arg2\"])"
-#: django_celery_beat/models.py:436
+#: django_celery_beat/models.py:450
msgid "Keyword Arguments"
msgstr "Keyword Arguments"
-#: django_celery_beat/models.py:438
+#: django_celery_beat/models.py:452
msgid "JSON encoded keyword arguments (Example: {\"argument\": \"value\"})"
msgstr "JSON 형태로 인코딩된 키워드 인자 (예: {\"argument\": \"value\"})"
-#: django_celery_beat/models.py:444
+#: django_celery_beat/models.py:458
msgid "Queue Override"
msgstr "Queue Override"
-#: django_celery_beat/models.py:446
+#: django_celery_beat/models.py:460
msgid "Queue defined in CELERY_TASK_QUEUES. Leave None for default queuing."
msgstr "CELERY_TASK_QUEES 에 정의된 큐, 빈 값으로 두면 기본 큐를 사용합니다."
-#: django_celery_beat/models.py:455
+#: django_celery_beat/models.py:469
msgid "Exchange"
msgstr "Exchange"
-#: django_celery_beat/models.py:456
+#: django_celery_beat/models.py:470
msgid "Override Exchange for low-level AMQP routing"
msgstr "low-level AMQP 를 원하는 경우 Exchange 를 오버라이드 합니다."
-#: django_celery_beat/models.py:460
+#: django_celery_beat/models.py:474
msgid "Routing Key"
msgstr "Routing Key"
-#: django_celery_beat/models.py:461
+#: django_celery_beat/models.py:475
msgid "Override Routing Key for low-level AMQP routing"
msgstr "low-level AMQP 를 원하는 경우 Routing Key 를 오버라이드 합니다."
-#: django_celery_beat/models.py:465
+#: django_celery_beat/models.py:479
msgid "AMQP Message Headers"
msgstr "AMQP 메시지 헤더"
-#: django_celery_beat/models.py:466
+#: django_celery_beat/models.py:480
msgid "JSON encoded message headers for the AMQP message."
msgstr "AMQP 메시지를 위해 JSON 형식으로 인코딩 된 메시지 헤더"
-#: django_celery_beat/models.py:472
+#: django_celery_beat/models.py:486
msgid "Priority"
msgstr "Priority"
-#: django_celery_beat/models.py:474
+#: django_celery_beat/models.py:488
msgid ""
"Priority Number between 0 and 255. Supported by: RabbitMQ, Redis (priority "
"reversed, 0 is highest)."
@@ -409,54 +436,54 @@ msgstr ""
"0과 255사이의 우선 순위 숫자. RabbitMQ, Redis 에서 지원합니다. (0이 높은 우선"
"순위를 가집니다.)"
-#: django_celery_beat/models.py:479
+#: django_celery_beat/models.py:493
msgid "Expires Datetime"
msgstr "만료 일시"
-#: django_celery_beat/models.py:481
+#: django_celery_beat/models.py:495
msgid ""
"Datetime after which the schedule will no longer trigger the task to run"
msgstr "만료 일시 이후에는 태스크가 작동하지 않습니다."
-#: django_celery_beat/models.py:486
+#: django_celery_beat/models.py:500
msgid "Expires timedelta with seconds"
msgstr "초 단위 만료 시간"
-#: django_celery_beat/models.py:488
+#: django_celery_beat/models.py:502
msgid ""
"Timedelta with seconds which the schedule will no longer trigger the task to "
"run"
msgstr "입력된 만료 초가 지난 뒤에는 태스크가 작동하지 않습니다."
-#: django_celery_beat/models.py:494
+#: django_celery_beat/models.py:508
msgid "One-off Task"
msgstr "One-off 태스크"
-#: django_celery_beat/models.py:496
+#: django_celery_beat/models.py:510
msgid "If True, the schedule will only run the task a single time"
msgstr "체크된 경우, 태스크는 한 번만 실행 됩니다."
-#: django_celery_beat/models.py:500
+#: django_celery_beat/models.py:514
msgid "Start Datetime"
msgstr "시작 일시"
-#: django_celery_beat/models.py:502
+#: django_celery_beat/models.py:516
msgid "Datetime when the schedule should begin triggering the task to run"
msgstr "태스크 스케줄의 작동 시작 일시"
-#: django_celery_beat/models.py:507
+#: django_celery_beat/models.py:521
msgid "Enabled"
msgstr "활성화 여부"
-#: django_celery_beat/models.py:508
+#: django_celery_beat/models.py:522
msgid "Set to False to disable the schedule"
msgstr "체크를 해제하면 비활성화가 됩니다."
-#: django_celery_beat/models.py:513
+#: django_celery_beat/models.py:527
msgid "Last Run Datetime"
msgstr "최종 작동 일시"
-#: django_celery_beat/models.py:515
+#: django_celery_beat/models.py:529
msgid ""
"Datetime that the schedule last triggered the task to run. Reset to None if "
"enabled is set to False."
@@ -464,35 +491,35 @@ msgstr ""
"태스크가 최종적으로 작동한 시간. 만약 테스크가 비활성화 된 경우 None 으로 지"
"정됩니다."
-#: django_celery_beat/models.py:520
+#: django_celery_beat/models.py:534
msgid "Total Run Count"
msgstr "실행 횟수"
-#: django_celery_beat/models.py:522
+#: django_celery_beat/models.py:536
msgid "Running count of how many times the schedule has triggered the task"
msgstr "태스크의 실행 횟수"
-#: django_celery_beat/models.py:527
+#: django_celery_beat/models.py:541
msgid "Last Modified"
msgstr "최종 변경 일시"
-#: django_celery_beat/models.py:528
+#: django_celery_beat/models.py:542
msgid "Datetime that this PeriodicTask was last modified"
msgstr "태스크가 최종적으로 변경된 일시"
-#: django_celery_beat/models.py:532
+#: django_celery_beat/models.py:546
msgid "Description"
msgstr "설명"
-#: django_celery_beat/models.py:534
+#: django_celery_beat/models.py:548
msgid "Detailed description about the details of this Periodic Task"
msgstr "태스크에 대한 상세 설명을 작성합니다."
-#: django_celery_beat/models.py:543
+#: django_celery_beat/models.py:557
msgid "periodic task"
msgstr "periodic task"
-#: django_celery_beat/models.py:544
+#: django_celery_beat/models.py:558
msgid "periodic tasks"
msgstr "periodic tasks"
diff --git a/django_celery_beat/locale/ru/LC_MESSAGES/django.mo b/django_celery_beat/locale/ru/LC_MESSAGES/django.mo
index a3b2f47..f2266f2 100644
Binary files a/django_celery_beat/locale/ru/LC_MESSAGES/django.mo and b/django_celery_beat/locale/ru/LC_MESSAGES/django.mo differ
diff --git a/django_celery_beat/locale/ru/LC_MESSAGES/django.po b/django_celery_beat/locale/ru/LC_MESSAGES/django.po
index 05232c6..626e6d5 100644
--- a/django_celery_beat/locale/ru/LC_MESSAGES/django.po
+++ b/django_celery_beat/locale/ru/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1.5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-06-14 17:06+1000\n"
+"POT-Creation-Date: 2022-12-22 19:03+0000\n"
"PO-Revision-Date: 2022-10-14 23:48+0200\n"
"Last-Translator: Daniil Kharkov <fadeddexofan@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -15,83 +15,104 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
-"%100>=11 && n%100<=14)? 2 : 3);\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
+"(n%100>=11 && n%100<=14)? 2 : 3);\n"
-#: django_celery_beat/admin.py:71
+#: django_celery_beat/admin.py:60
msgid "Task (registered)"
msgstr "Задача (зарегистрированные)"
-#: django_celery_beat/admin.py:75
+#: django_celery_beat/admin.py:64
msgid "Task (custom)"
msgstr "Задача (пользовательская)"
-#: django_celery_beat/admin.py:92
+#: django_celery_beat/admin.py:81
msgid "Need name of task"
msgstr "Укажите название задачи"
-#: django_celery_beat/admin.py:103
+#: django_celery_beat/admin.py:87 django_celery_beat/models.py:605
+msgid "Only one can be set, in expires and expire_seconds"
+msgstr ""
+
+#: django_celery_beat/admin.py:97
#, python-format
msgid "Unable to parse JSON: %s"
msgstr "Невозможно проанализировать JSON: %s"
-#: django_celery_beat/admin.py:165
+#: django_celery_beat/admin.py:125
+#, fuzzy
+#| msgid "Solar Schedule"
+msgid "Schedule"
+msgstr "Астрономическое"
+
+#: django_celery_beat/admin.py:130
+#, fuzzy
+#| msgid "Keyword Arguments"
+msgid "Arguments"
+msgstr "Именованные аргументы"
+
+#: django_celery_beat/admin.py:134
+msgid "Execution Options"
+msgstr ""
+
+#: django_celery_beat/admin.py:177
#, python-brace-format
msgid "{0} task{1} {2} successfully {3}"
msgstr "{0} задача {1} {2} успешно {3}"
-#: django_celery_beat/admin.py:168 django_celery_beat/admin.py:230
+#: django_celery_beat/admin.py:180 django_celery_beat/admin.py:247
msgid "was,were"
msgstr "был, были"
-#: django_celery_beat/admin.py:177
+#: django_celery_beat/admin.py:189
msgid "Enable selected tasks"
msgstr "Включить выбранные задачи"
-#: django_celery_beat/admin.py:183
+#: django_celery_beat/admin.py:195
msgid "Disable selected tasks"
msgstr "Выключить выбранные задачи"
-#: django_celery_beat/admin.py:195
+#: django_celery_beat/admin.py:207
msgid "Toggle activity of selected tasks"
msgstr "Переключить активность выбранных задач"
-#: django_celery_beat/admin.py:215
-#, python-brace-format
-msgid "task \"{0}\" not found"
+#: django_celery_beat/admin.py:228
+#, fuzzy, python-brace-format
+#| msgid "task \"{0}\" not found"
+msgid "task \"{not_found_task_name}\" not found"
msgstr "задача \"{0}\" не найдена"
-#: django_celery_beat/admin.py:227
+#: django_celery_beat/admin.py:244
#, python-brace-format
msgid "{0} task{1} {2} successfully run"
msgstr "{0} задача{1} {2} успешно выполнена"
-#: django_celery_beat/admin.py:233
+#: django_celery_beat/admin.py:250
msgid "Run selected tasks"
msgstr "Запустить выбранные задачи"
-#: django_celery_beat/apps.py:15
+#: django_celery_beat/apps.py:13
msgid "Periodic Tasks"
msgstr "Периодические Задачи"
-#: django_celery_beat/models.py:29
+#: django_celery_beat/models.py:30
msgid "Days"
msgstr "Дни"
-#: django_celery_beat/models.py:30
+#: django_celery_beat/models.py:31
msgid "Hours"
msgstr "Часы"
-#: django_celery_beat/models.py:31
+#: django_celery_beat/models.py:32
msgid "Minutes"
msgstr "Минуты"
-#: django_celery_beat/models.py:32
+#: django_celery_beat/models.py:33
msgid "Seconds"
msgstr "Секунды"
-#: django_celery_beat/models.py:33
+#: django_celery_beat/models.py:34
msgid "Microseconds"
msgstr "Микросекунды"
@@ -115,328 +136,403 @@ msgstr "Секунды"
msgid "Microsecond"
msgstr "Микросекунды"
+#: django_celery_beat/models.py:46
+msgid "Astronomical dawn"
+msgstr ""
+
+#: django_celery_beat/models.py:47
+msgid "Civil dawn"
+msgstr ""
+
+#: django_celery_beat/models.py:48
+msgid "Nautical dawn"
+msgstr ""
+
+#: django_celery_beat/models.py:49
+msgid "Astronomical dusk"
+msgstr ""
+
+#: django_celery_beat/models.py:50
+msgid "Civil dusk"
+msgstr ""
+
+#: django_celery_beat/models.py:51
+msgid "Nautical dusk"
+msgstr ""
+
+#: django_celery_beat/models.py:52
+#, fuzzy
+#| msgid "Solar Event"
+msgid "Solar noon"
+msgstr "Астрономическое"
+
+#: django_celery_beat/models.py:53
+msgid "Sunrise"
+msgstr ""
+
#: django_celery_beat/models.py:54
+msgid "Sunset"
+msgstr ""
+
+#: django_celery_beat/models.py:88
msgid "Solar Event"
msgstr "Астрономическое"
-#: django_celery_beat/models.py:55
+#: django_celery_beat/models.py:89
msgid "The type of solar event when the job should run"
msgstr "Тип астрономического события для запуска задачи"
-#: django_celery_beat/models.py:59
+#: django_celery_beat/models.py:93
msgid "Latitude"
msgstr "Широта"
-#: django_celery_beat/models.py:60
+#: django_celery_beat/models.py:94
msgid "Run the task when the event happens at this latitude"
msgstr "Запуск задачи, когда событие происходит на данной широте"
-#: django_celery_beat/models.py:65
+#: django_celery_beat/models.py:99
msgid "Longitude"
msgstr "Долгота"
-#: django_celery_beat/models.py:66
+#: django_celery_beat/models.py:100
msgid "Run the task when the event happens at this longitude"
msgstr "Запуск задачи, когда событие происходит на данной долготе"
-#: django_celery_beat/models.py:73
+#: django_celery_beat/models.py:107
msgid "solar event"
msgstr "астрономическое событие"
-#: django_celery_beat/models.py:74
+#: django_celery_beat/models.py:108
msgid "solar events"
msgstr "астрономические события"
-#: django_celery_beat/models.py:124
+#: django_celery_beat/models.py:158
msgid "Number of Periods"
msgstr "Число периодов"
-#: django_celery_beat/models.py:125
+#: django_celery_beat/models.py:159
msgid "Number of interval periods to wait before running the task again"
msgstr "Количество периодов интервала перед новым запуском задачи"
-#: django_celery_beat/models.py:131
+#: django_celery_beat/models.py:165
msgid "Interval Period"
msgstr "Интервальный период"
-#: django_celery_beat/models.py:132
+#: django_celery_beat/models.py:166
msgid "The type of period between task runs (Example: days)"
msgstr "Тип периода между запусками задачи (Например: дни)"
-#: django_celery_beat/models.py:138
+#: django_celery_beat/models.py:172
msgid "interval"
msgstr "интервал"
-#: django_celery_beat/models.py:139
+#: django_celery_beat/models.py:173
msgid "intervals"
msgstr "интервалы"
-#: django_celery_beat/models.py:162
-#, python-brace-format
+#: django_celery_beat/models.py:200
msgid "every {}"
msgstr "каждые {}"
-#: django_celery_beat/models.py:163
-#, python-brace-format
+#: django_celery_beat/models.py:205
msgid "every {} {}"
msgstr "каждые {} {}"
-#: django_celery_beat/models.py:175
+#: django_celery_beat/models.py:216
msgid "Clock Time"
msgstr "Время"
-#: django_celery_beat/models.py:176
+#: django_celery_beat/models.py:217
msgid "Run the task at clocked time"
msgstr "Запуск задачи в указанное время"
-#: django_celery_beat/models.py:181 django_celery_beat/models.py:475
-msgid "Enabled"
-msgstr "Активна"
-
-#: django_celery_beat/models.py:182 django_celery_beat/models.py:476
-msgid "Set to False to disable the schedule"
-msgstr "Выключите для отключения расписания"
-
-#: django_celery_beat/models.py:188 django_celery_beat/models.py:189
+#: django_celery_beat/models.py:223 django_celery_beat/models.py:224
msgid "clocked"
msgstr "время"
-#: django_celery_beat/models.py:232
+#: django_celery_beat/models.py:264
msgid "Minute(s)"
msgstr "Минуты"
-#: django_celery_beat/models.py:234
+#: django_celery_beat/models.py:266
msgid "Cron Minutes to Run. Use \"*\" for \"all\". (Example: \"0,30\")"
msgstr "Cron минуты. Используйте \"*\" для \"каждую\". (Например: \"0,30\")"
-#: django_celery_beat/models.py:239
+#: django_celery_beat/models.py:271
msgid "Hour(s)"
msgstr "Часы"
-#: django_celery_beat/models.py:241
+#: django_celery_beat/models.py:273
msgid "Cron Hours to Run. Use \"*\" for \"all\". (Example: \"8,20\")"
msgstr "Cron часы. Используйте \"*\" для \"каждый\". (Например: \"8,20\")"
-#: django_celery_beat/models.py:246
+#: django_celery_beat/models.py:278
msgid "Day(s) Of The Week"
msgstr "Дни недели"
-#: django_celery_beat/models.py:248
-msgid "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")"
+#: django_celery_beat/models.py:280
+#, fuzzy
+#| msgid ""
+#| "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")"
+msgid ""
+"Cron Days Of The Week to Run. Use \"*\" for \"all\", Sunday is 0 or 7, "
+"Monday is 1. (Example: \"0,5\")"
msgstr "Cron дни недели. Используйте \"*\" для \"каждый\". (Например: \"0,5\")"
-#: django_celery_beat/models.py:254
+#: django_celery_beat/models.py:286
msgid "Day(s) Of The Month"
msgstr "Дни"
-#: django_celery_beat/models.py:256
-msgid "Cron Days Of The Month to Run. Use \"*\" for \"all\". (Example: \"1,15\")"
+#: django_celery_beat/models.py:288
+msgid ""
+"Cron Days Of The Month to Run. Use \"*\" for \"all\". (Example: \"1,15\")"
msgstr "Cron дни. Используйте \"*\" для \"каждый\". (Например: \"1,15\")"
-#: django_celery_beat/models.py:262
+#: django_celery_beat/models.py:294
msgid "Month(s) Of The Year"
msgstr "Месяцы"
-#: django_celery_beat/models.py:264
-msgid "Cron Months Of The Year to Run. Use \"*\" for \"all\". (Example: \"0,6\")"
+#: django_celery_beat/models.py:296
+#, fuzzy
+#| msgid ""
+#| "Cron Months Of The Year to Run. Use \"*\" for \"all\". (Example: \"0,6\")"
+msgid ""
+"Cron Months (1-12) Of The Year to Run. Use \"*\" for \"all\". (Example: "
+"\"1,12\")"
msgstr "Cron месяцы. Используйте \"*\" для \"каждый\". (Например: \"0,6\")"
-#: django_celery_beat/models.py:271
+#: django_celery_beat/models.py:304
msgid "Cron Timezone"
msgstr "Временная зона для Cron"
-#: django_celery_beat/models.py:273
+#: django_celery_beat/models.py:306
msgid "Timezone to Run the Cron Schedule on. Default is UTC."
msgstr "Временная зона для Cron расписания. UTC по умолчанию."
-#: django_celery_beat/models.py:279
+#: django_celery_beat/models.py:312
msgid "crontab"
msgstr "crontab"
-#: django_celery_beat/models.py:280
+#: django_celery_beat/models.py:313
msgid "crontabs"
msgstr "crontab"
-#: django_celery_beat/models.py:366
+#: django_celery_beat/models.py:404
msgid "Name"
msgstr "Название"
-#: django_celery_beat/models.py:367
+#: django_celery_beat/models.py:405
msgid "Short Description For This Task"
msgstr "Краткое описание для этой задачи"
-#: django_celery_beat/models.py:372
+#: django_celery_beat/models.py:410
msgid ""
-"The Name of the Celery Task that Should be Run. (Example: \"proj.tasks.import_contacts"
-"\")"
-msgstr "Имя запускаемой Celery задачи. (Например: \"proj.tasks.import_contacts\")"
+"The Name of the Celery Task that Should be Run. (Example: \"proj.tasks."
+"import_contacts\")"
+msgstr ""
+"Имя запускаемой Celery задачи. (Например: \"proj.tasks.import_contacts\")"
-#: django_celery_beat/models.py:380
+#: django_celery_beat/models.py:418
msgid "Interval Schedule"
msgstr "Интервал"
-#: django_celery_beat/models.py:381
+#: django_celery_beat/models.py:419
msgid ""
-"Interval Schedule to run the task on. Set only one schedule type, leave the others null."
+"Interval Schedule to run the task on. Set only one schedule type, leave the "
+"others null."
msgstr ""
-"Интервальное расписание для запуска задачи. Выберите только один тип расписания, "
-"остальные оставьте пустыми."
+"Интервальное расписание для запуска задачи. Выберите только один тип "
+"расписания, остальные оставьте пустыми."
-#: django_celery_beat/models.py:386
+#: django_celery_beat/models.py:424
msgid "Crontab Schedule"
msgstr "Crontab"
-#: django_celery_beat/models.py:387
+#: django_celery_beat/models.py:425
msgid ""
-"Crontab Schedule to run the task on. Set only one schedule type, leave the others null."
+"Crontab Schedule to run the task on. Set only one schedule type, leave the "
+"others null."
msgstr ""
-"Crontab расписание для запуска задачи. Выберите только один тип расписания, остальные "
-"оставьте пустыми."
+"Crontab расписание для запуска задачи. Выберите только один тип расписания, "
+"остальные оставьте пустыми."
-#: django_celery_beat/models.py:392
+#: django_celery_beat/models.py:430
msgid "Solar Schedule"
msgstr "Астрономическое"
-#: django_celery_beat/models.py:393
+#: django_celery_beat/models.py:431
msgid ""
-"Solar Schedule to run the task on. Set only one schedule type, leave the others null."
+"Solar Schedule to run the task on. Set only one schedule type, leave the "
+"others null."
msgstr ""
-"Астрономическое расписание для запуска задачи. Выберите только один тип расписания, "
-"остальные оставьте пустыми."
+"Астрономическое расписание для запуска задачи. Выберите только один тип "
+"расписания, остальные оставьте пустыми."
-#: django_celery_beat/models.py:398
+#: django_celery_beat/models.py:436
msgid "Clocked Schedule"
msgstr "Хронометрическое"
-#: django_celery_beat/models.py:399
+#: django_celery_beat/models.py:437
msgid ""
-"Clocked Schedule to run the task on. Set only one schedule type, leave the others null."
+"Clocked Schedule to run the task on. Set only one schedule type, leave the "
+"others null."
msgstr ""
-"Хронометрическое расписание для запуска задачи. Выберите только один тип расписания, "
-"остальные оставьте пустыми."
+"Хронометрическое расписание для запуска задачи. Выберите только один тип "
+"расписания, остальные оставьте пустыми."
-#: django_celery_beat/models.py:405
+#: django_celery_beat/models.py:443
msgid "Positional Arguments"
msgstr "Позиционные аргументы"
-#: django_celery_beat/models.py:407
+#: django_celery_beat/models.py:445
msgid "JSON encoded positional arguments (Example: [\"arg1\", \"arg2\"])"
-msgstr "Закодированные в JSON позиционные аргументы (Например: [\"arg1\", \"arg2\"])"
+msgstr ""
+"Закодированные в JSON позиционные аргументы (Например: [\"arg1\", \"arg2\"])"
-#: django_celery_beat/models.py:412
+#: django_celery_beat/models.py:450
msgid "Keyword Arguments"
msgstr "Именованные аргументы"
-#: django_celery_beat/models.py:414
+#: django_celery_beat/models.py:452
msgid "JSON encoded keyword arguments (Example: {\"argument\": \"value\"})"
-msgstr "Закодированные в JSON именованные аргументы (Например: {\"argument\": \"value\"})"
+msgstr ""
+"Закодированные в JSON именованные аргументы (Например: {\"argument\": "
+"\"value\"})"
-#: django_celery_beat/models.py:420
+#: django_celery_beat/models.py:458
msgid "Queue Override"
msgstr "Переопределение очереди"
-#: django_celery_beat/models.py:422
+#: django_celery_beat/models.py:460
msgid "Queue defined in CELERY_TASK_QUEUES. Leave None for default queuing."
-msgstr "Очередь задана в CELERY_TASK_QUEUES. Оставьте None для стандартного распределения."
+msgstr ""
+"Очередь задана в CELERY_TASK_QUEUES. Оставьте None для стандартного "
+"распределения."
-#: django_celery_beat/models.py:431
+#: django_celery_beat/models.py:469
msgid "Exchange"
msgstr "Exchange"
-#: django_celery_beat/models.py:432
+#: django_celery_beat/models.py:470
msgid "Override Exchange for low-level AMQP routing"
msgstr "Override Exchange for low-level AMQP routing"
-#: django_celery_beat/models.py:436
+#: django_celery_beat/models.py:474
msgid "Routing Key"
msgstr "Ключ маршрутизации"
-#: django_celery_beat/models.py:437
+#: django_celery_beat/models.py:475
msgid "Override Routing Key for low-level AMQP routing"
msgstr "Override Routing Key for low-level AMQP routing"
-#: django_celery_beat/models.py:441
+#: django_celery_beat/models.py:479
msgid "AMQP Message Headers"
msgstr "Заголовки сообщения AMQP"
-#: django_celery_beat/models.py:442
+#: django_celery_beat/models.py:480
msgid "JSON encoded message headers for the AMQP message."
msgstr "Закодированные в JSON заголовки для AMQP сообщения."
-#: django_celery_beat/models.py:448
+#: django_celery_beat/models.py:486
msgid "Priority"
msgstr "Приоритет"
-#: django_celery_beat/models.py:450
+#: django_celery_beat/models.py:488
msgid ""
-"Priority Number between 0 and 255. Supported by: RabbitMQ, Redis (priority reversed, 0 "
-"is highest)."
+"Priority Number between 0 and 255. Supported by: RabbitMQ, Redis (priority "
+"reversed, 0 is highest)."
msgstr ""
-"Число между 0 и 255. Поддерживается в: RabbitMQ, Redis (приоритет по убыванию, 0 "
-"наивысший)."
+"Число между 0 и 255. Поддерживается в: RabbitMQ, Redis (приоритет по "
+"убыванию, 0 наивысший)."
-#: django_celery_beat/models.py:455
+#: django_celery_beat/models.py:493
msgid "Expires Datetime"
msgstr "Истекает"
-#: django_celery_beat/models.py:457
-msgid "Datetime after which the schedule will no longer trigger the task to run"
+#: django_celery_beat/models.py:495
+msgid ""
+"Datetime after which the schedule will no longer trigger the task to run"
msgstr "Время, после которого расписание больше не будет запускать задачу"
-#: django_celery_beat/models.py:462
+#: django_celery_beat/models.py:500
+msgid "Expires timedelta with seconds"
+msgstr ""
+
+#: django_celery_beat/models.py:502
+#, fuzzy
+#| msgid ""
+#| "Datetime after which the schedule will no longer trigger the task to run"
+msgid ""
+"Timedelta with seconds which the schedule will no longer trigger the task to "
+"run"
+msgstr "Время, после которого расписание больше не будет запускать задачу"
+
+#: django_celery_beat/models.py:508
msgid "One-off Task"
msgstr "Одноразовая задача"
-#: django_celery_beat/models.py:464
+#: django_celery_beat/models.py:510
msgid "If True, the schedule will only run the task a single time"
msgstr "Если включено, то задача будет запущена только один раз"
-#: django_celery_beat/models.py:468
+#: django_celery_beat/models.py:514
msgid "Start Datetime"
msgstr "Время начала"
-#: django_celery_beat/models.py:470
+#: django_celery_beat/models.py:516
msgid "Datetime when the schedule should begin triggering the task to run"
msgstr "Время начала вызовов задачи расписанием"
-#: django_celery_beat/models.py:481
+#: django_celery_beat/models.py:521
+msgid "Enabled"
+msgstr "Активна"
+
+#: django_celery_beat/models.py:522
+msgid "Set to False to disable the schedule"
+msgstr "Выключите для отключения расписания"
+
+#: django_celery_beat/models.py:527
msgid "Last Run Datetime"
msgstr "Последний запуск"
-#: django_celery_beat/models.py:483
+#: django_celery_beat/models.py:529
msgid ""
-"Datetime that the schedule last triggered the task to run. Reset to None if enabled is "
-"set to False."
+"Datetime that the schedule last triggered the task to run. Reset to None if "
+"enabled is set to False."
msgstr "Время последнего вызова задачи. None если задача выключена."
-#: django_celery_beat/models.py:488
+#: django_celery_beat/models.py:534
msgid "Total Run Count"
msgstr "Запусков всего"
-#: django_celery_beat/models.py:490
+#: django_celery_beat/models.py:536
msgid "Running count of how many times the schedule has triggered the task"
msgstr "Количество запусков задачи этим расписанием"
-#: django_celery_beat/models.py:495
+#: django_celery_beat/models.py:541
msgid "Last Modified"
msgstr "Последнее изменение"
-#: django_celery_beat/models.py:496
+#: django_celery_beat/models.py:542
msgid "Datetime that this PeriodicTask was last modified"
msgstr "Время последнего изменения этой задачи"
-#: django_celery_beat/models.py:500
+#: django_celery_beat/models.py:546
msgid "Description"
msgstr "Описание"
-#: django_celery_beat/models.py:502
+#: django_celery_beat/models.py:548
msgid "Detailed description about the details of this Periodic Task"
msgstr "Подробное описание того, что делает эта задача"
-#: django_celery_beat/models.py:511
+#: django_celery_beat/models.py:557
msgid "periodic task"
msgstr "периодическая задача"
-#: django_celery_beat/models.py:512
+#: django_celery_beat/models.py:558
msgid "periodic tasks"
msgstr "периодические задачи"
+
+#: django_celery_beat/templates/admin/djcelery/change_list.html:6
+msgid "Home"
+msgstr ""
diff --git a/django_celery_beat/locale/zh_Hans/LC_MESSAGES/django.mo b/django_celery_beat/locale/zh_Hans/LC_MESSAGES/django.mo
index 7fd2939..2a9b57b 100644
Binary files a/django_celery_beat/locale/zh_Hans/LC_MESSAGES/django.mo and b/django_celery_beat/locale/zh_Hans/LC_MESSAGES/django.mo differ
diff --git a/django_celery_beat/locale/zh_Hans/LC_MESSAGES/django.po b/django_celery_beat/locale/zh_Hans/LC_MESSAGES/django.po
index 8c2f73c..8891af6 100644
--- a/django_celery_beat/locale/zh_Hans/LC_MESSAGES/django.po
+++ b/django_celery_beat/locale/zh_Hans/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-02-19 00:36+0800\n"
+"POT-Creation-Date: 2022-12-22 19:03+0000\n"
"PO-Revision-Date: 2022-10-14 23:48+0200\n"
"Last-Translator: Rainshaw <rxg@live.com>\n"
"Language-Team: x_zhuo <LL@li.org>\n"
@@ -17,470 +17,500 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: .\django_celery_beat\admin.py:64
+#: django_celery_beat/admin.py:60
msgid "Task (registered)"
msgstr "任务 (已注册的)"
-#: .\django_celery_beat\admin.py:68
+#: django_celery_beat/admin.py:64
msgid "Task (custom)"
msgstr "任务 (自定义)"
-#: .\django_celery_beat\admin.py:85
+#: django_celery_beat/admin.py:81
msgid "Need name of task"
msgstr "任务需要一个名称"
-#: .\django_celery_beat\admin.py:91 .\django_celery_beat\models.py:589
+#: django_celery_beat/admin.py:87 django_celery_beat/models.py:605
msgid "Only one can be set, in expires and expire_seconds"
msgstr "不可以同时设置 expires 和 expire_seconds 字段"
-#: .\django_celery_beat\admin.py:101
+#: django_celery_beat/admin.py:97
#, python-format
msgid "Unable to parse JSON: %s"
msgstr "无法解析 JSON: %s"
-#: .\django_celery_beat\admin.py:167
+#: django_celery_beat/admin.py:125
+#, fuzzy
+#| msgid "Solar Schedule"
+msgid "Schedule"
+msgstr "日程时间表"
+
+#: django_celery_beat/admin.py:130
+#, fuzzy
+#| msgid "Keyword Arguments"
+msgid "Arguments"
+msgstr "关键字参数"
+
+#: django_celery_beat/admin.py:134
+msgid "Execution Options"
+msgstr ""
+
+#: django_celery_beat/admin.py:177
#, python-brace-format
msgid "{0} task{1} {2} successfully {3}"
msgstr "{0} 任务{1} {2} 成功 {3}"
-#: .\django_celery_beat\admin.py:170 .\django_celery_beat\admin.py:232
+#: django_celery_beat/admin.py:180 django_celery_beat/admin.py:247
msgid "was,were"
msgstr "将"
-#: .\django_celery_beat\admin.py:179
+#: django_celery_beat/admin.py:189
msgid "Enable selected tasks"
msgstr "启用选中的任务"
-#: .\django_celery_beat\admin.py:185
+#: django_celery_beat/admin.py:195
msgid "Disable selected tasks"
msgstr "禁用选中的任务"
-#: .\django_celery_beat\admin.py:197
+#: django_celery_beat/admin.py:207
msgid "Toggle activity of selected tasks"
msgstr "切换选中的任务"
-#: .\django_celery_beat\admin.py:217
-#, python-brace-format
-msgid "task \"{0}\" not found"
+#: django_celery_beat/admin.py:228
+#, fuzzy, python-brace-format
+#| msgid "task \"{0}\" not found"
+msgid "task \"{not_found_task_name}\" not found"
msgstr "未找到\"{0}\"任务"
-#: .\django_celery_beat\admin.py:229
+#: django_celery_beat/admin.py:244
#, python-brace-format
msgid "{0} task{1} {2} successfully run"
msgstr "{0} 任务{1} {2} 启动成功"
-#: .\django_celery_beat\admin.py:235
+#: django_celery_beat/admin.py:250
msgid "Run selected tasks"
msgstr "运行选中的任务"
-#: .\django_celery_beat\apps.py:13
+#: django_celery_beat/apps.py:13
msgid "Periodic Tasks"
msgstr "周期任务"
-#: .\django_celery_beat\models.py:26
+#: django_celery_beat/models.py:30
msgid "Days"
msgstr "天"
-#: .\django_celery_beat\models.py:27
+#: django_celery_beat/models.py:31
msgid "Hours"
msgstr "小时"
-#: .\django_celery_beat\models.py:28
+#: django_celery_beat/models.py:32
msgid "Minutes"
msgstr "分钟"
-#: .\django_celery_beat\models.py:29
+#: django_celery_beat/models.py:33
msgid "Seconds"
msgstr "秒"
-#: .\django_celery_beat\models.py:30
+#: django_celery_beat/models.py:34
msgid "Microseconds"
msgstr "毫秒"
-#: .\django_celery_beat\models.py:34
+#: django_celery_beat/models.py:38
msgid "Day"
msgstr "天"
-#: .\django_celery_beat\models.py:35
+#: django_celery_beat/models.py:39
msgid "Hour"
msgstr "小时"
-#: .\django_celery_beat\models.py:36
+#: django_celery_beat/models.py:40
msgid "Minute"
msgstr "分钟"
-#: .\django_celery_beat\models.py:37
+#: django_celery_beat/models.py:41
msgid "Second"
msgstr "秒"
-#: .\django_celery_beat\models.py:38
+#: django_celery_beat/models.py:42
msgid "Microsecond"
msgstr "毫秒"
-#: .\django_celery_beat\models.py:42
+#: django_celery_beat/models.py:46
msgid "Astronomical dawn"
msgstr "天文黎明"
-#: .\django_celery_beat\models.py:43
+#: django_celery_beat/models.py:47
msgid "Civil dawn"
msgstr "民事黎明"
-#: .\django_celery_beat\models.py:44
+#: django_celery_beat/models.py:48
msgid "Nautical dawn"
msgstr "航海黎明"
-#: .\django_celery_beat\models.py:45
+#: django_celery_beat/models.py:49
msgid "Astronomical dusk"
msgstr "天文黄昏"
-#: .\django_celery_beat\models.py:46
+#: django_celery_beat/models.py:50
msgid "Civil dusk"
msgstr "民事黄昏"
-#: .\django_celery_beat\models.py:47
+#: django_celery_beat/models.py:51
msgid "Nautical dusk"
msgstr "航海黄昏"
-#: .\django_celery_beat\models.py:48
+#: django_celery_beat/models.py:52
msgid "Solar noon"
msgstr "正午"
-#: .\django_celery_beat\models.py:49
+#: django_celery_beat/models.py:53
msgid "Sunrise"
msgstr "日出"
-#: .\django_celery_beat\models.py:50
+#: django_celery_beat/models.py:54
msgid "Sunset"
msgstr "日落"
-#: .\django_celery_beat\models.py:84
+#: django_celery_beat/models.py:88
msgid "Solar Event"
msgstr "日程事件"
-#: .\django_celery_beat\models.py:85
+#: django_celery_beat/models.py:89
msgid "The type of solar event when the job should run"
msgstr "当任务应该执行时的日程事件类型"
-#: .\django_celery_beat\models.py:89
+#: django_celery_beat/models.py:93
msgid "Latitude"
msgstr "纬度"
-#: .\django_celery_beat\models.py:90
+#: django_celery_beat/models.py:94
msgid "Run the task when the event happens at this latitude"
msgstr "当在此纬度发生事件时执行任务"
-#: .\django_celery_beat\models.py:95
+#: django_celery_beat/models.py:99
msgid "Longitude"
msgstr "经度"
-#: .\django_celery_beat\models.py:96
+#: django_celery_beat/models.py:100
msgid "Run the task when the event happens at this longitude"
msgstr "当在此经度发生事件时执行任务"
-#: .\django_celery_beat\models.py:103
+#: django_celery_beat/models.py:107
msgid "solar event"
msgstr "日程事件"
-#: .\django_celery_beat\models.py:104
+#: django_celery_beat/models.py:108
msgid "solar events"
msgstr "日程事件"
-#: .\django_celery_beat\models.py:153
+#: django_celery_beat/models.py:158
msgid "Number of Periods"
msgstr "周期数"
-#: .\django_celery_beat\models.py:154
+#: django_celery_beat/models.py:159
msgid "Number of interval periods to wait before running the task again"
msgstr "再次执行任务之前要等待的间隔周期数"
-#: .\django_celery_beat\models.py:160
+#: django_celery_beat/models.py:165
msgid "Interval Period"
msgstr "间隔周期"
-#: .\django_celery_beat\models.py:161
+#: django_celery_beat/models.py:166
msgid "The type of period between task runs (Example: days)"
msgstr "任务每次执行之间的时间间隔类型(例如:天)"
-#: .\django_celery_beat\models.py:167
+#: django_celery_beat/models.py:172
msgid "interval"
msgstr "间隔"
-#: .\django_celery_beat\models.py:168
+#: django_celery_beat/models.py:173
msgid "intervals"
msgstr "间隔"
-#: .\django_celery_beat\models.py:196
+#: django_celery_beat/models.py:200
msgid "every {}"
msgstr "每 {}"
-#: .\django_celery_beat\models.py:201
+#: django_celery_beat/models.py:205
msgid "every {} {}"
msgstr "每 {} {}"
-#: .\django_celery_beat\models.py:212
+#: django_celery_beat/models.py:216
msgid "Clock Time"
msgstr "定时时间"
-#: .\django_celery_beat\models.py:213
+#: django_celery_beat/models.py:217
msgid "Run the task at clocked time"
msgstr "在定时时间执行任务"
-#: .\django_celery_beat\models.py:219 .\django_celery_beat\models.py:220
+#: django_celery_beat/models.py:223 django_celery_beat/models.py:224
msgid "clocked"
msgstr "定时"
-#: .\django_celery_beat\models.py:260
+#: django_celery_beat/models.py:264
msgid "Minute(s)"
msgstr "分钟"
-#: .\django_celery_beat\models.py:262
+#: django_celery_beat/models.py:266
msgid "Cron Minutes to Run. Use \"*\" for \"all\". (Example: \"0,30\")"
msgstr "计划执行的分钟。 将\"*\"用作\"all\"。(例如:\"0,30\")"
-#: .\django_celery_beat\models.py:267
+#: django_celery_beat/models.py:271
msgid "Hour(s)"
msgstr "小时"
-#: .\django_celery_beat\models.py:269
+#: django_celery_beat/models.py:273
msgid "Cron Hours to Run. Use \"*\" for \"all\". (Example: \"8,20\")"
msgstr "计划执行的小时。 将\"*\"用作\"all\"。(例如:\"8,20\")"
-#: .\django_celery_beat\models.py:274
+#: django_celery_beat/models.py:278
msgid "Day(s) Of The Week"
msgstr "一个星期的第几天"
-#: .\django_celery_beat\models.py:276
-msgid "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")"
+#: django_celery_beat/models.py:280
+#, fuzzy
+#| msgid ""
+#| "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")"
+msgid ""
+"Cron Days Of The Week to Run. Use \"*\" for \"all\", Sunday is 0 or 7, "
+"Monday is 1. (Example: \"0,5\")"
msgstr "计划执行的每周的第几天。将\"*\"用作\"all\"。(例如:\"0,5\")"
-#: .\django_celery_beat\models.py:282
+#: django_celery_beat/models.py:286
msgid "Day(s) Of The Month"
msgstr "一个月的第几天"
-#: .\django_celery_beat\models.py:284
+#: django_celery_beat/models.py:288
msgid ""
"Cron Days Of The Month to Run. Use \"*\" for \"all\". (Example: \"1,15\")"
msgstr "计划执行的每个月的第几天。将\"*\"用作\"all\"。(例如:\"0,5\")"
-#: .\django_celery_beat\models.py:290
+#: django_celery_beat/models.py:294
msgid "Month(s) Of The Year"
msgstr "一年的第几个月"
-#: .\django_celery_beat\models.py:292
+#: django_celery_beat/models.py:296
+#, fuzzy
+#| msgid ""
+#| "Cron Months Of The Year to Run. Use \"*\" for \"all\". (Example: \"0,6\")"
msgid ""
-"Cron Months Of The Year to Run. Use \"*\" for \"all\". (Example: \"0,6\")"
+"Cron Months (1-12) Of The Year to Run. Use \"*\" for \"all\". (Example: "
+"\"1,12\")"
msgstr "计划执行的每一年的第几个月。将\"*\"用作\"all\"。(例如:\"0,5\")"
-#: .\django_celery_beat\models.py:299
+#: django_celery_beat/models.py:304
msgid "Cron Timezone"
msgstr "计划任务的时区"
-#: .\django_celery_beat\models.py:301
+#: django_celery_beat/models.py:306
msgid "Timezone to Run the Cron Schedule on. Default is UTC."
msgstr "执行计划任务表的时区。 默认为UTC。"
-#: .\django_celery_beat\models.py:307
+#: django_celery_beat/models.py:312
msgid "crontab"
msgstr "计划任务"
-#: .\django_celery_beat\models.py:308
+#: django_celery_beat/models.py:313
msgid "crontabs"
msgstr "计划任务"
-#: .\django_celery_beat\models.py:393
+#: django_celery_beat/models.py:404
msgid "Name"
msgstr "任务名"
-#: .\django_celery_beat\models.py:394
+#: django_celery_beat/models.py:405
msgid "Short Description For This Task"
msgstr "该任务的简短说明"
-#: .\django_celery_beat\models.py:399
+#: django_celery_beat/models.py:410
msgid ""
"The Name of the Celery Task that Should be Run. (Example: \"proj.tasks."
"import_contacts\")"
msgstr "被执行的任务的名称。(例如:\"proj.tasks.import_contacts\")"
-#: .\django_celery_beat\models.py:407
+#: django_celery_beat/models.py:418
msgid "Interval Schedule"
msgstr "间隔时间表"
-#: .\django_celery_beat\models.py:408
+#: django_celery_beat/models.py:419
msgid ""
"Interval Schedule to run the task on. Set only one schedule type, leave the "
"others null."
msgstr "执行任务的间隔时间表。 仅设置一种时间表类型,将其他保留为空。"
-#: .\django_celery_beat\models.py:413
+#: django_celery_beat/models.py:424
msgid "Crontab Schedule"
msgstr "计划时间表"
-#: .\django_celery_beat\models.py:414
+#: django_celery_beat/models.py:425
msgid ""
"Crontab Schedule to run the task on. Set only one schedule type, leave the "
"others null."
msgstr "执行任务的计划时间表。 仅设置一种时间表类型,将其他保留为空。"
-#: .\django_celery_beat\models.py:419
+#: django_celery_beat/models.py:430
msgid "Solar Schedule"
msgstr "日程时间表"
-#: .\django_celery_beat\models.py:420
+#: django_celery_beat/models.py:431
msgid ""
"Solar Schedule to run the task on. Set only one schedule type, leave the "
"others null."
msgstr "执行任务的日程时间表。 仅设置一种时间表类型,将其他保留为空。"
-#: .\django_celery_beat\models.py:425
+#: django_celery_beat/models.py:436
msgid "Clocked Schedule"
msgstr "定时时间表"
-#: .\django_celery_beat\models.py:426
+#: django_celery_beat/models.py:437
msgid ""
"Clocked Schedule to run the task on. Set only one schedule type, leave the "
"others null."
msgstr "执行任务的定时时间表。 仅设置一种时间表类型,将其他保留为空。"
-#: .\django_celery_beat\models.py:432
+#: django_celery_beat/models.py:443
msgid "Positional Arguments"
msgstr "位置参数"
-#: .\django_celery_beat\models.py:434
+#: django_celery_beat/models.py:445
msgid "JSON encoded positional arguments (Example: [\"arg1\", \"arg2\"])"
msgstr "JSON编码的位置参数(例如: [\"arg1\", \"arg2\"])"
-#: .\django_celery_beat\models.py:439
+#: django_celery_beat/models.py:450
msgid "Keyword Arguments"
msgstr "关键字参数"
-#: .\django_celery_beat\models.py:441
+#: django_celery_beat/models.py:452
msgid "JSON encoded keyword arguments (Example: {\"argument\": \"value\"})"
msgstr "JSON编码的关键字参数(例如: {\"argument\": \"value\"})"
-#: .\django_celery_beat\models.py:447
+#: django_celery_beat/models.py:458
msgid "Queue Override"
msgstr "队列覆盖"
-#: .\django_celery_beat\models.py:449
+#: django_celery_beat/models.py:460
msgid "Queue defined in CELERY_TASK_QUEUES. Leave None for default queuing."
msgstr "在 CELERY_TASK_QUEUES 定义的队列。保留空以进行默认排队。"
-#: .\django_celery_beat\models.py:458
+#: django_celery_beat/models.py:469
msgid "Exchange"
msgstr "交换机"
-#: .\django_celery_beat\models.py:459
+#: django_celery_beat/models.py:470
msgid "Override Exchange for low-level AMQP routing"
msgstr "覆盖交换机以进行低层级AMQP路由"
-#: .\django_celery_beat\models.py:463
+#: django_celery_beat/models.py:474
msgid "Routing Key"
msgstr "路由键"
-#: .\django_celery_beat\models.py:464
+#: django_celery_beat/models.py:475
msgid "Override Routing Key for low-level AMQP routing"
msgstr "覆盖路由键以进行低层级AMQP路由"
-#: .\django_celery_beat\models.py:468
+#: django_celery_beat/models.py:479
msgid "AMQP Message Headers"
msgstr "AMQP消息头"
-#: .\django_celery_beat\models.py:469
+#: django_celery_beat/models.py:480
msgid "JSON encoded message headers for the AMQP message."
msgstr "AMQP消息的JSON编码消息头。"
-#: .\django_celery_beat\models.py:475
+#: django_celery_beat/models.py:486
msgid "Priority"
msgstr "优先级"
-#: .\django_celery_beat\models.py:477
+#: django_celery_beat/models.py:488
msgid ""
"Priority Number between 0 and 255. Supported by: RabbitMQ, Redis (priority "
"reversed, 0 is highest)."
msgstr ""
"优先级数字,介于0和255之间。支持者:RabbitMQ,Redis(优先级颠倒,0是最高)。"
-#: .\django_celery_beat\models.py:482
+#: django_celery_beat/models.py:493
msgid "Expires Datetime"
msgstr "过期时刻"
-#: .\django_celery_beat\models.py:484
+#: django_celery_beat/models.py:495
msgid ""
"Datetime after which the schedule will no longer trigger the task to run"
msgstr "过期时刻,计划表将在此时刻后不再触发任务执行"
-#: .\django_celery_beat\models.py:489
+#: django_celery_beat/models.py:500
msgid "Expires timedelta with seconds"
msgstr "过期时间间隔,以秒为单位"
-#: .\django_celery_beat\models.py:491
+#: django_celery_beat/models.py:502
msgid ""
"Timedelta with seconds which the schedule will no longer trigger the task to "
"run"
msgstr "再过该秒后,不再触发任务执行"
-#: .\django_celery_beat\models.py:497
+#: django_celery_beat/models.py:508
msgid "One-off Task"
msgstr "一次任务"
-#: .\django_celery_beat\models.py:499
+#: django_celery_beat/models.py:510
msgid "If True, the schedule will only run the task a single time"
msgstr "如果为True,则计划将仅运行任务一次"
-#: .\django_celery_beat\models.py:503
+#: django_celery_beat/models.py:514
msgid "Start Datetime"
msgstr "开始时间"
-#: .\django_celery_beat\models.py:505
+#: django_celery_beat/models.py:516
msgid "Datetime when the schedule should begin triggering the task to run"
msgstr "时间表开始触发任务执行的时刻"
-#: .\django_celery_beat\models.py:510
+#: django_celery_beat/models.py:521
msgid "Enabled"
msgstr "已启用"
-#: .\django_celery_beat\models.py:511
+#: django_celery_beat/models.py:522
msgid "Set to False to disable the schedule"
msgstr "设置为False可禁用时间表"
-#: .\django_celery_beat\models.py:516
+#: django_celery_beat/models.py:527
msgid "Last Run Datetime"
msgstr "上次运行时刻"
-#: .\django_celery_beat\models.py:518
+#: django_celery_beat/models.py:529
msgid ""
"Datetime that the schedule last triggered the task to run. Reset to None if "
"enabled is set to False."
msgstr "最后一次触发任务执行的时刻。 如果enabled设置为False,则重置为None。"
-#: .\django_celery_beat\models.py:523
+#: django_celery_beat/models.py:534
msgid "Total Run Count"
msgstr "总运行次数"
-#: .\django_celery_beat\models.py:525
+#: django_celery_beat/models.py:536
msgid "Running count of how many times the schedule has triggered the task"
msgstr "任务执行多少次的运行计数"
-#: .\django_celery_beat\models.py:530
+#: django_celery_beat/models.py:541
msgid "Last Modified"
msgstr "最后修改"
-#: .\django_celery_beat\models.py:531
+#: django_celery_beat/models.py:542
msgid "Datetime that this PeriodicTask was last modified"
msgstr "该周期性任务的最后修改时刻"
-#: .\django_celery_beat\models.py:535
+#: django_celery_beat/models.py:546
msgid "Description"
msgstr "描述"
-#: .\django_celery_beat\models.py:537
+#: django_celery_beat/models.py:548
msgid "Detailed description about the details of this Periodic Task"
msgstr "有关此周期性任务的详细信息"
-#: .\django_celery_beat\models.py:546
+#: django_celery_beat/models.py:557
msgid "periodic task"
msgstr "周期性任务"
-#: .\django_celery_beat\models.py:547
+#: django_celery_beat/models.py:558
msgid "periodic tasks"
msgstr "周期性任务"
+
+#: django_celery_beat/templates/admin/djcelery/change_list.html:6
+msgid "Home"
+msgstr ""
diff --git a/django_celery_beat/migrations/0017_alter_crontabschedule_month_of_year.py b/django_celery_beat/migrations/0017_alter_crontabschedule_month_of_year.py
new file mode 100644
index 0000000..360c051
--- /dev/null
+++ b/django_celery_beat/migrations/0017_alter_crontabschedule_month_of_year.py
@@ -0,0 +1,19 @@
+# Generated by Django 4.1.4 on 2022-12-17 09:21
+
+from django.db import migrations, models
+import django_celery_beat.validators
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('django_celery_beat', '0016_alter_crontabschedule_timezone'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='crontabschedule',
+ name='month_of_year',
+ field=models.CharField(default='*', help_text='Cron Months (1-12) Of The Year to Run. Use "*" for "all". (Example: "1,12")', max_length=64, validators=[django_celery_beat.validators.month_of_year_validator], verbose_name='Month(s) Of The Year'),
+ ),
+ ]
diff --git a/django_celery_beat/migrations/0018_improve_crontab_helptext.py b/django_celery_beat/migrations/0018_improve_crontab_helptext.py
new file mode 100644
index 0000000..79a8860
--- /dev/null
+++ b/django_celery_beat/migrations/0018_improve_crontab_helptext.py
@@ -0,0 +1,19 @@
+# Generated by Django 3.2.16 on 2022-12-23 22:30
+
+from django.db import migrations, models
+import django_celery_beat.validators
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('django_celery_beat', '0017_alter_crontabschedule_month_of_year'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='crontabschedule',
+ name='day_of_week',
+ field=models.CharField(default='*', help_text='Cron Days Of The Week to Run. Use "*" for "all", Sunday is 0 or 7, Monday is 1. (Example: "0,5")', max_length=64, validators=[django_celery_beat.validators.day_of_week_validator], verbose_name='Day(s) Of The Week'),
+ ),
+ ]
diff --git a/django_celery_beat/models.py b/django_celery_beat/models.py
index 6bfc650..dbfeb7f 100644
--- a/django_celery_beat/models.py
+++ b/django_celery_beat/models.py
@@ -8,6 +8,7 @@ from datetime import timedelta
import timezone_field
from celery import current_app, schedules
+from cron_descriptor import get_description
from django.conf import settings
from django.core.exceptions import MultipleObjectsReturned, ValidationError
from django.core.validators import MaxValueValidator, MinValueValidator
@@ -276,8 +277,8 @@ class CrontabSchedule(models.Model):
max_length=64, default='*',
verbose_name=_('Day(s) Of The Week'),
help_text=_(
- 'Cron Days Of The Week to Run. Use "*" for "all". '
- '(Example: "0,5")'),
+ 'Cron Days Of The Week to Run. Use "*" for "all", Sunday '
+ 'is 0 or 7, Monday is 1. (Example: "0,5")'),
validators=[validators.day_of_week_validator],
)
day_of_month = models.CharField(
@@ -292,8 +293,8 @@ class CrontabSchedule(models.Model):
max_length=64, default='*',
verbose_name=_('Month(s) Of The Year'),
help_text=_(
- 'Cron Months Of The Year to Run. Use "*" for "all". '
- '(Example: "0,6")'),
+ 'Cron Months (1-12) Of The Year to Run. Use "*" for "all". '
+ '(Example: "1,12")'),
validators=[validators.month_of_year_validator],
)
@@ -313,6 +314,15 @@ class CrontabSchedule(models.Model):
ordering = ['month_of_year', 'day_of_month',
'day_of_week', 'hour', 'minute', 'timezone']
+ @property
+ def human_readable(self):
+ human_readable = get_description('{} {} {} {} {}'.format(
+ cronexp(self.minute), cronexp(self.hour),
+ cronexp(self.day_of_month), cronexp(self.month_of_year),
+ cronexp(self.day_of_week)
+ ))
+ return f'{human_readable} {str(self.timezone)}'
+
def __str__(self):
return '{} {} {} {} {} (m/h/dM/MY/d) {}'.format(
cronexp(self.minute), cronexp(self.hour),
@@ -612,12 +622,16 @@ class PeriodicTask(models.Model):
return fmt.format(self)
@property
- def schedule(self):
+ def scheduler(self):
if self.interval:
- return self.interval.schedule
+ return self.interval
if self.crontab:
- return self.crontab.schedule
+ return self.crontab
if self.solar:
- return self.solar.schedule
+ return self.solar
if self.clocked:
- return self.clocked.schedule
+ return self.clocked
+
+ @property
+ def schedule(self):
+ return self.scheduler.schedule
diff --git a/django_celery_beat/querysets.py b/django_celery_beat/querysets.py
index 622c4c2..f00eee3 100644
--- a/django_celery_beat/querysets.py
+++ b/django_celery_beat/querysets.py
@@ -6,4 +6,6 @@ class PeriodicTaskQuerySet(models.QuerySet):
"""QuerySet for PeriodicTask."""
def enabled(self):
- return self.filter(enabled=True)
+ return self.filter(enabled=True).prefetch_related(
+ "interval", "crontab", "solar", "clocked"
+ )
diff --git a/django_celery_beat/schedulers.py b/django_celery_beat/schedulers.py
index 449312b..2c1b577 100644
--- a/django_celery_beat/schedulers.py
+++ b/django_celery_beat/schedulers.py
@@ -85,6 +85,13 @@ class ModelEntry(ScheduleEntry):
if not model.last_run_at:
model.last_run_at = self._default_now()
+ # if last_run_at is not set and
+ # model.start_time last_run_at should be in way past.
+ # This will trigger the job to run at start_time
+ # and avoid the heap block.
+ if self.model.start_time:
+ model.last_run_at = model.last_run_at \
+ - datetime.timedelta(days=365 * 30)
self.last_run_at = model.last_run_at
diff --git a/django_celery_beat/templates/admin/djcelery/change_list.html b/django_celery_beat/templates/admin/djcelery/change_list.html
index 20b269f..0ebd3ef 100644
--- a/django_celery_beat/templates/admin/djcelery/change_list.html
+++ b/django_celery_beat/templates/admin/djcelery/change_list.html
@@ -11,7 +11,7 @@
<ul class="messagelist">
<li class="warning">
Periodic tasks won't be dispatched unless you set the
- <code>CELERYBEAT_SCHEDULER</code> setting to
+ <code>CELERY_BEAT_SCHEDULER</code> setting to
<code>djcelery.schedulers.DatabaseScheduler</code>,
or specify it using the <code>-S</code> option to celerybeat
</li>
diff --git a/django_celery_beat/templates/admin/djcelery/change_periodictask_form.html b/django_celery_beat/templates/admin/djcelery/change_periodictask_form.html
new file mode 100644
index 0000000..76d2343
--- /dev/null
+++ b/django_celery_beat/templates/admin/djcelery/change_periodictask_form.html
@@ -0,0 +1,22 @@
+{% extends 'admin/change_form.html' %}
+
+{% block admin_change_form_document_ready %}
+ {{ block.super }}
+
+ {{ readable_crontabs|json_script:"readable-crontabs" }}
+ <script id="periodic-task-overrides">
+ const readableCrontabs = JSON.parse(django.jQuery("#readable-crontabs").text());
+ var originalCrontabHelp = "{{ adminform.form.fields.crontab.help_text }}";
+
+ var updateCrontabHelp = function(additional) {
+ django.jQuery(".field-crontab .help").html(
+ `${originalCrontabHelp}<br/>Translation: ${additional}`);
+ };
+
+ django.jQuery(".field-crontab_translation").hide()
+ django.jQuery(".field-crontab").change(function() {
+ updateCrontabHelp(readableCrontabs[django.jQuery("#id_crontab").val()]);
+ });
+
+ </script>
+{% endblock %}
diff --git a/docs/includes/introduction.txt b/docs/includes/introduction.txt
index 8b6f2e8..89a4fc9 100644
--- a/docs/includes/introduction.txt
+++ b/docs/includes/introduction.txt
@@ -1,4 +1,4 @@
-:Version: 2.4.0
+:Version: 2.5.0
:Web: http://django-celery-beat.readthedocs.io/
:Download: http://pypi.python.org/pypi/django-celery-beat
:Source: http://github.com/celery/django-celery-beat
@@ -213,7 +213,7 @@ Both the worker and beat services need to be running at the same time.
.. code-block:: sh
- CELERYBEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
+ CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
diff --git a/docs/reference/django-celery-beat.signals.rst b/docs/reference/django-celery-beat.signals.rst
new file mode 100644
index 0000000..8deb970
--- /dev/null
+++ b/docs/reference/django-celery-beat.signals.rst
@@ -0,0 +1,11 @@
+=====================================================
+ ``django_celery_beat.signals``
+=====================================================
+
+.. contents::
+ :local:
+.. currentmodule:: django_celery_beat.signals
+
+.. automodule:: django_celery_beat.signals
+ :members:
+ :undoc-members:
diff --git a/docs/reference/index.rst b/docs/reference/index.rst
index e23ba2f..52139a8 100644
--- a/docs/reference/index.rst
+++ b/docs/reference/index.rst
@@ -19,3 +19,4 @@
django-celery-beat.utils
django-celery-beat.validators
django-celery-beat.clockedschedule
+ django-celery-beat.signals
diff --git a/requirements/default.txt b/requirements/default.txt
index 3374e92..03c129a 100644
--- a/requirements/default.txt
+++ b/requirements/default.txt
@@ -4,3 +4,4 @@ django-timezone-field>=5.0
backports.zoneinfo; python_version<"3.9"
tzdata
python-crontab>=2.3.4
+cron-descriptor>=1.2.32
diff --git a/requirements/docs.txt b/requirements/docs.txt
index e37f0f9..a5a237d 100644
--- a/requirements/docs.txt
+++ b/requirements/docs.txt
@@ -1,5 +1,5 @@
-Django>=2.2,<4.2
+Django>=2.2,<5.0
https://github.com/celery/sphinx_celery/archive/master.zip
-https://github.com/celery/kombu/zipball/master#egg=kombu
-https://github.com/celery/celery/zipball/master#egg=celery
+https://github.com/celery/kombu/zipball/main#egg=kombu
+https://github.com/celery/celery/zipball/main#egg=celery
-r default.txt
diff --git a/requirements/runtime.txt b/requirements/runtime.txt
index 7613f70..1ec387a 100644
--- a/requirements/runtime.txt
+++ b/requirements/runtime.txt
@@ -1 +1 @@
-Django>=2.2,<4.2
+Django>=2.2,<5.0
diff --git a/requirements/test-django.txt b/requirements/test-django.txt
index f7979f8..4638dae 100644
--- a/requirements/test-django.txt
+++ b/requirements/test-django.txt
@@ -1 +1 @@
-Django>=3.2,<4.2
+Django>=3.2,<5.0
diff --git a/requirements/test-django41.txt b/requirements/test-django41.txt
index ec38ac6..39d54ab 100644
--- a/requirements/test-django41.txt
+++ b/requirements/test-django41.txt
@@ -1 +1 @@
-django>=4.1.2,<4.2
+django>=4.1.4,<4.2
diff --git a/requirements/test-django42.txt b/requirements/test-django42.txt
new file mode 100644
index 0000000..fc8fea2
--- /dev/null
+++ b/requirements/test-django42.txt
@@ -0,0 +1 @@
+django>=4.2b1,<5.0
diff --git a/requirements/test.txt b/requirements/test.txt
index 98e1967..4c0c39c 100644
--- a/requirements/test.txt
+++ b/requirements/test.txt
@@ -1,5 +1,5 @@
case>=1.3.1
-pytest-django>=2.2,<5.0
+pytest-django>=4.5.2,<5.0
pytest>=6.2.5,<8.0
pytest-timeout
ephem
diff --git a/setup.py b/setup.py
index b68819b..2eefa42 100644
--- a/setup.py
+++ b/setup.py
@@ -39,12 +39,14 @@ classes = """
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
+ Programming Language :: Python :: 3.11
Programming Language :: Python :: Implementation :: CPython
Programming Language :: Python :: Implementation :: PyPy
Framework :: Django
Framework :: Django :: 3.2
Framework :: Django :: 4.0
Framework :: Django :: 4.1
+ Framework :: Django :: 4.2
Operating System :: OS Independent
Topic :: Communications
Topic :: System :: Distributed Computing
diff --git a/t/unit/test_schedulers.py b/t/unit/test_schedulers.py
index 062184c..161d1e2 100644
--- a/t/unit/test_schedulers.py
+++ b/t/unit/test_schedulers.py
@@ -599,6 +599,29 @@ class test_DatabaseScheduler(SchedulerCase):
s.sync()
assert len(tried) == 1 and tried == {e1.name}
+ def test_starttime_trigger(self, monkeypatch):
+ # Ensure there is no heap block in case of new task with start_time
+ PeriodicTask.objects.all().delete()
+ s = self.Scheduler(app=self.app)
+ assert not s._heap
+ m1 = self.create_model_interval(schedule(timedelta(seconds=3)))
+ m1.save()
+ s.tick()
+ assert len(s._heap) == 2
+ m2 = self.create_model_interval(
+ schedule(timedelta(days=1)),
+ start_time=make_aware(
+ datetime.now() + timedelta(seconds=2)))
+ m2.save()
+ s.tick()
+ assert s._heap[0][2].name == m2.name
+ assert len(s._heap) == 3
+ assert s._heap[0]
+ time.sleep(2)
+ s.tick()
+ assert s._heap[0]
+ assert s._heap[0][2].name == m1.name
+
@pytest.mark.django_db()
class test_models(SchedulerCase):
diff --git a/tox.ini b/tox.ini
index e638a27..4423480 100644
--- a/tox.ini
+++ b/tox.ini
@@ -4,6 +4,7 @@ python =
3.8: py38, apicheck, linkcheck
3.9: py39, flake8, pydocstyle, cov
3.10: py310
+ 3.11: py311
pypy-3.9: pypy3
[gh-actions:env]
@@ -11,14 +12,16 @@ DJANGO =
3.2: django32
4.0: django40
4.1: django41
+ 4.2: django42
[tox]
envlist =
py37-django{32}
- py38-django{32,40,41}
- py39-django{32,40,41}
- py310-django{32,40,41}
- pypy3-django{32}
+ py38-django{32,40,41,42}
+ py39-django{32,40,41,42}
+ py310-django{32,40,41,42}
+ py311-django{41,42}
+ pypy3-django{32,40,41,42}
flake8
apicheck
linkcheck
@@ -36,6 +39,7 @@ deps=
django32: -r{toxinidir}/requirements/test-django32.txt
django40: -r{toxinidir}/requirements/test-django40.txt
django41: -r{toxinidir}/requirements/test-django41.txt
+ django42: -r{toxinidir}/requirements/test-django42.txt
linkcheck,apicheck: -r{toxinidir}/requirements/docs.txt
flake8,pydocstyle: -r{toxinidir}/requirements/pkgutils.txt