Fix test failures from merge.

This commit is contained in:
Lucas Wiman 2018-06-21 13:07:13 -07:00
parent 98a1366608
commit 5d410e9ccc
2 changed files with 11 additions and 8 deletions

View file

@ -84,6 +84,10 @@ class FieldInstanceTracker(object):
if django.VERSION < (1, 10):
self.init_deferred_fields()
@property
def deferred_fields(self):
return self.instance._deferred_fields if django.VERSION < (1, 10) else self.instance.get_deferred_fields()
def get_field_value(self, field):
return getattr(self.instance, self.field_map[field])
@ -102,7 +106,7 @@ class FieldInstanceTracker(object):
def current(self, fields=None):
"""Returns dict of current values for all tracked fields"""
if fields is None:
deferred_fields = self.instance._deferred_fields if django.VERSION < (1, 10) else self.instance.get_deferred_fields()
deferred_fields = self.deferred_fields
if deferred_fields:
fields = [
field for field in self.fields
@ -117,7 +121,7 @@ class FieldInstanceTracker(object):
"""Returns ``True`` if field has changed from currently saved value"""
if field in self.fields:
# deferred fields haven't changed
if field in self.instance._deferred_fields and field not in self.instance.__dict__:
if field in self.deferred_fields and field not in self.instance.__dict__:
return False
return self.previous(field) != self.get_field_value(field)
else:
@ -127,7 +131,7 @@ class FieldInstanceTracker(object):
"""Returns currently saved value of given field"""
# handle deferred fields that have not yet been loaded from the database
if self.instance.pk and field in self.instance._deferred_fields and field not in self.saved_data:
if self.instance.pk and field in self.deferred_fields and field not in self.saved_data:
# if the field has not been assigned locally, simply fetch and un-defer the value
if field not in self.instance.__dict__:

View file

@ -189,7 +189,6 @@ class FieldTrackerTests(FieldTrackerTestCase, FieldTrackerCommonTests):
# has_changed() returns False for deferred fields, without un-deferring them.
# Use an if because ModelTracked doesn't support has_changed() in this case.
if self.tracked_class == Tracked:
self.assertEqual(item.tracker.previous('number'), None)
if django.VERSION >= (1, 10):
self.assertTrue('number' in item.get_deferred_fields())
else:
@ -197,7 +196,10 @@ class FieldTrackerTests(FieldTrackerTestCase, FieldTrackerCommonTests):
# previous() un-defers field and returns value
self.assertEqual(item.tracker.previous('number'), 1)
self.assertTrue('number' not in item._deferred_fields)
if django.VERSION >= (1, 10):
self.assertNotIn('number', item.get_deferred_fields())
else:
self.assertNotIn('number', item._deferred_fields)
# examining a deferred field un-defers it
item = self.tracked_class.objects.only('name').first()
@ -224,9 +226,6 @@ class FieldTrackerTests(FieldTrackerTestCase, FieldTrackerCommonTests):
item = self.tracked_class.objects.only('name').first()
item.number = 2
# _deferred_fields is not updated by assignment
self.assertTrue('number' in item._deferred_fields)
# previous() fetches correct value from database after deferred field is assigned
self.assertEqual(item.tracker.previous('number'), 1)