diff --git a/src/documents/management/commands/document_consumer.py b/src/documents/management/commands/document_consumer.py index 0acdaeeb0..5f135fd22 100644 --- a/src/documents/management/commands/document_consumer.py +++ b/src/documents/management/commands/document_consumer.py @@ -4,11 +4,16 @@ import os import time from django.conf import settings +from django.contrib.contenttypes.models import ContentType from django.core.management.base import BaseCommand, CommandError +from django.contrib.admin.models import LogEntry, ADDITION +from django.contrib.auth.models import User +from django.dispatch import receiver -from ...models import Log +from ...models import Document from ...consumer import Consumer, ConsumerError from ...mail import MailFetcher, MailFetcherError +from ...signals import document_consumption_finished class Command(BaseCommand): @@ -16,7 +21,7 @@ class Command(BaseCommand): On every iteration of an infinite loop, consume what we can from the consumption directory, and fetch any mail available. """ - + CONSUME_USER_ID = 1 LOOP_TIME = 10 # Seconds MAIL_DELTA = datetime.timedelta(minutes=10) @@ -68,3 +73,17 @@ class Command(BaseCommand): delta = self.mail_fetcher.last_checked + self.MAIL_DELTA if delta < datetime.datetime.now(): self.mail_fetcher.pull() + + @receiver(document_consumption_finished) + def notify_finished(sender, document=None, logging_group=None, **kwargs): + doctype = ContentType.objects.get_for_model(Document) + user = User.objects.get(**{'id': Command.CONSUME_USER_ID}) + + LogEntry.objects.log_action( + user_id=user.pk, + content_type_id=doctype.pk, + object_id=document.pk, + object_repr=repr(document), + action_flag=ADDITION, + change_message='Document %s consumption finished' % document.title + )