diff --git a/mayan/apps/tags/workflow_actions.py b/mayan/apps/tags/workflow_actions.py index 12018f98cd..15cacee827 100644 --- a/mayan/apps/tags/workflow_actions.py +++ b/mayan/apps/tags/workflow_actions.py @@ -2,6 +2,7 @@ from __future__ import absolute_import, unicode_literals import logging +from django.db import transaction from django.utils.translation import ugettext_lazy as _ from mayan.apps.acls.models import AccessControlList @@ -55,8 +56,13 @@ class AttachTagAction(WorkflowAction): return Tag.objects.filter(pk__in=self.form_data.get('tags', ())) def execute(self, context): - for tag in self.get_tags(): - tag.attach_to(document=context['document']) + with transaction.atomic(): + for tag in self.get_tags(): + document = context['document'] + queryset = document._meta.model._meta.default_manager.filter( + pk=document.pk + ) + tag.documents_attach(queryset=queryset) class RemoveTagAction(AttachTagAction): @@ -74,4 +80,8 @@ class RemoveTagAction(AttachTagAction): def execute(self, context): for tag in self.get_tags(): - tag.remove_from(document=context['document']) + document = context['document'] + queryset = document._meta.model._meta.default_manager.filter( + pk=document.pk + ) + tag.documents_attach(queryset=queryset)