fix model.save patched in FieldTracker (#353)

* fix model.save patched in FieldTracker

* add test for save call with args

* update changes
This commit is contained in:
Sergey Tikhonov 2018-12-10 18:35:26 +03:00 committed by Asif Saif Uddin
parent 25743141bc
commit 6b88c888d3
4 changed files with 9 additions and 2 deletions

View file

@ -10,6 +10,7 @@ master (unreleased)
always be set equal to created to make querying easier. Fixes GH-254
- Support `reversed` for all kinds of `Choices` objects, fixes GH-309
- Fix Model instance non picklable GH-330
- Fix patched `save` in FieldTracker
3.1.2 (2018.05.09)
------------------

View file

@ -236,8 +236,8 @@ class FieldTracker(object):
def patch_save(self, model):
original_save = model.save
def save(instance, **kwargs):
ret = original_save(instance, **kwargs)
def save(instance, *args, **kwargs):
ret = original_save(instance, *args, **kwargs)
update_fields = kwargs.get('update_fields')
if not update_fields and update_fields is not None: # () or []
fields = update_fields

View file

@ -10,6 +10,7 @@ DATABASES = {
"NAME": os.environ.get("DJANGO_DATABASE_NAME_POSTGRES", "modelutils"),
"USER": os.environ.get("DJANGO_DATABASE_USER_POSTGRES", 'postgres'),
"PASSWORD": os.environ.get("DJANGO_DATABASE_PASSWORD_POSTGRES", ""),
"HOST": os.environ.get("DJANGO_DATABASE_HOST_POSTGRES", ""),
},
}
SECRET_KEY = 'dummy'

View file

@ -85,6 +85,11 @@ class FieldTrackerTests(FieldTrackerTestCase, FieldTrackerCommonTests):
self.instance.mutable = [1, 2, 3]
self.assertHasChanged(name=True, number=True, mutable=True)
def test_save_with_args(self):
self.instance.number = 1
self.instance.save(False, False, None, None)
self.assertChanged()
def test_first_save(self):
self.assertHasChanged(name=True, number=False, mutable=False)
self.assertPrevious(name=None, number=None, mutable=None)