summaryrefslogtreecommitdiff
path: root/pgcommitfest/commitfest/util.py
diff options
context:
space:
mode:
authorMagnus Hagander2015-01-11 21:05:17 +0000
committerMagnus Hagander2015-01-11 21:05:17 +0000
commit604a7b0cd1bde04fdfff7412ffc7ab43f05cb452 (patch)
tree34165f887c6427435bcb422994797d0a3bba4108 /pgcommitfest/commitfest/util.py
parent56ce7ce097c65c5381465af9962d307c05779b6d (diff)
Properly log diffs in foreign keys
Instead of saying "topic changed to 2", say "topic changed to <actual topic>"
Diffstat (limited to 'pgcommitfest/commitfest/util.py')
-rw-r--r--pgcommitfest/commitfest/util.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/pgcommitfest/commitfest/util.py b/pgcommitfest/commitfest/util.py
index 862ee3d..7a38c7b 100644
--- a/pgcommitfest/commitfest/util.py
+++ b/pgcommitfest/commitfest/util.py
@@ -1,4 +1,5 @@
from django.forms.models import model_to_dict
+import django.db.models.fields.related
class DiffableModel(object):
@@ -16,6 +17,13 @@ class DiffableModel(object):
d1 = self.__initial
d2 = self._dict
diffs = dict([(k, (v, d2[k])) for k, v in d1.items() if v != d2[k]])
+ # Foreign key lookups
+ for k,v in diffs.items():
+ if type(self._meta.get_field_by_name(k)[0]) is django.db.models.fields.related.ForeignKey:
+ # If it's a foreign key, look up the name again on ourselves.
+ # Since we only care about the *new* value, it's easy enough.
+ diffs[k] = (v[0], getattr(self, k))
+ # Many to many lookups
if hasattr(self, 'map_manytomany_for_diff'):
for k,v in diffs.items():
if k in manytomanyfieldnames and self.map_manytomany_for_diff.has_key(k):