summaryrefslogtreecommitdiff
path: root/python-django-kronos.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-django-kronos.spec')
-rw-r--r--python-django-kronos.spec315
1 files changed, 315 insertions, 0 deletions
diff --git a/python-django-kronos.spec b/python-django-kronos.spec
new file mode 100644
index 0000000..7324d26
--- /dev/null
+++ b/python-django-kronos.spec
@@ -0,0 +1,315 @@
+%global _empty_manifest_terminate_build 0
+Name: python-django-kronos
+Version: 1.0
+Release: 1
+Summary: Kronos is a Django application that makes it easy to define and schedule tasks with cron.
+License: UNKNOWN
+URL: http://github.com/jgorset/django-kronos
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/4e/90/15b99070666da99c3904c0ad7b66b263a7fd678cf0c2764810435ab18ed6/django-kronos-1.0.tar.gz
+BuildArch: noarch
+
+
+%description
+Define tasks
+^^^^^^^^^^^^
+Kronos collects tasks from ``cron`` modules in your project root and each of your applications::
+ # app/cron.py
+ import kronos
+ import random
+ @kronos.register('0 0 * * *')
+ def complain():
+ complaints = [
+ "I forgot to migrate our applications's cron jobs to our new server! Darn!",
+ "I'm out of complaints! Damnit!"
+ ]
+ print random.choice(complaints)
+Kronos works with Django management commands, too::
+ # app/management/commands/task.py
+ from django.core.management.base import BaseCommand
+ import kronos
+ @kronos.register('0 0 * * *')
+ class Command(BaseCommand):
+ def handle(self, *args, **options):
+ print('Hello, world!')
+If your management command accepts arguments, just pass them in the decorator::
+ # app/management/commands/task.py
+ from django.core.management.base import BaseCommand
+ import kronos
+ @kronos.register('0 0 * * *', args={'-l': 'nb'})
+ class Command(BaseCommand):
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '-l', '--language',
+ dest='language',
+ type=str,
+ default='en',
+ )
+ def handle(self, *args, **options):
+ if options['language'] == 'en':
+ print('Hello, world!')
+ if options['language'] == 'nb':
+ print('Hei, verden!')
+Run tasks manually
+^^^^^^^^^^^^^^^^^^
+ $ python manage.py runtask complain
+ I forgot to migrate our applications's cron jobs to our new server! Darn!
+Keep in mind that if the registered task is a django command you have to run it
+in the normal way::
+ $ python manage.py task
+List all registered tasks
+^^^^^^^^^^^^^^^^^^
+ $ python manage.py showtasks
+ * List of tasks registered in Kronos *
+ >> Kronos tasks
+ >> my_task_one
+ >> my_task_two
+ >> Django tasks
+ >> my_django_task
+Register tasks with cron
+^^^^^^^^^^^^^^^^^^^^^^^^
+ $ python manage.py installtasks
+ Installed 1 task.
+You can review the crontab with a ``crontab -l`` command::
+ $ crontab -l
+ 0 0 * * * /usr/bin/python /path/to/manage.py runtask complain --settings=myprpoject.settings $KRONOS_BREAD_CRUMB
+ 0 0 * * * /usr/bin/python /path/to/manage.py task --settings=myprpoject.settings $KRONOS_BREAD_CRUMB
+Usually this line will work pretty well for you, but there can be some rare
+cases when it requires modification. You can achieve it with a number of
+settings variables used by kronos:
+KRONOS_PYTHON
+ Python interpreter to build a crontab line (defaults to the interpreter you used to
+ invoke the management command).
+KRONOS_MANAGE
+ Management command to build a crontab line (defaults to ``manage.py`` in the current
+ working directory).
+KRONOS_PYTHONPATH
+ Extra path which will be added as a ``--pythonpath`` option to the management command.
+KRONOS_POSTFIX
+ Extra string added at the end of the command. For dirty thinks like ``> /dev/null 2>&1``
+KRONOS_PREFIX
+ Extra string added at the beginning of the command. For dirty thinks like ``source /path/to/env &&``.
+ If you use the ``virtualenv``, you can add the environment path by ``echo "KRONOS_PREFIX = 'source `echo $VIRTUAL_ENV`/bin/activate && '" >> myprpoject/settings.py``
+Define these variables in your ``settings.py`` file if you wish to alter crontab lines.
+The env variable ``$KRONOS_BREAD_CRUMB`` is defined to detect which tasks have to be deleted after
+being installed.
+
+%package -n python3-django-kronos
+Summary: Kronos is a Django application that makes it easy to define and schedule tasks with cron.
+Provides: python-django-kronos
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-django-kronos
+Define tasks
+^^^^^^^^^^^^
+Kronos collects tasks from ``cron`` modules in your project root and each of your applications::
+ # app/cron.py
+ import kronos
+ import random
+ @kronos.register('0 0 * * *')
+ def complain():
+ complaints = [
+ "I forgot to migrate our applications's cron jobs to our new server! Darn!",
+ "I'm out of complaints! Damnit!"
+ ]
+ print random.choice(complaints)
+Kronos works with Django management commands, too::
+ # app/management/commands/task.py
+ from django.core.management.base import BaseCommand
+ import kronos
+ @kronos.register('0 0 * * *')
+ class Command(BaseCommand):
+ def handle(self, *args, **options):
+ print('Hello, world!')
+If your management command accepts arguments, just pass them in the decorator::
+ # app/management/commands/task.py
+ from django.core.management.base import BaseCommand
+ import kronos
+ @kronos.register('0 0 * * *', args={'-l': 'nb'})
+ class Command(BaseCommand):
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '-l', '--language',
+ dest='language',
+ type=str,
+ default='en',
+ )
+ def handle(self, *args, **options):
+ if options['language'] == 'en':
+ print('Hello, world!')
+ if options['language'] == 'nb':
+ print('Hei, verden!')
+Run tasks manually
+^^^^^^^^^^^^^^^^^^
+ $ python manage.py runtask complain
+ I forgot to migrate our applications's cron jobs to our new server! Darn!
+Keep in mind that if the registered task is a django command you have to run it
+in the normal way::
+ $ python manage.py task
+List all registered tasks
+^^^^^^^^^^^^^^^^^^
+ $ python manage.py showtasks
+ * List of tasks registered in Kronos *
+ >> Kronos tasks
+ >> my_task_one
+ >> my_task_two
+ >> Django tasks
+ >> my_django_task
+Register tasks with cron
+^^^^^^^^^^^^^^^^^^^^^^^^
+ $ python manage.py installtasks
+ Installed 1 task.
+You can review the crontab with a ``crontab -l`` command::
+ $ crontab -l
+ 0 0 * * * /usr/bin/python /path/to/manage.py runtask complain --settings=myprpoject.settings $KRONOS_BREAD_CRUMB
+ 0 0 * * * /usr/bin/python /path/to/manage.py task --settings=myprpoject.settings $KRONOS_BREAD_CRUMB
+Usually this line will work pretty well for you, but there can be some rare
+cases when it requires modification. You can achieve it with a number of
+settings variables used by kronos:
+KRONOS_PYTHON
+ Python interpreter to build a crontab line (defaults to the interpreter you used to
+ invoke the management command).
+KRONOS_MANAGE
+ Management command to build a crontab line (defaults to ``manage.py`` in the current
+ working directory).
+KRONOS_PYTHONPATH
+ Extra path which will be added as a ``--pythonpath`` option to the management command.
+KRONOS_POSTFIX
+ Extra string added at the end of the command. For dirty thinks like ``> /dev/null 2>&1``
+KRONOS_PREFIX
+ Extra string added at the beginning of the command. For dirty thinks like ``source /path/to/env &&``.
+ If you use the ``virtualenv``, you can add the environment path by ``echo "KRONOS_PREFIX = 'source `echo $VIRTUAL_ENV`/bin/activate && '" >> myprpoject/settings.py``
+Define these variables in your ``settings.py`` file if you wish to alter crontab lines.
+The env variable ``$KRONOS_BREAD_CRUMB`` is defined to detect which tasks have to be deleted after
+being installed.
+
+%package help
+Summary: Development documents and examples for django-kronos
+Provides: python3-django-kronos-doc
+%description help
+Define tasks
+^^^^^^^^^^^^
+Kronos collects tasks from ``cron`` modules in your project root and each of your applications::
+ # app/cron.py
+ import kronos
+ import random
+ @kronos.register('0 0 * * *')
+ def complain():
+ complaints = [
+ "I forgot to migrate our applications's cron jobs to our new server! Darn!",
+ "I'm out of complaints! Damnit!"
+ ]
+ print random.choice(complaints)
+Kronos works with Django management commands, too::
+ # app/management/commands/task.py
+ from django.core.management.base import BaseCommand
+ import kronos
+ @kronos.register('0 0 * * *')
+ class Command(BaseCommand):
+ def handle(self, *args, **options):
+ print('Hello, world!')
+If your management command accepts arguments, just pass them in the decorator::
+ # app/management/commands/task.py
+ from django.core.management.base import BaseCommand
+ import kronos
+ @kronos.register('0 0 * * *', args={'-l': 'nb'})
+ class Command(BaseCommand):
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '-l', '--language',
+ dest='language',
+ type=str,
+ default='en',
+ )
+ def handle(self, *args, **options):
+ if options['language'] == 'en':
+ print('Hello, world!')
+ if options['language'] == 'nb':
+ print('Hei, verden!')
+Run tasks manually
+^^^^^^^^^^^^^^^^^^
+ $ python manage.py runtask complain
+ I forgot to migrate our applications's cron jobs to our new server! Darn!
+Keep in mind that if the registered task is a django command you have to run it
+in the normal way::
+ $ python manage.py task
+List all registered tasks
+^^^^^^^^^^^^^^^^^^
+ $ python manage.py showtasks
+ * List of tasks registered in Kronos *
+ >> Kronos tasks
+ >> my_task_one
+ >> my_task_two
+ >> Django tasks
+ >> my_django_task
+Register tasks with cron
+^^^^^^^^^^^^^^^^^^^^^^^^
+ $ python manage.py installtasks
+ Installed 1 task.
+You can review the crontab with a ``crontab -l`` command::
+ $ crontab -l
+ 0 0 * * * /usr/bin/python /path/to/manage.py runtask complain --settings=myprpoject.settings $KRONOS_BREAD_CRUMB
+ 0 0 * * * /usr/bin/python /path/to/manage.py task --settings=myprpoject.settings $KRONOS_BREAD_CRUMB
+Usually this line will work pretty well for you, but there can be some rare
+cases when it requires modification. You can achieve it with a number of
+settings variables used by kronos:
+KRONOS_PYTHON
+ Python interpreter to build a crontab line (defaults to the interpreter you used to
+ invoke the management command).
+KRONOS_MANAGE
+ Management command to build a crontab line (defaults to ``manage.py`` in the current
+ working directory).
+KRONOS_PYTHONPATH
+ Extra path which will be added as a ``--pythonpath`` option to the management command.
+KRONOS_POSTFIX
+ Extra string added at the end of the command. For dirty thinks like ``> /dev/null 2>&1``
+KRONOS_PREFIX
+ Extra string added at the beginning of the command. For dirty thinks like ``source /path/to/env &&``.
+ If you use the ``virtualenv``, you can add the environment path by ``echo "KRONOS_PREFIX = 'source `echo $VIRTUAL_ENV`/bin/activate && '" >> myprpoject/settings.py``
+Define these variables in your ``settings.py`` file if you wish to alter crontab lines.
+The env variable ``$KRONOS_BREAD_CRUMB`` is defined to detect which tasks have to be deleted after
+being installed.
+
+%prep
+%autosetup -n django-kronos-1.0
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-django-kronos -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0-1
+- Package Spec generated