Skip to main content

Build Status on travis-ci.org

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:

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.3.0: a many-to-many field compare (friends, hobbies):

django-reversion-compare_v0_3_0-01.png

  • 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

Metadata

Release files for django-reversion-compare 0.3.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-reversion-compare 0.3.5
File Size Uploaded
django-reversion-compare-0.3.5.tar.gz 29.3 kB Details

Release files / django-reversion-compare-0.3.5.tar.gz

Download URL django-reversion-compare-0.3.5.tar.gz
Size 29.3 kB
Tags Source
SHA-256 checksum
How to use checksums
b03b2d4efabd90856caa287524990ddbc2e1505549e9cc0ff252d4580327a804
BLAKE2b-256 checksum
How to use checksums
da3f56e437f355f7c730c545b7170d5fb002932f9ece2d1a1efb5d29209df2bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

0.19.1

2 release files

0.19.0

2 release files

0.18.1

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.15.0

2 release files

0.14.1

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.2

2 release files

0.12.1

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.1

2 release files

0.9.0

3 release files

0.8.7

3 release files

0.8.6

3 release files

0.8.5

3 release files

0.8.4

3 release files

0.8.3

3 release files

0.8.2

3 release files

0.8.1

3 release files

0.8.0

3 release files

0.7.5

3 release files

0.7.4

3 release files

0.7.3

3 release files

0.7.2

3 release files

0.7.1

3 release files

0.7.0

3 release files

0.6.3

1 release file

0.6.2

3 release files

0.6.1

3 release files

0.6.0

3 release files

0.5.6

3 release files

0.5.5

3 release files

0.5.4

3 release files

0.5.3

3 release files

0.5.2

2 release files

0.5.1

1 release file

0.5.0

1 release file

0.4.0

1 release file

This release

0.3.5 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page