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