Add transaction handling
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -49,15 +49,27 @@ class Cabinet(MPTTModel):
|
||||
def __str__(self):
|
||||
return self.get_full_path()
|
||||
|
||||
def add_document(self, document, user=None):
|
||||
def document_add(self, document, _user=None):
|
||||
"""
|
||||
Add a document to a container. This can be done without using this
|
||||
method but this method provides the event commit already coded.
|
||||
"""
|
||||
self.documents.add(document)
|
||||
event_cabinet_add_document.commit(
|
||||
action_object=self, actor=user, target=document
|
||||
)
|
||||
with transaction.atomic():
|
||||
self.documents.add(document)
|
||||
event_cabinet_add_document.commit(
|
||||
action_object=self, actor=_user, target=document
|
||||
)
|
||||
|
||||
def document_remove(self, document, _user=None):
|
||||
"""
|
||||
Remove a document from a cabinet. This method provides the
|
||||
corresponding event commit.
|
||||
"""
|
||||
with transaction.atomic():
|
||||
self.documents.remove(document)
|
||||
event_cabinet_remove_document.commit(
|
||||
action_object=self, actor=_user, target=document
|
||||
)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse(viewname='cabinets:cabinet_view', kwargs={'pk': self.pk})
|
||||
@@ -90,16 +102,6 @@ class Cabinet(MPTTModel):
|
||||
|
||||
return ' / '.join(result)
|
||||
|
||||
def remove_document(self, document, user=None):
|
||||
"""
|
||||
Remove a document from a cabinet. This method provides the
|
||||
corresponding event commit.
|
||||
"""
|
||||
self.documents.remove(document)
|
||||
event_cabinet_remove_document.commit(
|
||||
action_object=self, actor=user, target=document
|
||||
)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
_user = kwargs.pop('_user', None)
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ class CabinetDocumentsEventsTestCase(
|
||||
self._create_test_cabinet()
|
||||
|
||||
Action.objects.all().delete()
|
||||
self.test_cabinet.add_document(document=self.test_document)
|
||||
self.test_cabinet.document_add(document=self.test_document)
|
||||
|
||||
self.assertEqual(Action.objects.last().target, self.test_document)
|
||||
self.assertEqual(
|
||||
@@ -93,9 +93,9 @@ class CabinetDocumentsEventsTestCase(
|
||||
def test_document_cabinet_remove_event(self):
|
||||
self._create_test_cabinet()
|
||||
|
||||
self.test_cabinet.add_document(document=self.test_document)
|
||||
self.test_cabinet.document_add(document=self.test_document)
|
||||
Action.objects.all().delete()
|
||||
self.test_cabinet.remove_document(document=self.test_document)
|
||||
self.test_cabinet.document_remove(document=self.test_document)
|
||||
|
||||
self.assertEqual(Action.objects.first().target, self.test_document)
|
||||
self.assertEqual(
|
||||
|
||||
@@ -288,8 +288,8 @@ class DocumentAddToCabinetView(MultipleObjectFormActionView):
|
||||
}, request=self.request
|
||||
)
|
||||
else:
|
||||
cabinet.add_document(
|
||||
document=instance, user=self.request.user
|
||||
cabinet.document_add(
|
||||
document=instance, _user=self.request.user
|
||||
)
|
||||
messages.success(
|
||||
message=_(
|
||||
@@ -377,8 +377,8 @@ class DocumentRemoveFromCabinetView(MultipleObjectFormActionView):
|
||||
}, request=self.request
|
||||
)
|
||||
else:
|
||||
cabinet.remove_document(
|
||||
document=instance, user=self.request.user
|
||||
cabinet.document_remove(
|
||||
document=instance, _user=self.request.user
|
||||
)
|
||||
messages.success(
|
||||
message=_(
|
||||
|
||||
Reference in New Issue
Block a user