From 345a0dfe5a1d938c1c06e29889f2fdf0a294af00 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 17 Nov 2011 16:19:25 +0100 Subject: [PATCH] [view] when forwarding mark original document as read for any user which has forwarding power We get the list of users with forwarding power and lookup all their mailboxes for the original document, then mark it read. --- docbow_project/docbow/views.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docbow_project/docbow/views.py b/docbow_project/docbow/views.py index 1ce9db4..69e1703 100644 --- a/docbow_project/docbow/views.py +++ b/docbow_project/docbow/views.py @@ -282,6 +282,25 @@ def can_forward(request): bool(request.user.mailing_lists.filter(name__in=('Greffe',))) or \ bool(request.user.groups.filter(name__in=('Administrateurs',))) +def user_who_can_forward_filter(): + '''Return the list of users who have access to the forwarding feature''' + return User.objects.filter(Q(username='Greffe') | + Q(mailing_lists__name='Greffe') | + Q(groups__name='Administrateurs')) + +def mark_document_read(document, logger=None): + ''' + Mark all mailboxes object for this document of user who can forward as + read. + ''' + users = user_who_can_forward_filter() + mboxes = Mailbox.objects.filter(owner__in=users, document=document) + if not logger: + logger = logging.getLogger('docbow') + logger.info(_('Marking mailboxes %s as read because document %s was forwarded'), + '. '.join([str(mbox.id) for mbox in mboxes]), document.id) + mboxes.update(seen=True) + def form_to_user_and_list(form): to_user = [] to_list = [] @@ -321,6 +340,7 @@ def forward_document(document, sender, to_user, to_list, logger, base_url, is_automatic = 'automatically' if automatic else '' logger.info('document %s forwarded %s as document %s, timestamp %s' % (document, is_automatic, new_document, tst)) + mark_document_read(document, logger=logger) return notification_count @login_required