diff --git a/src/documents/management/commands/document_consumer.py b/src/documents/management/commands/document_consumer.py index a03845bd3..b035eb22a 100644 --- a/src/documents/management/commands/document_consumer.py +++ b/src/documents/management/commands/document_consumer.py @@ -4,10 +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 Document from ...consumer import Consumer, ConsumerError from ...mail import MailFetcher, MailFetcherError +from ...signals import document_consumption_finished class Command(BaseCommand): @@ -16,6 +22,7 @@ class Command(BaseCommand): consumption directory, and fetch any mail available. """ + CONSUME_USER_ID = 1 LOOP_TIME = 10 # Seconds MAIL_DELTA = datetime.timedelta(minutes=10) @@ -67,3 +74,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(pk=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 + )