Skip to content

Commit c427a18

Browse files
author
Michael Shannon
committed
Update to support Django-Revision 2.0.4
1 parent 304bb18 commit c427a18

24 files changed

+338
-393
lines changed

.travis.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@ env:
1212
- DJANGO='1.8' REVERSION='1.9' EXTRA=''
1313
- DJANGO='1.8' REVERSION='1.10' EXTRA=''
1414
- DJANGO='1.9' REVERSION='1.10' EXTRA=''
15+
- DJANGO='1.9' REVERSION='2.0.4' EXTRA=''
1516
- DJANGO='1.8' REVERSION='1.9' EXTRA='diff-match-patch'
16-
- DJANGO='1.8' REVERSION='1.10' EXTRA='diff-match-patch'
17+
- DJANGO='1.8' REVERSION='1.10' EXTRA='diff-match-patch'
1718
- DJANGO='1.9' REVERSION='1.10' EXTRA='diff-match-patch'
19+
- DJANGO='1.9' REVERSION='2.0.4' EXTRA='diff-match-patch'
1820

1921
install:
2022
- pip install --upgrade pip

AUTHORS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ CONTRIBUTORS are and/or have been (alphabetic order):
3333
Github: <https://github.com/amureki>
3434
* Spencer, Samuel
3535
Github: <https://github.com/LegoStormtroopr>
36+
* Shannon, Michael
37+
Github: <https://github.com/mshannon1123>
3638
* C. Barrionuevo da Luz, Fabio
3739
Github: <https://github.com/luzfcb>
3840
* Wickström, Frank

reversion_compare/admin.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import reversion # django-reversion <= 1.9
3535

3636
from reversion.admin import VersionAdmin
37-
37+
from reversion_compare import reversion_api
3838
from reversion_compare.forms import SelectDiffForm
3939
from reversion_compare.mixins import CompareMixin, CompareMethodsMixin
4040

@@ -111,7 +111,7 @@ def _get_action_list(self, request, object_id, extra_context=None):
111111
args=(quote(version.object_id), version.id)),
112112
}
113113
for version
114-
in self._order_version_queryset(self.revision_manager.get_for_object_reference(
114+
in self._order_version_queryset(reversion_api.get_for_object_reference(
115115
self.model,
116116
object_id,
117117
).select_related("revision__user"))
@@ -168,7 +168,7 @@ def compare_view(self, request, object_id, extra_context=None):
168168

169169
object_id = unquote(object_id) # Underscores in primary key get quoted to "_5F"
170170
obj = get_object_or_404(self.model, pk=object_id)
171-
queryset = self.revision_manager.get_for_object(obj)
171+
queryset = reversion_api.get_for_object(obj)
172172
version1 = get_object_or_404(queryset, pk=version_id1)
173173
version2 = get_object_or_404(queryset, pk=version_id2)
174174

reversion_compare/compare.py

Lines changed: 125 additions & 156 deletions
Large diffs are not rendered by default.

reversion_compare/forms.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from django import forms
44

5+
56
class SelectDiffForm(forms.Form):
67
version_id1 = forms.IntegerField(min_value=1)
78
version_id2 = forms.IntegerField(min_value=1)

reversion_compare/helpers.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
:license: GNU GPL v3 or above, see LICENSE for more details.
1616
"""
1717

18-
1918
import difflib
2019
import logging
2120

@@ -38,7 +37,6 @@
3837
else:
3938
google_diff_match_patch = True
4039
dmp = diff_match_patch()
41-
#google_diff_match_patch = False # manually disable, for testing
4240

4341

4442
def highlight_diff(diff_text):
@@ -220,10 +218,9 @@ class PatchedModelAdmin(AdminClass, ModelAdmin):
220218
admin_site.register(model, PatchedModelAdmin)
221219

222220

223-
224221
if __name__ == "__main__":
225222
import doctest
226223
print(doctest.testmod(
227-
# verbose=True
228224
verbose=False
225+
# verbose=True
229226
))

reversion_compare/mixins.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,12 @@
1212
from django.template.loader import render_to_string
1313

1414
from reversion_compare.helpers import html_diff
15-
from reversion.revisions import default_revision_manager
16-
1715
from reversion_compare.compare import CompareObjects
1816

17+
1918
class CompareMixin(object, ):
2019
"""A mixin to add comparison capabilities to your views"""
21-
22-
revision_manager = default_revision_manager
20+
2321
# list/tuple of field names for the compare view. Set to None for all existing fields
2422
compare_fields = None
2523

@@ -45,8 +43,8 @@ def _get_compare(self, obj_compare):
4543
"""
4644

4745
def _get_compare_func(suffix):
48-
func_name = "compare_%s" % suffix
4946
# logger.debug("func_name: %s", func_name)
47+
func_name = "compare_%s" % suffix
5048
if hasattr(self, func_name):
5149
func = getattr(self, func_name)
5250
return func
@@ -102,7 +100,7 @@ def compare(self, obj, version1, version2):
102100
)
103101
if isinstance(f, models.ForeignKey) and f not in fields:
104102
self.reverse_fields.append(f.rel)
105-
#print(self.reverse_fields)
103+
106104
fields += self.reverse_fields
107105

108106
has_unfollowed_fields = False
@@ -121,8 +119,8 @@ def compare(self, obj, version1, version2):
121119
continue
122120

123121
is_reversed = field in self.reverse_fields
124-
obj_compare = CompareObjects(field, field_name, obj, version1, version2, self.revision_manager, is_reversed)
125-
#obj_compare.debug()
122+
obj_compare = CompareObjects(field, field_name, obj, version1, version2, is_reversed)
123+
# obj_compare.debug()
126124

127125
is_related = obj_compare.is_related
128126
follow = obj_compare.follow
@@ -171,9 +169,8 @@ def generic_add_remove(self, raw_value1, raw_value2, value1, value2):
171169

172170
def compare_ForeignKey(self, obj_compare):
173171
related1, related2 = obj_compare.get_related()
174-
obj_compare.debug()
172+
# obj_compare.debug()
175173
value1, value2 = str(related1), str(related2)
176-
# value1, value2 = repr(related1), repr(related2)
177174
return self.generic_add_remove(related1, related2, value1, value2)
178175

179176
def simple_compare_ManyToManyField(self, obj_compare):
@@ -215,15 +212,15 @@ def compare_FileField(self, obj_compare):
215212
return self.generic_add_remove(value1, value2, value1, value2)
216213

217214
def compare_DateTimeField(self, obj_compare):
218-
''' compare all model datetime field in ISO format '''
215+
""" compare all model datetime field in ISO format """
219216
context = {
220217
"date1": obj_compare.value1,
221218
"date2": obj_compare.value2,
222219
}
223220
return render_to_string("reversion-compare/compare_DateTimeField.html", context)
224221

225222
def compare_BooleanField(self, obj_compare):
226-
''' compare booleans as a complete field, rather than as a string '''
223+
""" compare booleans as a complete field, rather than as a string """
227224
context = {
228225
"bool1": obj_compare.value1,
229226
"bool2": obj_compare.value2,

reversion_compare/reversion_api.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,30 @@
1-
21
import reversion
3-
if reversion.__version__ > (1,10):
2+
from reversion.models import Revision, Version
3+
4+
if reversion.__version__ > (2, 0):
45
from reversion import revisions as reversion
56
from reversion.revisions import (
67
register, unregister, is_registered,
7-
get_for_object, get_registered_models, get_deleted,
8-
create_revision, set_comment
8+
get_registered_models,
9+
create_revision, set_comment, _get_options
910
)
11+
get_for_object_reference = Version.objects.get_for_object_reference
12+
get_for_object = Version.objects.get_for_object
13+
get_deleted = Version.objects.get_deleted
14+
elif reversion.__version__ > (1, 10):
15+
from reversion import revisions as reversion
16+
from reversion.revisions import (
17+
register, unregister, is_registered,
18+
get_for_object, get_for_object_reference, get_registered_models, get_deleted,
19+
create_revision, set_comment, default_revision_manager
20+
)
21+
_get_options = default_revision_manager.get_adapter
1022
else:
1123
# django-reversion <= 1.9
1224
from reversion import (
1325
register, unregister, is_registered,
14-
get_for_object, get_registered_models, get_deleted,
15-
create_revision, set_comment
26+
get_for_object, get_for_object_reference, get_registered_models, get_deleted,
27+
create_revision, set_comment, default_revision_manager
1628
)
29+
_get_options = default_revision_manager.get_adapter
1730

18-
19-
from reversion.models import Revision, Version, has_int_pk

reversion_compare/views.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22
from django.shortcuts import get_object_or_404
33
from django.views.generic.detail import DetailView
44

5+
from reversion_compare import reversion_api
56
from reversion_compare.forms import SelectDiffForm
67
from reversion_compare.mixins import CompareMixin, CompareMethodsMixin
78

9+
810
class HistoryCompareDetailView(CompareMixin, CompareMethodsMixin, DetailView):
911
"""This class can be used to add a non-admin view for comparing your object's versions.
1012
@@ -49,14 +51,13 @@ class SimpleModelHistoryCompareView(HistoryCompareDetailView):
4951
"""
5052

5153
def _get_action_list(self, ):
52-
opts = self.model._meta
5354
action_list = [
5455
{
5556
"version": version,
5657
"revision": version.revision,
5758
}
5859
for version
59-
in self._order_version_queryset(self.revision_manager.get_for_object(
60+
in self._order_version_queryset(reversion_api.get_for_object(
6061
self.get_object(),
6162
).select_related("revision__user"))
6263
]
@@ -93,7 +94,7 @@ def get_context_data(self, **kwargs):
9394
version_id1, version_id2 = version_id2, version_id1
9495

9596
obj = self.get_object()
96-
queryset = self.revision_manager.get_for_object(obj)
97+
queryset = reversion_api.get_for_object(obj)
9798
version1 = get_object_or_404(queryset, pk=version_id1)
9899
version2 = get_object_or_404(queryset, pk=version_id2)
99100

@@ -120,7 +121,6 @@ def get_context_data(self, **kwargs):
120121
)
121122
context.update({'prev_url': prev_url})
122123

123-
124124
# Compile the context.
125125
context.update({
126126
"action_list": action_list,

setup.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -182,10 +182,6 @@ def rmtree(path):
182182

183183
sys.exit(0)
184184

185-
186-
187-
188-
189185
def get_authors():
190186
try:
191187
with open(os.path.join(PACKAGE_ROOT, "AUTHORS"), "r") as f:
@@ -217,12 +213,9 @@ def get_authors():
217213
],
218214
zip_safe=False,
219215
classifiers=[
220-
# "Development Status :: 4 - Beta",
221216
"Development Status :: 5 - Production/Stable",
222217
"Environment :: Web Environment",
223218
"Intended Audience :: Developers",
224-
# "Intended Audience :: Education",
225-
# "Intended Audience :: End Users/Desktop",
226219
"License :: OSI Approved :: GNU General Public License (GPL)",
227220
"Programming Language :: Python",
228221
"Programming Language :: Python :: 2.7",

0 commit comments

Comments
 (0)