Update the checkouts app to use Celery beat
This commit is contained in:
@@ -1,12 +1,14 @@
|
|||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
from datetime import timedelta
|
||||||
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from acls.api import class_permissions
|
from acls.api import class_permissions
|
||||||
from documents.models import Document
|
from documents.models import Document
|
||||||
|
from mayan.celery import app
|
||||||
from history.api import register_history_type
|
from history.api import register_history_type
|
||||||
from navigation.api import register_links, register_top_menu
|
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,
|
from .events import (HISTORY_DOCUMENT_CHECKED_OUT, HISTORY_DOCUMENT_CHECKED_IN,
|
||||||
HISTORY_DOCUMENT_AUTO_CHECKED_IN, HISTORY_DOCUMENT_FORCEFUL_CHECK_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)
|
PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE)
|
||||||
from .tasks import task_check_expired_check_outs
|
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():
|
def initialize_document_checkout_extra_methods():
|
||||||
Document.add_to_class('is_checked_out', lambda document: DocumentCheckout.objects.is_document_checked_out(document))
|
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
|
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()
|
initialize_document_checkout_extra_methods()
|
||||||
register_history_type(HISTORY_DOCUMENT_CHECKED_OUT)
|
register_history_type(HISTORY_DOCUMENT_CHECKED_OUT)
|
||||||
register_history_type(HISTORY_DOCUMENT_CHECKED_IN)
|
register_history_type(HISTORY_DOCUMENT_CHECKED_IN)
|
||||||
register_history_type(HISTORY_DOCUMENT_AUTO_CHECKED_IN)
|
register_history_type(HISTORY_DOCUMENT_AUTO_CHECKED_IN)
|
||||||
register_history_type(HISTORY_DOCUMENT_FORCEFUL_CHECK_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
|
import logging
|
||||||
|
|
||||||
from lock_manager import Lock, LockError
|
from lock_manager import Lock, LockError
|
||||||
|
from mayan.celery import app
|
||||||
|
|
||||||
from .models import DocumentCheckout
|
from .models import DocumentCheckout
|
||||||
|
|
||||||
@@ -10,6 +11,7 @@ LOCK_EXPIRE = 50
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
@app.task
|
||||||
def task_check_expired_check_outs():
|
def task_check_expired_check_outs():
|
||||||
logger.debug('executing...')
|
logger.debug('executing...')
|
||||||
lock_id = u'task_expired_check_outs'
|
lock_id = u'task_expired_check_outs'
|
||||||
|
|||||||
Reference in New Issue
Block a user