diff --git a/apps/ocr/__init__.py b/apps/ocr/__init__.py index caf429d36a..366c84ad8a 100644 --- a/apps/ocr/__init__.py +++ b/apps/ocr/__init__.py @@ -60,7 +60,6 @@ register_multi_item_links(['queue_document_list'], [re_queue_multiple_document, register_links(['setup_queue_transformation_create', 'setup_queue_transformation_edit', 'setup_queue_transformation_delete', 'document_queue_disable', 'document_queue_enable', 'queue_document_list', 'node_active_list', 'setup_queue_transformation_list'], [queue_document_list, node_active_list], menu_name='secondary_menu') register_links(['setup_queue_transformation_edit', 'setup_queue_transformation_delete', 'setup_queue_transformation_list', 'setup_queue_transformation_create'], [setup_queue_transformation_create], menu_name='sidebar') - register_tool(all_document_ocr_cleanup, namespace='ocr', title=_(u'OCR')) #Menus @@ -83,4 +82,4 @@ def document_post_save(sender, instance, **kwargs): post_save.connect(document_post_save, sender=Document) -register_interval_job(task_process_document_queues, seconds=QUEUE_PROCESSING_INTERVAL) +register_interval_job('task_process_document_queues', _(u'Checks the OCR queue for pending documents.'), task_process_document_queues, seconds=QUEUE_PROCESSING_INTERVAL) diff --git a/apps/scheduler/api.py b/apps/scheduler/api.py index 4c59b41fa5..d9fcd0c941 100644 --- a/apps/scheduler/api.py +++ b/apps/scheduler/api.py @@ -1,12 +1,24 @@ from scheduler import scheduler +from scheduler.exceptions import AlreadyScheduled registered_jobs = {} -def register_interval_job(func, weeks=0, days=0, hours=0, minutes=0, +def register_interval_job(name, title, func, weeks=0, days=0, hours=0, minutes=0, seconds=0, start_date=None, args=None, kwargs=None, job_name=None, **options): - scheduler.add_interval_job(func=func, weeks=weeks, days=days, + if name in registered_jobs: + raise AlreadyScheduled + + job = scheduler.add_interval_job(func=func, weeks=weeks, days=days, hours=hours, minutes=minutes, seconds=seconds, - start_date=start_date, args=args, kwargs=kwargs)#, **options) + start_date=start_date, args=args, kwargs=kwargs, **options) + + registered_jobs[name] = {'title': title, 'job': job} + + +def remove_job(name): + if name in registered_jobs: + scheduler.unschedule_job(registered_jobs[name]['job']) + diff --git a/apps/scheduler/exceptions.py b/apps/scheduler/exceptions.py new file mode 100644 index 0000000000..f30d9fe815 --- /dev/null +++ b/apps/scheduler/exceptions.py @@ -0,0 +1,2 @@ +class AlreadyScheduled(Exception): + pass