history compare for django-reversion
Project description
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.
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)
test
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
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.2.0: One simple CharField compare (name) and two many-to-many field compare (friends, hobbies):
changelog
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 |
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
Hashes for django-reversion-compare-0.2.0.beta.0509.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1007f609418def89a30ff355f04060dbc93c151292ab0f8741812f42fc928367 |
|
MD5 | 0df00c1891008a4fe5979ccc53ab632c |
|
BLAKE2b-256 | d05c2ab4d2bb6718346b1b6002f2088734773257823a80c11a4864a456830732 |