Add transaction handling

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2019-05-15 01:35:50 -04:00
parent 290dc847c4
commit 7971b081a9
3 changed files with 24 additions and 22 deletions

View File

@@ -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)

View File

@@ -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(

View File

@@ -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=_(