Skip to main content

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:

django-reversion-compare_v0_1_0-01.png


from v0.1.0: DateTimeField compare (last update), TextField compare (content) with small changes and a ForeignKey compare (child model instance was added):

django-reversion-compare_v0_1_0-02.png


from v0.1.0: Same as above, but the are more lines changed in TextField and the ForeignKey relation was removed:

django-reversion-compare_v0_1_0-03.png


Example screenshot from v0.2.0: One simple CharField compare (name) and two many-to-many field compare (friends, hobbies):

django-reversion-compare_v0_2_0pre-04.png

changelog

Project details


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.2.1.beta.0510.tar.gz.

File metadata

File hashes

Hashes for django-reversion-compare-0.2.1.beta.0510.tar.gz
Algorithm Hash digest
SHA256 8f57279ca7cf0d9fa61a06698416bf10e66d53a60b4b6b17f468488ad1d6c6db
MD5 177edcecd8d626efffdbcebe1c3bfd86
BLAKE2b-256 a8e16df46293de868491e5dca508c2d158356abe730182ae2eea4f8234afc96d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page