mirror of
https://github.com/Hopiu/django-model-utils.git
synced 2026-04-26 05:44:42 +00:00
Fix test failures from merge.
This commit is contained in:
parent
98a1366608
commit
5d410e9ccc
2 changed files with 11 additions and 8 deletions
|
|
@ -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__:
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue