Metadata-Version: 1.1
Name: django-reversion-compare
Version: 0.5.4
Summary: history compare for django-reversion
Home-page: https://github.com/jedie/django-reversion-compare/
Author: Jens Diemer
Author-email: django-reversion-compare@jensdiemer.de
License: UNKNOWN
Download-URL: http://pypi.python.org/pypi/django-reversion-compare/
Description: ========================
        django-reversion-compare
        ========================
        
        **django-reversion-compare** is an extension to `django-reversion <https://github.com/etianen/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.
        
        +--------------------------------------+--------------------------------------------------------------------+
        | |Coverage Status on coveralls.io|    | `coveralls.io/r/jedie/django-reversion-compare`_                   |
        +--------------------------------------+--------------------------------------------------------------------+
        | |Build Status on travis-ci.org|      | `travis-ci.org/jedie/django-reversion-compare`_                    |
        +--------------------------------------+--------------------------------------------------------------------+
        | |Requirements Status on requires.io| | `requires.io/github/jedie/django-reversion-compare/requirements/`_ |
        +--------------------------------------+--------------------------------------------------------------------+
        
        .. |Coverage Status on coveralls.io| image:: https://coveralls.io/repos/jedie/django-reversion-compare/badge.svg
        .. _coveralls.io/r/jedie/django-reversion-compare: https://coveralls.io/r/jedie/django-reversion-compare
        .. |Build Status on travis-ci.org| image:: https://travis-ci.org/jedie/django-reversion-compare.svg
        .. _travis-ci.org/jedie/django-reversion-compare: https://travis-ci.org/jedie/django-reversion-compare/
        .. |Requirements Status on requires.io| image:: https://requires.io/github/jedie/django-reversion-compare/requirements.svg
        .. _requires.io/github/jedie/django-reversion-compare/requirements/: https://requires.io/github/jedie/django-reversion-compare/requirements/
        
        ------------
        installation
        ------------
        
        Just use:
        
        ::
        
            pip install django-reversion-compare
        
        Optional you can install `google-diff-match-patch <https://code.google.com/p/google-diff-match-patch/>`_ otherwise difflib would be used.
        The easiest way it to use the unofficial package `diff-match-patch <http://pypi.python.org/pypi/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
                ...
            )
            
            # Add reversion models to admin interface:
            # ADD_REVERSION_ADMIN=True
        
        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)
        
        If you're using an existing third party app, then you can add patch django-reversion-compare into
        its admin class by using the **reversion_compare.helpers.patch_admin()** method. For example, to add
        version control to the built-in User model:
        
        ::
        
            from reversion_compare.helpers import patch_admin
            
            patch_admin(User)
        
        e.g.: Add django-cms Page model:
        
        ::
        
            from cms.models.pagemodel import Page
            from reversion_compare.helpers import patch_admin
            
            
            # Patch django-cms Page Model to add reversion-compare functionality:
            patch_admin(Page)
        
        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)
        
        and example using **patch_admin** with custom version admin class:
        
        ::
        
            patch_admin(User, AdminClass=YourAdmin)
        
        -----------
        screenshots
        -----------
        
        Here some screenshots of django-reversion-compare:
        
        ----
        
        How to select the versions to compare:
        
        |django-reversion-compare_v0_1_0-01.png|
        
        .. |django-reversion-compare_v0_1_0-01.png| image:: http://www.pylucid.org/static/pylucid.org/screenshots_PyLucid/django-reversion/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|
        
        .. |django-reversion-compare_v0_1_0-02.png| image:: http://www.pylucid.org/static/pylucid.org/screenshots_PyLucid/django-reversion/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|
        
        .. |django-reversion-compare_v0_1_0-03.png| image:: http://www.pylucid.org/static/pylucid.org/screenshots_PyLucid/django-reversion/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|
        
        .. |django-reversion-compare_v0_3_0-01.png| image:: http://www.pylucid.org/static/pylucid.org/screenshots_PyLucid/django-reversion/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
        
        ---------
        unittests
        ---------
        
        (Unittests need `django-tools <https://github.com/jedie/django-tools/>`_)
        
        run unittests
        =============
        
        via setup.py:
        
        ::
        
            $ cd path/to/django-reversion-compare
            django-reversion-compare$ ./setup.py test
        
        via runtests.py:
        
        ::
        
            $ cd path/to/django-reversion-compare
            django-reversion-compare$ ./runtests.py
        
        Helpfull for writing and debugging unittests is to run a local test server with the same data.
        e.g.:
        
        ::
        
            ~$ cd path/to/django-reversion-compare/
            /django-reversion-compare$ ./tests/manage.py run_testserver
        
        **migration** will be run and a superuser will be created. Username: **test** Password: **12345678**
        
        ---------------------
        Version compatibility
        ---------------------
        
        +-------------------+------------+
        | Reversion-Compare | Django     |
        +===================+============+
        | >=v0.5.2          | v1.7, v1.8 |
        +-------------------+------------+
        | >=v0.4            | v1.7       |
        +-------------------+------------+
        | <v0.4             | v1.4       |
        +-------------------+------------+
        
        These are the unittests variants. See also: `/.travis.yml <https://github.com/jedie/django-reversion-compare/blob/master/.travis.yml>`_
        Maybe other versions are compatible, too.
        
        ---------
        changelog
        ---------
        
        * `v0.5.4 - 22.07.2015 <https://github.com/jedie/django-reversion-compare/compare/v0.5.3...v0.5.4>`_:
        
            * One to one field custom related name fix `#42 <https://github.com/jedie/django-reversion-compare/pull/42>`_ (contributed by frwickst and aemdy)
        
        * `v0.5.3 - 13.07.2015 <https://github.com/jedie/django-reversion-compare/compare/v0.5.2...v0.5.3>`_:
        
            * Update admin.py to avoid RemovedInDjango19Warning (contributed by luzfcb)
        
        * `v0.5.2 - 14.04.2015 <https://github.com/jedie/django-reversion-compare/compare/v0.5.1...v0.5.2>`_:
        
            * contributed by Samuel Spencer:
        
                * Added Django 1.8 support: `pull #35 <https://github.com/jedie/django-reversion-compare/pull/35>`_
        
                * list of changes for reverse fields incorrectly includes a "deletion" for the item that was added in: `issues #34 <https://github.com/jedie/django-reversion-compare/issues/34>`_
        
        * `v0.5.1 - 28.02.2015 <https://github.com/jedie/django-reversion-compare/compare/v0.5.0...v0.5.1>`_:
        
            * activate previous/next links and add unitests for them
        
        * `v0.5.0 - 27.02.2015 <https://github.com/jedie/django-reversion-compare/compare/v0.4.0...v0.5.0>`_:
        
            * refactory unittests, test with Django v1.7 and Python 2.7 & 3.4
        
        * `v0.4.0 - 02.02.2015 <https://github.com/jedie/django-reversion-compare/compare/v0.3.5...v0.4.0>`_:
        
            * Updates for django 1.7 support
        
            * Add ``settings.ADD_REVERSION_ADMIN``
        
        * v0.3.5 - 03.01.2013:
        
            * Remove date from version string. `issues 9 <https://github.com/jedie/django-reversion-compare/issues/9>`_
        
        * v0.3.4 - 20.06.2012:
        
            * Use VersionAdmin.revision_manager rather than default_revision_manager, contributed by Mark Lavin - see: `pull request 7 <https://github.com/jedie/django-reversion-compare/pull/7>`_
        
            * Use logging for all debug prints, contributed by Bojan Mihelac - see: `pull request 8 <https://github.com/jedie/django-reversion-compare/pull/8>`_
        
        * v0.3.3 - 11.06.2012:
        
            * Bugfix "ValueError: zero length field name in format" with Python 2.6 `issues 5 <https://github.com/jedie/django-reversion-compare/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' <https://github.com/jedie/django-reversion-compare/issues/5>`_
        
        * 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 <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 <https://github.com/etianen/django-reversion/issues/147>`_
        
        -----
        Links
        -----
        
        +-----------------+----------------------------------------------------------+
        | IRC             | `#pylucid on freenode.net`_                              |
        +-----------------+----------------------------------------------------------+
        | Github          | `http://github.com/jedie/django-reversion-compare`_      |
        +-----------------+----------------------------------------------------------+
        | Python Packages | `http://pypi.python.org/pypi/django-reversion-compare/`_ |
        +-----------------+----------------------------------------------------------+
        
        .. _#pylucid on freenode.net: http://www.pylucid.org/permalink/304/irc-channel
        .. _http://github.com/jedie/django-reversion-compare: http://github.com/jedie/django-reversion-compare
        .. _http://pypi.python.org/pypi/django-reversion-compare/: http://pypi.python.org/pypi/django-reversion-compare/
        
        -------
        contact
        -------
        
        Come into the conversation, besides the github communication features:
        
        +---------+--------------------------------------------------------+
        | Forum   | `official 'django-reversion-compare' Forum`_           |
        +---------+--------------------------------------------------------+
        | IRC     | #pylucid on freenode.net (Yes, the PyLucid channel...) |
        +---------+--------------------------------------------------------+
        | webchat | `http://webchat.freenode.net/?channels=pylucid`_       |
        +---------+--------------------------------------------------------+
        
        .. _official 'django-reversion-compare' Forum: http://www.pylucid.org/en/forum/13/
        .. _http://webchat.freenode.net/?channels=pylucid: http://webchat.freenode.net/?channels=pylucid
        
        --------
        donation
        --------
        
        * `Flattr This! <https://flattr.com/submit/auto?uid=jedie&url=https%3A%2F%2Fgithub.com%2Fjedie%2Fdjango-reversion-compare%2F>`_
        
        * Send `Bitcoins <http://www.bitcoin.org/>`_ to `1823RZ5Md1Q2X5aSXRC5LRPcYdveCiVX6F <https://blockexplorer.com/address/1823RZ5Md1Q2X5aSXRC5LRPcYdveCiVX6F>`_
Keywords: django,django-reversion,reversion,diff,compare
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.4
Classifier: Framework :: Django
Classifier: Framework :: Django :: 1.7
Classifier: Framework :: Django :: 1.8
Classifier: Topic :: Database :: Front-Ends
Classifier: Topic :: Documentation
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
Classifier: Operating System :: OS Independent
