Update the checkouts app to use Celery beat
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from datetime import timedelta
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from acls.api import class_permissions
|
||||
from documents.models import Document
|
||||
from mayan.celery import app
|
||||
from history.api import register_history_type
|
||||
from navigation.api import register_links, register_top_menu
|
||||
from scheduler.api import register_interval_job
|
||||
|
||||
from .events import (HISTORY_DOCUMENT_CHECKED_OUT, HISTORY_DOCUMENT_CHECKED_IN,
|
||||
HISTORY_DOCUMENT_AUTO_CHECKED_IN, HISTORY_DOCUMENT_FORCEFUL_CHECK_IN)
|
||||
@@ -17,6 +19,8 @@ from .permissions import (PERMISSION_DOCUMENT_CHECKOUT,
|
||||
PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE)
|
||||
from .tasks import task_check_expired_check_outs
|
||||
|
||||
CHECK_EXPIRED_CHECK_OUTS_INTERVAL = 60 # Lowest check out expiration allowed
|
||||
|
||||
|
||||
def initialize_document_checkout_extra_methods():
|
||||
Document.add_to_class('is_checked_out', lambda document: DocumentCheckout.objects.is_document_checked_out(document))
|
||||
@@ -36,10 +40,15 @@ class_permissions(Document, [
|
||||
PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE
|
||||
])
|
||||
|
||||
CHECK_EXPIRED_CHECK_OUTS_INTERVAL = 60 # Lowest check out expiration allowed
|
||||
register_interval_job('task_check_expired_check_outs', _(u'Check expired check out documents and checks them in.'), task_check_expired_check_outs, seconds=CHECK_EXPIRED_CHECK_OUTS_INTERVAL)
|
||||
initialize_document_checkout_extra_methods()
|
||||
register_history_type(HISTORY_DOCUMENT_CHECKED_OUT)
|
||||
register_history_type(HISTORY_DOCUMENT_CHECKED_IN)
|
||||
register_history_type(HISTORY_DOCUMENT_AUTO_CHECKED_IN)
|
||||
register_history_type(HISTORY_DOCUMENT_FORCEFUL_CHECK_IN)
|
||||
|
||||
app.conf.CELERYBEAT_SCHEDULE.update({
|
||||
'check_expired_check_outs': {
|
||||
'task': 'checkouts.tasks.task_check_expired_check_outs',
|
||||
'schedule': timedelta(seconds=CHECK_EXPIRED_CHECK_OUTS_INTERVAL),
|
||||
},
|
||||
})
|
||||
|
||||
@@ -3,6 +3,7 @@ from __future__ import absolute_import
|
||||
import logging
|
||||
|
||||
from lock_manager import Lock, LockError
|
||||
from mayan.celery import app
|
||||
|
||||
from .models import DocumentCheckout
|
||||
|
||||
@@ -10,6 +11,7 @@ LOCK_EXPIRE = 50
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@app.task
|
||||
def task_check_expired_check_outs():
|
||||
logger.debug('executing...')
|
||||
lock_id = u'task_expired_check_outs'
|
||||
|
||||
Reference in New Issue
Block a user