Update the checkouts app to use Celery beat

This commit is contained in:
Roberto Rosario
2014-10-03 01:56:03 -04:00
parent 80a65c69b7
commit af6ac7a170
2 changed files with 14 additions and 3 deletions

View File

@@ -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),
},
})

View File

@@ -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'