aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2016-06-07 15:41:59 +1200
committerPaul Eggleton <paul.eggleton@linux.intel.com>2016-06-12 11:33:08 +1200
commit22271029734eda0535d1a85f2732b341b7d22196 (patch)
tree73a42c6ce25288b4b8de1c628e7a52782dafcbbb
parent82c632ca2d9bc9a5892870759f0a78fa6758692c (diff)
downloadopenembedded-core-contrib-22271029734eda0535d1a85f2732b341b7d22196.tar.gz
Fix for changes in modern django-reversion
We have to upgrade django-reversion to 1.8 due to upgrading Django, but unfortunately in that same version the author has removed the type field on Version model, without a particularly good explanation as to why. This is really annoying as we were using it to provide a reasonable audit including for deletes. I suspect we'll need to move away from django-reversion and do our own thing in future, but for now at least allow the layer index to keep working. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
-rw-r--r--layerindex/views.py45
1 files changed, 23 insertions, 22 deletions
diff --git a/layerindex/views.py b/layerindex/views.py
index d9480c9855..1f42039bbf 100644
--- a/layerindex/views.py
+++ b/layerindex/views.py
@@ -630,29 +630,30 @@ def annotate_revision(sender, **kwargs):
for ver, inst in zip(versions, instances):
currentVersion = ver.field_dict
modelmeta = ver.content_type.model_class()._meta
- if ver.type == reversion.models.VERSION_DELETE:
- changelist.append("Deleted %s: %s" % (modelmeta.verbose_name.lower(), ver.object_repr))
+ #FIXME modern django-reversion dropped the type field (argh!)
+ #if ver.type == reversion.models.VERSION_DELETE:
+ # changelist.append("Deleted %s: %s" % (modelmeta.verbose_name.lower(), ver.object_repr))
+ #else:
+ pastver = reversion.get_for_object(inst)
+ if pastver:# and ver.type != reversion.models.VERSION_ADD:
+ pastVersion = pastver[0].field_dict
+ changes = set(currentVersion.items()) - set(pastVersion.items())
+ changedVars = [var[0] for var in changes]
+ fieldchanges = []
+ for field in changedVars:
+ if field not in ignorefields:
+ modelfield = modelmeta.get_field(field)
+ newvalue = currentVersion[field]
+ if modelfield.choices:
+ for v in modelfield.choices:
+ if v[0] == newvalue:
+ newvalue = v[1]
+ break
+ fieldchanges.append("%s to '%s'" % (modelfield.verbose_name.lower(), newvalue))
+ if fieldchanges:
+ changelist.append("Changed %s %s %s" % (modelmeta.verbose_name.lower(), ver.object_repr, ", ".join(fieldchanges)))
else:
- pastver = reversion.get_for_object(inst)
- if pastver and ver.type != reversion.models.VERSION_ADD:
- pastVersion = pastver[0].field_dict
- changes = set(currentVersion.items()) - set(pastVersion.items())
- changedVars = [var[0] for var in changes]
- fieldchanges = []
- for field in changedVars:
- if field not in ignorefields:
- modelfield = modelmeta.get_field(field)
- newvalue = currentVersion[field]
- if modelfield.choices:
- for v in modelfield.choices:
- if v[0] == newvalue:
- newvalue = v[1]
- break
- fieldchanges.append("%s to '%s'" % (modelfield.verbose_name.lower(), newvalue))
- if fieldchanges:
- changelist.append("Changed %s %s %s" % (modelmeta.verbose_name.lower(), ver.object_repr, ", ".join(fieldchanges)))
- else:
- changelist.append("Added %s: %s" % (modelmeta.verbose_name.lower(), ver.object_repr))
+ changelist.append("Added %s: %s" % (modelmeta.verbose_name.lower(), ver.object_repr))
comment = '\n'.join(changelist)
if not comment:
comment = 'No changes'