history compare for django-reversion
Project description
django-reversion-compare
django-reversion-compare is an extension to django-reversion that provides a history compare view to compare two versions of a model which is under reversion.
Comparing model versions is not a easy task. Maybe there are different view how this should looks like. This project will gives you a generic way to see whats has been changed.
Many parts are customizable by overwrite methods or subclassing, see above.
Requirements
Django 1.4 or newer
django-tools (only for running the unittests!)
installation
Just use:
pip install django-reversion-compare
Optional you can install google-diff-match-patch otherwise difflib would be used. The easiest way it to use the unofficial package diff-match-patch, e.g.:
pip install diff-match-patch
setup
Add reversion_compare to INSTALLED_APPS in your settings.py, e.g.:
INSTALLED_APPS = ( 'django...', ... 'reversion', # https://github.com/etianen/django-reversion 'reversion_compare', # https://github.com/jedie/django-reversion-compare ... )
usage
Inherit from CompareVersionAdmin instead of VersionAdmin to get the compare feature.
admin.py e.g.:
from django.contrib import admin from reversion_compare.admin import CompareVersionAdmin from my_app.models import ExampleModel class ExampleModelAdmin(CompareVersionAdmin): pass admin.site.register(ExampleModel, ExampleModelAdmin)
customize
It’s possible to change the look for every field or for a entire field type. You must only define a methods to your admin class with this name scheme:
"compare_%s" % field_name
"compare_%s" % field.get_internal_type()
If there exist no method with this name scheme, the fallback_compare() method would be used.
example for specify a compare method for a model field by name:
class YourAdmin(CompareVersionAdmin): def compare_foo_bar(self, obj_compare): """ compare the foo_bar model field """ return "%r <-> %r" % (obj_compare.value1, obj_compare.value2)
screenshots
Here some screenshots of django-reversion-compare:
How to select the versions to compare:
from v0.1.0: DateTimeField compare (last update), TextField compare (content) with small changes and a ForeignKey compare (child model instance was added):
from v0.1.0: Same as above, but the are more lines changed in TextField and the ForeignKey relation was removed:
Example screenshot from v0.3.0: a many-to-many field compare (friends, hobbies):
In the first line, the m2m object has been changed.
line 2: A m2m object was deleted
line 3: A m2m object was removed from this entry (but not deleted)
line 4: This m2m object has not changed
test
start local server
We ship a simple test project. To use this, do this steps:
$ cd path/to/django-reversion-compare/reversion_compare_test_project/ django-reversion-compare/reversion_compare_test_project$ ./reset.sh # creates test.db3 with syncdb and run createsuperuser django-reversion-compare/reversion_compare_test_project$ ./manage.py runserver --traceback
See, also: reversion_compare_test_project
run unittests
via setup.py:
$ cd path/to/django-reversion-compare django-reversion-compare$ ./setup.py test
via manage.py:
$ cd path/to/django-reversion-compare/reversion_compare_test_project/ django-reversion-compare/reversion_compare_test_project$ ./manage.py test reversion_compare
changelog
v0.3.3 - 11.06.2012:
Bugfix “ValueError: zero length field name in format” with Python 2.6 issues 5
v0.3.2 - 04.06.2012:
Bugfix for Python 2.6 in unified_diff(), see: AttributeError: ‘module’ object has no attribute ‘_format_range_unified’
v0.3.1 - 01.06.2012:
Bugfix: force unicode in html diff
Bugfix in unittests
v0.3.0 - 16.05.2012:
Enhanced handling of m2m changes with follow and non-follow relations.
v0.2.2 - 15.05.2012:
Compare many-to-many in the right way.
v0.2.1 - 10.05.2012:
Bugfix for models which has no m2m field: https://github.com/jedie/django-reversion-compare/commit/c8e042945a6e78e5540b6ae27666f9b0cfc94880
v0.2.0 - 09.05.2012:
many-to-many compare works, too.
v0.1.0 - 08.05.2012:
First release
v0.0.1 - 08.05.2012:
collect all compare stuff from old “diff” branch
see also: https://github.com/etianen/django-reversion/issues/147
Links
IRC |
|
Github |
|
Python Packages |
|
Travis CI |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file django-reversion-compare-0.3.3.0611.tar.gz
.
File metadata
- Download URL: django-reversion-compare-0.3.3.0611.tar.gz
- Upload date:
- Size: 28.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb138d97f08036641fc9eda2f17230bef579eb47cbcbd450978a5674e7e6cdc6 |
|
MD5 | 961c9356f4da7b860bd3ad629db3ccc3 |
|
BLAKE2b-256 | 23ce307b55356476ae8f2bc31d49ff3e78807757161340d0ee71d4315b74d330 |