Add transaction handling in more places
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -3,7 +3,7 @@ from __future__ import unicode_literals
|
||||
import shlex
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db import models
|
||||
from django.db import models, transaction
|
||||
from django.template import Context, Template
|
||||
from django.urls import reverse
|
||||
from django.utils.encoding import force_text, python_2_unicode_compatible
|
||||
@@ -97,7 +97,11 @@ class MetadataType(models.Model):
|
||||
return self.label
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('metadata:setup_metadata_type_edit', args=(self.pk,))
|
||||
return reverse(
|
||||
viewname='metadata:setup_metadata_type_edit', kwargs={
|
||||
'pk': self.pk
|
||||
}
|
||||
)
|
||||
|
||||
if PY2:
|
||||
# Python 2 non unicode version
|
||||
@@ -141,21 +145,22 @@ class MetadataType(models.Model):
|
||||
return (self.name,)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
user = kwargs.pop('_user', None)
|
||||
_user = kwargs.pop('_user', None)
|
||||
created = not self.pk
|
||||
|
||||
result = super(MetadataType, self).save(*args, **kwargs)
|
||||
with transaction.atomic():
|
||||
result = super(MetadataType, self).save(*args, **kwargs)
|
||||
|
||||
if created:
|
||||
event_metadata_type_created.commit(
|
||||
actor=user, target=self
|
||||
)
|
||||
else:
|
||||
event_metadata_type_edited.commit(
|
||||
actor=user, target=self
|
||||
)
|
||||
if created:
|
||||
event_metadata_type_created.commit(
|
||||
actor=_user, target=self
|
||||
)
|
||||
else:
|
||||
event_metadata_type_edited.commit(
|
||||
actor=_user, target=self
|
||||
)
|
||||
|
||||
return result
|
||||
return result
|
||||
|
||||
def validate_value(self, document_type, value):
|
||||
# Check default
|
||||
@@ -234,13 +239,15 @@ class DocumentMetadata(models.Model):
|
||||
_('Metadata type is required for this document type.')
|
||||
)
|
||||
|
||||
user = kwargs.pop('_user', None)
|
||||
result = super(DocumentMetadata, self).delete(*args, **kwargs)
|
||||
_user = kwargs.pop('_user', None)
|
||||
with transaction.atomic():
|
||||
result = super(DocumentMetadata, self).delete(*args, **kwargs)
|
||||
|
||||
event_document_metadata_removed.commit(
|
||||
action_object=self.metadata_type, actor=user, target=self.document,
|
||||
)
|
||||
return result
|
||||
event_document_metadata_removed.commit(
|
||||
action_object=self.metadata_type, actor=_user,
|
||||
target=self.document,
|
||||
)
|
||||
return result
|
||||
|
||||
def natural_key(self):
|
||||
return self.document.natural_key() + self.metadata_type.natural_key()
|
||||
@@ -262,23 +269,24 @@ class DocumentMetadata(models.Model):
|
||||
_('Metadata type is not valid for this document type.')
|
||||
)
|
||||
|
||||
user = kwargs.pop('_user', None)
|
||||
_user = kwargs.pop('_user', None)
|
||||
created = not self.pk
|
||||
|
||||
result = super(DocumentMetadata, self).save(*args, **kwargs)
|
||||
with transaction.atomic():
|
||||
result = super(DocumentMetadata, self).save(*args, **kwargs)
|
||||
|
||||
if created:
|
||||
event_document_metadata_added.commit(
|
||||
action_object=self.metadata_type, actor=user,
|
||||
target=self.document,
|
||||
)
|
||||
else:
|
||||
event_document_metadata_edited.commit(
|
||||
action_object=self.metadata_type, actor=user,
|
||||
target=self.document,
|
||||
)
|
||||
if created:
|
||||
event_document_metadata_added.commit(
|
||||
action_object=self.metadata_type, actor=_user,
|
||||
target=self.document,
|
||||
)
|
||||
else:
|
||||
event_document_metadata_edited.commit(
|
||||
action_object=self.metadata_type, actor=_user,
|
||||
target=self.document,
|
||||
)
|
||||
|
||||
return result
|
||||
return result
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
@@ -309,23 +317,27 @@ class DocumentTypeMetadataType(models.Model):
|
||||
return force_text(self.metadata_type)
|
||||
|
||||
def delete(self, *args, **kwargs):
|
||||
user = kwargs.pop('_user', None)
|
||||
_user = kwargs.pop('_user', None)
|
||||
|
||||
result = super(DocumentTypeMetadataType, self).delete(*args, **kwargs)
|
||||
with transaction.atomic():
|
||||
result = super(DocumentTypeMetadataType, self).delete(*args, **kwargs)
|
||||
|
||||
event_metadata_type_relationship.commit(
|
||||
action_object=self.document_type, actor=user, target=self.metadata_type,
|
||||
)
|
||||
event_metadata_type_relationship.commit(
|
||||
action_object=self.document_type, actor=_user,
|
||||
target=self.metadata_type,
|
||||
)
|
||||
|
||||
return result
|
||||
return result
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
user = kwargs.pop('_user', None)
|
||||
_user = kwargs.pop('_user', None)
|
||||
|
||||
result = super(DocumentTypeMetadataType, self).save(*args, **kwargs)
|
||||
with transaction.atomic():
|
||||
result = super(DocumentTypeMetadataType, self).save(*args, **kwargs)
|
||||
|
||||
event_metadata_type_relationship.commit(
|
||||
action_object=self.document_type, actor=user, target=self.metadata_type,
|
||||
)
|
||||
event_metadata_type_relationship.commit(
|
||||
action_object=self.document_type, actor=_user,
|
||||
target=self.metadata_type,
|
||||
)
|
||||
|
||||
return result
|
||||
return result
|
||||
|
||||
Reference in New Issue
Block a user