Hello community,
here is the log from the commit of package python-django-reversion for
openSUSE:Factory checked in at 2018-10-31 13:15:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-reversion (Old)
and /work/SRC/openSUSE:Factory/.python-django-reversion.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-django-reversion"
Wed Oct 31 13:15:25 2018 rev:4 rq:645378 version:3.0.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-django-reversion/python-django-reversion.changes
2018-07-21 10:25:26.614954237 +0200
+++
/work/SRC/openSUSE:Factory/.python-django-reversion.new/python-django-reversion.changes
2018-10-31 13:20:00.463137946 +0100
@@ -1,0 +2,9 @@
+Mon Oct 29 22:26:50 UTC 2018 - Martin Herkt <[email protected]>
+
+- Update to version 3.0.1:
+ * Added squashed migrations back in to allow older installations
+ to upgrade
+ * Fixed TypeError exception when accessing m2m_data attribute
+ from a field that points to Django’s User model
+
+-------------------------------------------------------------------
Old:
----
django-reversion-3.0.0.tar.gz
New:
----
django-reversion-3.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-django-reversion.spec ++++++
--- /var/tmp/diff_new_pack.sxbcRl/_old 2018-10-31 13:20:02.987135572 +0100
+++ /var/tmp/diff_new_pack.sxbcRl/_new 2018-10-31 13:20:03.003135558 +0100
@@ -12,13 +12,13 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-django-reversion
-Version: 3.0.0
+Version: 3.0.1
Release: 0
Summary: A Django extension that provides version control for model
instances
License: BSD-3-Clause
++++++ django-reversion-3.0.0.tar.gz -> django-reversion-3.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-reversion-3.0.0/CHANGELOG.rst
new/django-reversion-3.0.1/CHANGELOG.rst
--- old/django-reversion-3.0.0/CHANGELOG.rst 2018-07-19 13:22:54.000000000
+0200
+++ new/django-reversion-3.0.1/CHANGELOG.rst 2018-10-23 16:29:55.000000000
+0200
@@ -3,6 +3,14 @@
django-reversion changelog
==========================
+3.0.1 - 23/10/2018
+------------------
+
+- Added squashed migrations back in to allow older installations to upgrade
(Christopher Thorne).
+- Fixed TypeError exception when accessing m2m_data attribute from a field
that points to Django’s User model
+ (@denisroldan).
+
+
3.0.0 - 19/07/2018
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-reversion-3.0.0/PKG-INFO
new/django-reversion-3.0.1/PKG-INFO
--- old/django-reversion-3.0.0/PKG-INFO 2018-07-19 13:23:52.000000000 +0200
+++ new/django-reversion-3.0.1/PKG-INFO 2018-10-23 16:31:16.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: django-reversion
-Version: 3.0.0
+Version: 3.0.1
Summary: An extension to the Django web framework that provides version
control for model instances.
Home-page: http://github.com/etianen/django-reversion
Author: Dave Hall
@@ -17,4 +17,5 @@
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Framework :: Django
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django-reversion-3.0.0/django_reversion.egg-info/PKG-INFO
new/django-reversion-3.0.1/django_reversion.egg-info/PKG-INFO
--- old/django-reversion-3.0.0/django_reversion.egg-info/PKG-INFO
2018-07-19 13:23:52.000000000 +0200
+++ new/django-reversion-3.0.1/django_reversion.egg-info/PKG-INFO
2018-10-23 16:31:16.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: django-reversion
-Version: 3.0.0
+Version: 3.0.1
Summary: An extension to the Django web framework that provides version
control for model instances.
Home-page: http://github.com/etianen/django-reversion
Author: Dave Hall
@@ -17,4 +17,5 @@
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Framework :: Django
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django-reversion-3.0.0/django_reversion.egg-info/SOURCES.txt
new/django-reversion-3.0.1/django_reversion.egg-info/SOURCES.txt
--- old/django-reversion-3.0.0/django_reversion.egg-info/SOURCES.txt
2018-07-19 13:23:52.000000000 +0200
+++ new/django-reversion-3.0.1/django_reversion.egg-info/SOURCES.txt
2018-10-23 16:31:16.000000000 +0200
@@ -35,7 +35,6 @@
docs/_include/throws-revision-error.rst
reversion/__init__.py
reversion/admin.py
-reversion/compat.py
reversion/errors.py
reversion/middleware.py
reversion/models.py
@@ -84,7 +83,11 @@
reversion/management/commands/__init__.py
reversion/management/commands/createinitialrevisions.py
reversion/management/commands/deleterevisions.py
+reversion/migrations/0001_initial.py
reversion/migrations/0001_squashed_0004_auto_20160611_1202.py
+reversion/migrations/0002_auto_20141216_1509.py
+reversion/migrations/0003_auto_20160601_1600.py
+reversion/migrations/0004_auto_20160611_1202.py
reversion/migrations/__init__.py
reversion/templates/reversion/change_list.html
reversion/templates/reversion/object_history.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django-reversion-3.0.0/django_reversion.egg-info/requires.txt
new/django-reversion-3.0.1/django_reversion.egg-info/requires.txt
--- old/django-reversion-3.0.0/django_reversion.egg-info/requires.txt
2018-07-19 13:23:52.000000000 +0200
+++ new/django-reversion-3.0.1/django_reversion.egg-info/requires.txt
2018-10-23 16:31:16.000000000 +0200
@@ -1 +1 @@
-django>=1.8
+django>=1.11
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-reversion-3.0.0/docs/django-versions.rst
new/django-reversion-3.0.1/docs/django-versions.rst
--- old/django-reversion-3.0.0/docs/django-versions.rst 2018-07-19
13:22:54.000000000 +0200
+++ new/django-reversion-3.0.1/docs/django-versions.rst 2018-10-23
16:29:55.000000000 +0200
@@ -10,9 +10,8 @@
============== =================
Django version Reversion release
============== =================
-1.8 - current 2.x
-1.7 1.10.x
-1.6 1.8.x
+1.11+ 3.x
+1.8 2.x
============== =================
.. Warning::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-reversion-3.0.0/reversion/__init__.py
new/django-reversion-3.0.1/reversion/__init__.py
--- old/django-reversion-3.0.0/reversion/__init__.py 2018-07-19
13:22:54.000000000 +0200
+++ new/django-reversion-3.0.1/reversion/__init__.py 2018-10-23
16:29:55.000000000 +0200
@@ -36,4 +36,4 @@
get_registered_models,
)
-__version__ = VERSION = (3, 0, 0)
+__version__ = VERSION = (3, 0, 1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-reversion-3.0.0/reversion/admin.py
new/django-reversion-3.0.1/reversion/admin.py
--- old/django-reversion-3.0.0/reversion/admin.py 2018-07-19
13:22:54.000000000 +0200
+++ new/django-reversion-3.0.1/reversion/admin.py 2018-10-23
16:29:55.000000000 +0200
@@ -6,36 +6,22 @@
from django.contrib import admin, messages
from django.contrib.admin import options
from django.contrib.admin.utils import unquote, quote
-try:
- from django.contrib.contenttypes.admin import GenericInlineModelAdmin
- from django.contrib.contenttypes.fields import GenericRelation
-except ImportError: # Django < 1.9 pragma: no cover
- from django.contrib.contenttypes.generic import GenericInlineModelAdmin,
GenericRelation
-try:
- from django.urls import reverse
-except ImportError: # Django < 1.10 pragma: no cover
- from django.core.urlresolvers import reverse
+from django.contrib.contenttypes.admin import GenericInlineModelAdmin
+from django.contrib.contenttypes.fields import GenericRelation
from django.core.exceptions import PermissionDenied, ImproperlyConfigured
from django.shortcuts import get_object_or_404, render, redirect
+from django.urls import reverse
from django.utils.text import capfirst
from django.utils.timezone import template_localtime
from django.utils.translation import ugettext as _
from django.utils.encoding import force_text
from django.utils.formats import localize
-from reversion.compat import remote_field, remote_model
from reversion.errors import RevertError
from reversion.models import Version
from reversion.revisions import is_active, register, is_registered,
set_comment, create_revision, set_user
from reversion.views import _RollBackRevisionView
-def private_fields(meta):
- try:
- return meta.private_fields
- except AttributeError: # Django < 1.10 pragma: no cover
- return meta.virtual_fields
-
-
class VersionAdmin(admin.ModelAdmin):
object_history_template = "reversion/object_history.html"
@@ -88,10 +74,7 @@
set_comment(json.dumps(change_message))
else:
set_comment(change_message)
- try:
- super(VersionAdmin, self).log_addition(request, object,
change_message)
- except TypeError: # Django < 1.9 pragma: no cover
- super(VersionAdmin, self).log_addition(request, object)
+ super(VersionAdmin, self).log_addition(request, object, change_message)
def log_change(self, request, object, message):
if is_active():
@@ -118,10 +101,10 @@
inline_model = inline.model
ct_field = inline.ct_field
fk_name = inline.ct_fk_field
- for field in private_fields(self.model._meta):
+ for field in self.model._meta.private_fields:
if (
isinstance(field, GenericRelation) and
- remote_model(field) == inline_model and
+ field.remote_field.model == inline_model and
field.object_id_field_name == fk_name and
field.content_type_field_name == ct_field
):
@@ -134,13 +117,13 @@
for field in inline_model._meta.get_fields():
if (
isinstance(field, (models.ForeignKey,
models.OneToOneField)) and
- issubclass(self.model, remote_model(field))
+ issubclass(self.model, field.remote_field.model)
):
fk_name = field.name
break
- if fk_name and not
remote_field(inline_model._meta.get_field(fk_name)).is_hidden():
+ if fk_name and not
inline_model._meta.get_field(fk_name).remote_field.is_hidden():
field = inline_model._meta.get_field(fk_name)
- accessor = remote_field(field).get_accessor_name()
+ accessor = field.remote_field.get_accessor_name()
follow_field = accessor
return inline_model, follow_field
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-reversion-3.0.0/reversion/compat.py
new/django-reversion-3.0.1/reversion/compat.py
--- old/django-reversion-3.0.0/reversion/compat.py 2018-07-19
13:22:54.000000000 +0200
+++ new/django-reversion-3.0.1/reversion/compat.py 1970-01-01
01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
-import django
-
-
-def remote_field(field):
- # remote_field is new in Django 1.9
- return field.remote_field if hasattr(field, 'remote_field') else field.rel
-
-
-def remote_model(field):
- # remote_field is new in Django 1.9
- return field.remote_field.model if hasattr(field, 'remote_field') else
field.rel.to
-
-
-def is_authenticated(user):
- if django.VERSION < (1, 10):
- return user.is_authenticated()
- return user.is_authenticated
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django-reversion-3.0.0/reversion/migrations/0001_initial.py
new/django-reversion-3.0.1/reversion/migrations/0001_initial.py
--- old/django-reversion-3.0.0/reversion/migrations/0001_initial.py
1970-01-01 01:00:00.000000000 +0100
+++ new/django-reversion-3.0.1/reversion/migrations/0001_initial.py
2018-10-23 16:29:55.000000000 +0200
@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+import django.db.models.deletion
+from django.conf import settings
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('contenttypes', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Revision',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False,
auto_created=True, primary_key=True)),
+ ('manager_slug', models.CharField(default='default',
max_length=200, db_index=True)),
+ ('date_created', models.DateTimeField(auto_now_add=True,
help_text='The date and time this revision was created.', verbose_name='date
created', db_index=True)),
+ ('comment', models.TextField(help_text='A text comment on this
revision.', verbose_name='comment', blank=True)),
+ ('user',
models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True,
to=settings.AUTH_USER_MODEL, help_text='The user who created this revision.',
null=True, verbose_name='user')),
+ ],
+ options={
+ "ordering": ("-pk",)
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Version',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False,
auto_created=True, primary_key=True)),
+ ('object_id', models.TextField(help_text='Primary key of the
model under version control.')),
+ ('object_id_int', models.IntegerField(help_text="An indexed,
integer version of the stored model's primary key, used for faster lookups.",
null=True, db_index=True, blank=True)),
+ ('format', models.CharField(help_text='The serialization
format used by this model.', max_length=255)),
+ ('serialized_data', models.TextField(help_text='The serialized
form of this version of the model.')),
+ ('object_repr', models.TextField(help_text='A string
representation of the object.')),
+ ('content_type', models.ForeignKey(help_text='Content type of
the model under version control.', on_delete=django.db.models.deletion.CASCADE,
to='contenttypes.ContentType')),
+ ('revision', models.ForeignKey(help_text='The revision that
contains this version.', on_delete=django.db.models.deletion.CASCADE,
to='reversion.Revision')),
+ ],
+ options={
+ "ordering": ("-pk",)
+ },
+ bases=(models.Model,),
+ ),
+ ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django-reversion-3.0.0/reversion/migrations/0001_squashed_0004_auto_20160611_1202.py
new/django-reversion-3.0.1/reversion/migrations/0001_squashed_0004_auto_20160611_1202.py
---
old/django-reversion-3.0.0/reversion/migrations/0001_squashed_0004_auto_20160611_1202.py
2018-07-19 13:22:54.000000000 +0200
+++
new/django-reversion-3.0.1/reversion/migrations/0001_squashed_0004_auto_20160611_1202.py
2018-10-23 16:29:55.000000000 +0200
@@ -9,6 +9,8 @@
class Migration(migrations.Migration):
+ replaces = [('reversion', '0001_initial'), ('reversion',
'0002_auto_20141216_1509'), ('reversion', '0003_auto_20160601_1600'),
('reversion', '0004_auto_20160611_1202')]
+
initial = True
dependencies = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django-reversion-3.0.0/reversion/migrations/0002_auto_20141216_1509.py
new/django-reversion-3.0.1/reversion/migrations/0002_auto_20141216_1509.py
--- old/django-reversion-3.0.0/reversion/migrations/0002_auto_20141216_1509.py
1970-01-01 01:00:00.000000000 +0100
+++ new/django-reversion-3.0.1/reversion/migrations/0002_auto_20141216_1509.py
2018-10-23 16:29:55.000000000 +0200
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('reversion', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='revision',
+ name='manager_slug',
+ field=models.CharField(default='default', max_length=191,
db_index=True),
+ ),
+ ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django-reversion-3.0.0/reversion/migrations/0003_auto_20160601_1600.py
new/django-reversion-3.0.1/reversion/migrations/0003_auto_20160601_1600.py
--- old/django-reversion-3.0.0/reversion/migrations/0003_auto_20160601_1600.py
1970-01-01 01:00:00.000000000 +0100
+++ new/django-reversion-3.0.1/reversion/migrations/0003_auto_20160601_1600.py
2018-10-23 16:29:55.000000000 +0200
@@ -0,0 +1,108 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.6 on 2016-06-01 16:00
+from __future__ import unicode_literals
+
+from collections import defaultdict
+from django.db import DEFAULT_DB_ALIAS, migrations, models, router
+from django.apps import apps as live_apps
+
+
+def de_dupe_version_table(apps, schema_editor):
+ """
+ Removes some duplicate Version models that may have crept into the
database and will prevent the
+ unique index being added by migration 0004.
+ """
+ db_alias = schema_editor.connection.alias
+ Version = apps.get_model("reversion", "Version")
+ keep_version_ids = Version.objects.using(db_alias).order_by().values_list(
+ # Group by the unique constraint we intend to enforce.
+ "revision_id",
+ "content_type_id",
+ "object_id",
+ ).annotate(
+ # Add in the most recent id for each duplicate row.
+ max_pk=models.Max("pk"),
+ ).values_list("max_pk", flat=True)
+ # Do not do anything if we're keeping all ids anyway.
+ if keep_version_ids.count() ==
Version.objects.using(db_alias).all().count():
+ return
+ # Delete all duplicate versions. Can't do this as a delete with subquery
because MySQL doesn't like running a
+ # subquery on the table being updated/deleted.
+ delete_version_ids = list(Version.objects.using(db_alias).exclude(
+ pk__in=keep_version_ids,
+ ).values_list("pk", flat=True))
+ Version.objects.using(db_alias).filter(
+ pk__in=delete_version_ids,
+ ).delete()
+
+
+def set_version_db(apps, schema_editor):
+ """
+ Updates the db field in all Version models to point to the correct write
+ db for the model.
+ """
+ db_alias = schema_editor.connection.alias
+ Version = apps.get_model("reversion", "Version")
+ content_types = Version.objects.using(db_alias).order_by().values_list(
+ "content_type_id",
+ "content_type__app_label",
+ "content_type__model"
+ ).distinct()
+ model_dbs = defaultdict(list)
+ for content_type_id, app_label, model_name in content_types:
+ # We need to be able to access all models in the project, and we can't
+ # specify them up-front in the migration dependencies. So we have to
+ # just get the live model. This should be fine, since we don't actually
+ # manipulate the live model in any way.
+ try:
+ model = live_apps.get_model(app_label, model_name)
+ except LookupError:
+ # If the model appears not to exist, play it safe and use the
default db.
+ db = "default"
+ else:
+ db = router.db_for_write(model)
+ model_dbs[db].append(content_type_id)
+ # Update db field.
+ # speedup for case when there is only default db
+ if DEFAULT_DB_ALIAS in model_dbs and len(model_dbs) == 1:
+ Version.objects.using(db_alias).update(db=DEFAULT_DB_ALIAS)
+ else:
+ for db, content_type_ids in model_dbs.items():
+ Version.objects.using(db_alias).filter(
+ content_type__in=content_type_ids
+ ).update(db=db)
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('reversion', '0002_auto_20141216_1509'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='revision',
+ name='manager_slug',
+ ),
+ migrations.RemoveField(
+ model_name='version',
+ name='object_id_int',
+ ),
+ migrations.AlterField(
+ model_name='version',
+ name='object_id',
+ field=models.CharField(help_text='Primary key of the model under
version control.', max_length=191),
+ ),
+ migrations.AlterField(
+ model_name='revision',
+ name='date_created',
+ field=models.DateTimeField(db_index=True, help_text='The date and
time this revision was created.', verbose_name='date created'),
+ ),
+ migrations.AddField(
+ model_name='version',
+ name='db',
+ field=models.CharField(null=True, help_text='The database the
model under version control is stored in.', max_length=191),
+ ),
+ migrations.RunPython(de_dupe_version_table),
+ migrations.RunPython(set_version_db),
+ ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django-reversion-3.0.0/reversion/migrations/0004_auto_20160611_1202.py
new/django-reversion-3.0.1/reversion/migrations/0004_auto_20160611_1202.py
--- old/django-reversion-3.0.0/reversion/migrations/0004_auto_20160611_1202.py
1970-01-01 01:00:00.000000000 +0100
+++ new/django-reversion-3.0.1/reversion/migrations/0004_auto_20160611_1202.py
2018-10-23 16:29:55.000000000 +0200
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-06-11 12:02
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('reversion', '0003_auto_20160601_1600'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='version',
+ name='db',
+ field=models.CharField(help_text='The database the model under
version control is stored in.', max_length=191),
+ ),
+ migrations.AlterUniqueTogether(
+ name='version',
+ unique_together=set([('db', 'content_type', 'object_id',
'revision')]),
+ ),
+ ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-reversion-3.0.0/reversion/models.py
new/django-reversion-3.0.1/reversion/models.py
--- old/django-reversion-3.0.0/reversion/models.py 2018-07-19
13:22:54.000000000 +0200
+++ new/django-reversion-3.0.1/reversion/models.py 2018-10-23
16:29:55.000000000 +0200
@@ -1,11 +1,8 @@
from __future__ import unicode_literals
from collections import defaultdict
from itertools import chain, groupby
+from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
-try:
- from django.contrib.contenttypes.fields import GenericForeignKey
-except ImportError: # Django < 1.9 pragma: no cover
- from django.contrib.contenttypes.generic import GenericForeignKey
from django.conf import settings
from django.contrib.admin.models import LogEntry
from django.core import serializers
@@ -64,12 +61,7 @@
)
def get_comment(self):
- try:
- return LogEntry(change_message=self.comment).get_change_message()
- except AttributeError:
- # Django < 1.10
- # LogEntry dont have `.get_change_message()`
- return self.comment
+ return LogEntry(change_message=self.comment).get_change_message()
def revert(self, delete=False):
# Group the models by the database of the serialized model.
@@ -278,7 +270,7 @@
field = model._meta.get_field(field_name)
if isinstance(field, models.ManyToManyField):
# M2M fields with a custom through are not stored in m2m_data,
but as a separate model.
- if field.attname in object_version.m2m_data:
+ if object_version.m2m_data and field.attname in
object_version.m2m_data:
field_dict[field.attname] =
object_version.m2m_data[field.attname]
else:
field_dict[field.attname] = getattr(obj, field.attname)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-reversion-3.0.0/reversion/revisions.py
new/django-reversion-3.0.1/reversion/revisions.py
--- old/django-reversion-3.0.0/reversion/revisions.py 2018-07-19
13:22:54.000000000 +0200
+++ new/django-reversion-3.0.1/reversion/revisions.py 2018-10-23
16:29:55.000000000 +0200
@@ -11,7 +11,6 @@
from django.db.models.signals import post_save, m2m_changed
from django.utils.encoding import force_text
from django.utils import timezone, six
-from reversion.compat import remote_field
from reversion.errors import RevisionManagementError, RegistrationError
from reversion.signals import pre_revision_commit, post_revision_commit
@@ -355,7 +354,7 @@
yield model, post_save, _post_save_receiver
opts = model._meta.concrete_model._meta
for field in opts.local_many_to_many:
- m2m_model = remote_field(field).through
+ m2m_model = field.remote_field.through
if isinstance(m2m_model, six.string_types):
if "." not in m2m_model:
m2m_model = "{app_label}.{m2m_model}".format(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-reversion-3.0.0/reversion/views.py
new/django-reversion-3.0.1/reversion/views.py
--- old/django-reversion-3.0.0/reversion/views.py 2018-07-19
13:22:54.000000000 +0200
+++ new/django-reversion-3.0.1/reversion/views.py 2018-10-23
16:29:55.000000000 +0200
@@ -1,6 +1,5 @@
from functools import wraps
-from reversion.compat import is_authenticated
from reversion.revisions import create_revision as create_revision_base,
set_user, get_user
@@ -15,7 +14,7 @@
def _set_user_from_request(request):
- if getattr(request, "user", None) and is_authenticated(request.user) and
get_user() is None:
+ if getattr(request, "user", None) and request.user.is_authenticated and
get_user() is None:
set_user(request.user)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-reversion-3.0.0/setup.py
new/django-reversion-3.0.1/setup.py
--- old/django-reversion-3.0.0/setup.py 2018-07-19 13:22:54.000000000 +0200
+++ new/django-reversion-3.0.1/setup.py 2018-10-23 16:29:55.000000000 +0200
@@ -28,7 +28,7 @@
"reversion": ["locale/*/LC_MESSAGES/django.*",
"templates/reversion/*.html"]},
cmdclass=cmdclass,
install_requires=[
- "django>=1.8",
+ "django>=1.11",
],
classifiers=[
"Development Status :: 5 - Production/Stable",
@@ -40,6 +40,7 @@
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
"Framework :: Django",
]
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-reversion-3.0.0/tests/test_app/models.py
new/django-reversion-3.0.1/tests/test_app/models.py
--- old/django-reversion-3.0.0/tests/test_app/models.py 2018-07-19
13:22:54.000000000 +0200
+++ new/django-reversion-3.0.1/tests/test_app/models.py 2018-10-23
16:29:55.000000000 +0200
@@ -1,9 +1,6 @@
from django.db import models
+from django.contrib.contenttypes.fields import GenericRelation
from django.contrib.contenttypes.models import ContentType
-try:
- from django.contrib.contenttypes.fields import GenericRelation
-except ImportError: # Django < 1.9 pragma: no cover
- from django.contrib.contenttypes.generic import GenericRelation
from reversion.models import Revision
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-reversion-3.0.0/tests/test_app/tests/base.py
new/django-reversion-3.0.1/tests/test_app/tests/base.py
--- old/django-reversion-3.0.0/tests/test_app/tests/base.py 2018-07-19
13:22:54.000000000 +0200
+++ new/django-reversion-3.0.1/tests/test_app/tests/base.py 2018-10-23
16:29:55.000000000 +0200
@@ -2,10 +2,7 @@
from django.conf import settings
from django.contrib.auth.models import User
from django.core.management import call_command
-try:
- from django.urls import clear_url_caches
-except ImportError: # Django < 1.10 pragma: no cover
- from django.core.urlresolvers import clear_url_caches
+from django.urls import clear_url_caches
from django.test import TestCase, TransactionTestCase
from django.test.utils import override_settings
from django.utils import timezone
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django-reversion-3.0.0/tests/test_app/tests/test_admin.py
new/django-reversion-3.0.1/tests/test_app/tests/test_admin.py
--- old/django-reversion-3.0.0/tests/test_app/tests/test_admin.py
2018-07-19 13:22:54.000000000 +0200
+++ new/django-reversion-3.0.1/tests/test_app/tests/test_admin.py
2018-10-23 16:29:55.000000000 +0200
@@ -1,9 +1,6 @@
import re
from django.contrib import admin
-try:
- from django.contrib.contenttypes.admin import GenericTabularInline
-except ImportError: # Django < 1.9 pragma: no cover
- from django.contrib.contenttypes.generic import GenericTabularInline
+from django.contrib.contenttypes.admin import GenericTabularInline
from django.shortcuts import resolve_url
import reversion
from reversion.admin import VersionAdmin