diff options
Diffstat (limited to 'python-django-kronos.spec')
| -rw-r--r-- | python-django-kronos.spec | 315 |
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 |
