diff --git a/chamber/importers/__init__.py b/chamber/importers/__init__.py index 43333e3..6086230 100644 --- a/chamber/importers/__init__.py +++ b/chamber/importers/__init__.py @@ -131,7 +131,6 @@ def import_rows(self, reader, row_count=0): batch.append(self.model_class(**self.get_fields_dict(row))) created += self.create_batch(batch) self._post_batch_create(len(batch), row_count) - self._post_import_rows(created) return created diff --git a/chamber/models/__init__.py b/chamber/models/__init__.py index 68935a2..2ff38be 100644 --- a/chamber/models/__init__.py +++ b/chamber/models/__init__.py @@ -5,7 +5,7 @@ from distutils.version import StrictVersion import django -from django.db import models, transaction +from django.db import models, transaction, OperationalError from django.db.models.base import ModelBase from django.utils.translation import ugettext_lazy as _ from django.utils.functional import cached_property @@ -519,6 +519,16 @@ def change_and_save(self, update_only_changed_fields=False, **changed_fields): change_and_save(self, update_only_changed_fields=update_only_changed_fields, **changed_fields) return self + def get_locked_instance(self): + """ + Lock object and reload it from database. + :return: reloaded locked object from database + """ + if not self.pk: + raise OperationalError('Unsaved object cannot be locked') + + return self.__class__.objects.filter(pk=self.pk).select_for_update().get() + class Meta: abstract = True