Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-django-extra-views for 
openSUSE:Factory checked in at 2021-07-24 20:39:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-extra-views (Old)
 and      /work/SRC/openSUSE:Factory/.python-django-extra-views.new.1899 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-django-extra-views"

Sat Jul 24 20:39:01 2021 rev:2 rq:908032 version:0.14.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-django-extra-views/python-django-extra-views.changes
      2020-06-29 21:18:12.929756179 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-django-extra-views.new.1899/python-django-extra-views.changes
    2021-07-24 20:39:13.784410247 +0200
@@ -1,0 +2,14 @@
+Sat Jul 24 02:07:33 UTC 2021 - John Vandenberg <[email protected]>
+
+- Added merged_pr_233.patch for Django 3.2 support
+- Update to v0.14.0
+  * Removed support for Python 2.7.
+  * Added support for Python 3.8 and Django 3.1.
+  * Removed the following classes (use the class in parentheses instead):
+    + BaseFormSetMixin (use BaseFormSetFactory)
+    + BaseInlineFormSetMixin (use BaseInlineFormSetFactory)
+    + InlineFormSet (use InlineFormSetFactory)
+    + BaseGenericInlineFormSetMixin (use BaseGenericInlineFormSetFactory)
+    + GenericInlineFormSet (use GenericInlineFormSetFactory)
+
+-------------------------------------------------------------------

Old:
----
  django-extra-views-0.13.0.tar.gz

New:
----
  django-extra-views-0.14.0.tar.gz
  merged_pr_233.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-django-extra-views.spec ++++++
--- /var/tmp/diff_new_pack.AYSyG2/_old  2021-07-24 20:39:14.236409723 +0200
+++ /var/tmp/diff_new_pack.AYSyG2/_new  2021-07-24 20:39:14.240409719 +0200
@@ -17,14 +17,16 @@
 
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%define skip_python2 1
 Name:           python-django-extra-views
-Version:        0.13.0
+Version:        0.14.0
 Release:        0
 Summary:        Extra class-based views for Django
 License:        MIT
 Group:          Development/Languages/Python
 URL:            https://github.com/AndrewIngram/django-extra-views
 Source:         
https://github.com/AndrewIngram/django-extra-views/archive/%{version}.tar.gz#/django-extra-views-%{version}.tar.gz
+Patch0:         
https://patch-diff.githubusercontent.com/raw/AndrewIngram/django-extra-views/pull/233.patch#/merged_pr_233.patch
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
@@ -43,6 +45,7 @@
 
 %prep
 %setup -q -n django-extra-views-%{version}
+%patch0 -p1
 
 %build
 %python_build

++++++ django-extra-views-0.13.0.tar.gz -> django-extra-views-0.14.0.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-extra-views-0.13.0/.travis.yml 
new/django-extra-views-0.14.0/.travis.yml
--- old/django-extra-views-0.13.0/.travis.yml   2019-12-20 11:49:35.000000000 
+0100
+++ new/django-extra-views-0.14.0/.travis.yml   2021-06-09 11:02:13.000000000 
+0200
@@ -2,55 +2,28 @@
 language: python
 
 python:
-  - "2.7"
   - "3.5"
   - "3.6"
-# Travis does not currently support Python 3.7 globally, see below.
-#  - "3.7"
+  - "3.7"
+  - "3.8"
 
 env:
-  - DJANGO=django111
   - DJANGO=django21
   - DJANGO=django22
   - DJANGO=django30
+  - DJANGO=django31
   - DJANGO=djangomaster
 
 matrix:
-  # Workaround to include Python 3.7
-  include:
-    - python: "3.7"
-      dist: xenial
-      sudo: true
-      env: DJANGO=django111
-    - python: "3.7"
-      dist: xenial
-      sudo: true
-      env: DJANGO=django21
-    - python: "3.7"
-      dist: xenial
-      sudo: true
-      env: DJANGO=django22
-    - python: "3.7"
-      dist: xenial
-      sudo: true
-      env: DJANGO=django30
-    - python: "3.7"
-      dist: xenial
-      sudo: true
-      env: DJANGO=djangomaster
   exclude:
-    - python: "2.7"
-      env: DJANGO=django21
-    - python: "2.7"
-      env: DJANGO=django22
-    - python: "2.7"
-      env: DJANGO=django30
     - python: "3.5"
       env: DJANGO=django30
-    - python: "2.7"
-      env: DJANGO=djangomaster
+    - python: "3.5"
+      env: DJANGO=django31
     - python: "3.5"
       env: DJANGO=djangomaster
+    - python: "3.8"
+      env: DJANGO=django21
   allow_failures:
     - env: DJANGO=djangomaster
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-extra-views-0.13.0/CHANGELOG.rst 
new/django-extra-views-0.14.0/CHANGELOG.rst
--- old/django-extra-views-0.13.0/CHANGELOG.rst 2019-12-20 11:49:35.000000000 
+0100
+++ new/django-extra-views-0.14.0/CHANGELOG.rst 2021-06-09 11:02:13.000000000 
+0200
@@ -1,6 +1,31 @@
 Change History
 ==============
 
+0.14.0 (2021-06-08)
+-------------------------
+
+Changes:
+~~~~~~~~
+Supported Versions:
+
+======== ==========
+Python     Django
+======== ==========
+3.5      2.1???2.2
+3.6-3.7  2.1???3.1
+3.8      2.2???3.1
+======== ==========
+
+- Removed support for Python 2.7.
+- Added support for Python 3.8 and Django 3.1.
+- Removed the following classes (use the class in parentheses instead):
+
+  - ``BaseFormSetMixin`` (use ``BaseFormSetFactory``).
+  - ``BaseInlineFormSetMixin`` (use ``BaseInlineFormSetFactory``).
+  - ``InlineFormSet`` (use ``InlineFormSetFactory``).
+  - ``BaseGenericInlineFormSetMixin`` (use 
``BaseGenericInlineFormSetFactory``).
+  - ``GenericInlineFormSet`` (use ``GenericInlineFormSetFactory``).
+
 0.13.0 (2019-12-20)
 -------------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-extra-views-0.13.0/docs/pages/formset-customization.rst 
new/django-extra-views-0.14.0/docs/pages/formset-customization.rst
--- old/django-extra-views-0.13.0/docs/pages/formset-customization.rst  
2019-12-20 11:49:35.000000000 +0100
+++ new/django-extra-views-0.14.0/docs/pages/formset-customization.rst  
2021-06-09 11:02:13.000000000 +0200
@@ -116,7 +116,7 @@
 
     class ItemInline(InlineFormSetFactory):
         model = Item
-        formset_kwargs = {'form_kwargs': {'initial': {'name': 'example'}}
+        formset_kwargs = {'form_kwargs': {'initial': {'name': 'example'}}}
 
 If these need to be modified at run time, it can be done by
 :code:`get_formset_kwargs()`:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-extra-views-0.13.0/docs/pages/formset-views.rst 
new/django-extra-views-0.14.0/docs/pages/formset-views.rst
--- old/django-extra-views-0.13.0/docs/pages/formset-views.rst  2019-12-20 
11:49:35.000000000 +0100
+++ new/django-extra-views-0.14.0/docs/pages/formset-views.rst  2021-06-09 
11:02:13.000000000 +0200
@@ -71,7 +71,7 @@
         template_name = 'address_formset.html'
         form_class = AddressForm
         formset_class = BaseAddressFormSet
-        initial = [{'type': 'home'}, {'type', 'work'}]
+        initial = [{'type': 'home'}, {'type': 'work'}]
         prefix = 'address-form'
         success_url = 'success/'
         factory_kwargs = {'extra': 2, 'max_num': None,
@@ -227,7 +227,7 @@
 from :code:`django.inlineformset_factory()`. Each class within in
 :code:`CreateWithInlines.inlines` and :code:`UpdateWithInlines.inlines`
 should be a subclass of :code:`InlineFormSetFactory`. All the
-same methods and attributes as :code:`InlineFormSetView` are availble, with the
+same methods and attributes as :code:`InlineFormSetView` are available, with 
the
 exception of any view-related attributes and methods, such as 
:code:`success_url`
 or :code:`formset_valid()`:
 
@@ -279,4 +279,4 @@
 
 :code:`GenericInlineFormSetFactory` can be used in
 :code:`CreateWithInlines.inlines` and :code:`UpdateWithInlines.inlines` in the
-obvious way.
\ No newline at end of file
+obvious way.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-extra-views-0.13.0/extra_views/__init__.py 
new/django-extra-views-0.14.0/extra_views/__init__.py
--- old/django-extra-views-0.13.0/extra_views/__init__.py       2019-12-20 
11:49:35.000000000 +0100
+++ new/django-extra-views-0.14.0/extra_views/__init__.py       2021-06-09 
11:02:13.000000000 +0200
@@ -1,7 +1,6 @@
 from extra_views.advanced import (
     CreateWithInlinesView,
     FormSetSuccessMessageMixin,
-    InlineFormSet,
     InlineFormSetFactory,
     NamedFormsetsMixin,
     SuccessMessageMixin,
@@ -10,19 +9,16 @@
 from extra_views.contrib.mixins import SearchableListMixin, SortableListMixin
 from extra_views.dates import CalendarMonthView
 from extra_views.formsets import (
-    BaseFormSetMixin,
-    BaseInlineFormSetMixin,
     FormSetView,
     InlineFormSetView,
     ModelFormSetView,
 )
 
-__version__ = "0.13.0"
+__version__ = "0.14.0"
 
 __all__ = [
     "CreateWithInlinesView",
     "FormSetSuccessMessageMixin",
-    "InlineFormSet",
     "InlineFormSetFactory",
     "NamedFormsetsMixin",
     "SuccessMessageMixin",
@@ -30,8 +26,6 @@
     "SearchableListMixin",
     "SortableListMixin",
     "CalendarMonthView",
-    "BaseFormSetMixin",
-    "BaseInlineFormSetMixin",
     "FormSetView",
     "InlineFormSetView",
     "ModelFormSetView",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-extra-views-0.13.0/extra_views/advanced.py 
new/django-extra-views-0.14.0/extra_views/advanced.py
--- old/django-extra-views-0.13.0/extra_views/advanced.py       2019-12-20 
11:49:35.000000000 +0100
+++ new/django-extra-views-0.14.0/extra_views/advanced.py       2021-06-09 
11:02:13.000000000 +0200
@@ -28,23 +28,11 @@
         Overrides construct_formset to attach the model class as
         an attribute of the returned formset instance.
         """
-        formset = super(InlineFormSetFactory, self).construct_formset()
+        formset = super().construct_formset()
         formset.model = self.inline_model
         return formset
 
 
-class InlineFormSet(InlineFormSetFactory):
-    def __init__(self, *args, **kwargs):
-        from warnings import warn
-
-        warn(
-            "`extra_views.InlineFormSet` has been renamed to 
`InlineFormSetFactory`. "
-            "`InlineFormSet` will be removed in a future release.",
-            DeprecationWarning,
-        )
-        super(InlineFormSet, self).__init__(*args, **kwargs)
-
-
 class ModelFormWithInlinesMixin(ModelFormMixin):
     """
     A mixin that provides a way to show and handle a modelform and inline
@@ -146,11 +134,11 @@
 
     def get(self, request, *args, **kwargs):
         self.object = None
-        return super(BaseCreateWithInlinesView, self).get(request, *args, 
**kwargs)
+        return super().get(request, *args, **kwargs)
 
     def post(self, request, *args, **kwargs):
         self.object = None
-        return super(BaseCreateWithInlinesView, self).post(request, *args, 
**kwargs)
+        return super().post(request, *args, **kwargs)
 
 
 class CreateWithInlinesView(
@@ -173,11 +161,11 @@
 
     def get(self, request, *args, **kwargs):
         self.object = self.get_object()
-        return super(BaseUpdateWithInlinesView, self).get(request, *args, 
**kwargs)
+        return super().get(request, *args, **kwargs)
 
     def post(self, request, *args, **kwargs):
         self.object = self.get_object()
-        return super(BaseUpdateWithInlinesView, self).post(request, *args, 
**kwargs)
+        return super().post(request, *args, **kwargs)
 
 
 class UpdateWithInlinesView(
@@ -219,7 +207,7 @@
             if "formset" in kwargs:
                 context[inlines_names[0]] = kwargs["formset"]
         context.update(kwargs)
-        return super(NamedFormsetsMixin, self).get_context_data(**context)
+        return super().get_context_data(**context)
 
 
 class SuccessMessageMixin(object):
@@ -234,7 +222,7 @@
     success_message = ""
 
     def forms_valid(self, form, inlines):
-        response = super(SuccessMessageMixin, self).forms_valid(form, inlines)
+        response = super().forms_valid(form, inlines)
         success_message = self.get_success_message(form.cleaned_data, inlines)
         if success_message:
             messages.success(self.request, success_message)
@@ -256,7 +244,7 @@
     success_message = ""
 
     def formset_valid(self, formset):
-        response = super(FormSetSuccessMessageMixin, 
self).formset_valid(formset)
+        response = super().formset_valid(formset)
         success_message = self.get_success_message(formset)
         if success_message:
             messages.success(self.request, success_message)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-extra-views-0.13.0/extra_views/contrib/mixins.py 
new/django-extra-views-0.14.0/extra_views/contrib/mixins.py
--- old/django-extra-views-0.13.0/extra_views/contrib/mixins.py 2019-12-20 
11:49:35.000000000 +0100
+++ new/django-extra-views-0.14.0/extra_views/contrib/mixins.py 2021-06-09 
11:02:13.000000000 +0200
@@ -1,15 +1,11 @@
-from __future__ import unicode_literals
-
 import datetime
 import functools
 import operator
 
-import six
 from django.contrib import messages
 from django.core.exceptions import ImproperlyConfigured
 from django.db.models import Q
 from django.views.generic.base import ContextMixin
-from six.moves import reduce
 
 VALID_STRING_LOOKUPS = (
     "iexact",
@@ -61,7 +57,7 @@
     def get_search_fields_with_filters(self):
         fields = []
         for sf in self.search_fields:
-            if isinstance(sf, six.string_types):
+            if isinstance(sf, str):
                 fields.append((sf, "icontains"))
             else:
                 if self.check_lookups and sf[1] not in VALID_STRING_LOOKUPS:
@@ -107,8 +103,8 @@
                                 for field_name in self.search_date_fields
                             ]
                         )
-                w_qs.append(reduce(operator.or_, filters))
-            qs = qs.filter(reduce(operator.and_, w_qs))
+                w_qs.append(functools.reduce(operator.or_, filters))
+            qs = qs.filter(functools.reduce(operator.and_, w_qs))
             qs = qs.distinct()
         return qs
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-extra-views-0.13.0/extra_views/dates.py 
new/django-extra-views-0.14.0/extra_views/dates.py
--- old/django-extra-views-0.13.0/extra_views/dates.py  2019-12-20 
11:49:35.000000000 +0100
+++ new/django-extra-views-0.14.0/extra_views/dates.py  2021-06-09 
11:02:13.000000000 +0200
@@ -1,5 +1,3 @@
-from __future__ import unicode_literals
-
 import datetime
 import math
 from calendar import Calendar
@@ -7,13 +5,7 @@
 
 from django.core.exceptions import ImproperlyConfigured
 from django.db.models import Q
-# Remove check when support for python < 3 is dropped.
-# 
https://docs.djangoproject.com/en/3.0/releases/3.0/#features-deprecated-in-3-0
-import sys
-if sys.version_info[0] >= 3:
-    from django.utils.translation import gettext_lazy as _
-else:
-    from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from django.views.generic.dates import (
     DateMixin,
     MonthMixin,
@@ -113,7 +105,7 @@
         """
         Returns a queryset of models for the month requested
         """
-        qs = super(BaseCalendarMonthView, self).get_queryset()
+        qs = super().get_queryset()
 
         year = self.get_year()
         month = self.get_month()
@@ -179,7 +171,7 @@
         Variables added are: `calendar`, `weekdays`, `month`, `next_month` and
         `previous_month`.
         """
-        data = super(BaseCalendarMonthView, self).get_context_data(**kwargs)
+        data = super().get_context_data(**kwargs)
 
         year = self.get_year()
         month = self.get_month()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-extra-views-0.13.0/extra_views/formsets.py 
new/django-extra-views-0.14.0/extra_views/formsets.py
--- old/django-extra-views-0.13.0/extra_views/formsets.py       2019-12-20 
11:49:35.000000000 +0100
+++ new/django-extra-views-0.14.0/extra_views/formsets.py       2021-06-09 
11:02:13.000000000 +0200
@@ -31,13 +31,6 @@
         Returns an instance of the formset
         """
         formset_class = self.get_formset()
-        if hasattr(self, "get_extra_form_kwargs"):
-            klass = type(self).__name__
-            raise DeprecationWarning(
-                "Calling {0}.get_extra_form_kwargs is no longer supported. "
-                "Set `form_kwargs` in {0}.formset_kwargs or override "
-                "{0}.get_formset_kwargs() directly.".format(klass)
-            )
         return formset_class(**self.get_formset_kwargs())
 
     def get_initial(self):
@@ -87,44 +80,12 @@
         """
         Returns the keyword arguments for calling the formset factory
         """
-        # Perform deprecation check
-        for attr in [
-            "extra",
-            "max_num",
-            "can_order",
-            "can_delete",
-            "ct_field",
-            "formfield_callback",
-            "fk_name",
-            "widgets",
-            "ct_fk_field",
-        ]:
-            if hasattr(self, attr):
-                klass = type(self).__name__
-                raise DeprecationWarning(
-                    "Setting `{0}.{1}` at the class level is now deprecated. "
-                    "Set `{0}.factory_kwargs` instead.".format(klass, attr)
-                )
-
         kwargs = self.factory_kwargs.copy()
         if self.get_formset_class():
             kwargs["formset"] = self.get_formset_class()
         return kwargs
 
 
-class BaseFormSetMixin(BaseFormSetFactory):
-    def __init__(self, *args, **kwargs):
-        from warnings import warn
-
-        warn(
-            "`extra_views.BaseFormSetMixin` has been renamed to "
-            "`BaseFormSetFactory`. `BaseFormSetMixin` will be removed in "
-            "a future release.",
-            DeprecationWarning,
-        )
-        super(BaseFormSetMixin, self).__init__(*args, **kwargs)
-
-
 class FormSetMixin(BaseFormSetFactory, ContextMixin):
     """
     A view mixin that provides a way to show and handle a single formset in a 
request.
@@ -172,7 +133,7 @@
         """
         Returns the keyword arguments for instantiating the formset.
         """
-        kwargs = super(ModelFormSetMixin, self).get_formset_kwargs()
+        kwargs = super().get_formset_kwargs()
         kwargs["queryset"] = self.get_queryset()
         return kwargs
 
@@ -180,7 +141,7 @@
         """
         Returns the keyword arguments for calling the formset factory
         """
-        kwargs = super(ModelFormSetMixin, self).get_factory_kwargs()
+        kwargs = super().get_factory_kwargs()
         kwargs.setdefault("fields", self.fields)
         kwargs.setdefault("exclude", self.exclude)
 
@@ -199,7 +160,7 @@
         If the formset is valid, save the associated models.
         """
         self.object_list = formset.save()
-        return super(ModelFormSetMixin, self).formset_valid(formset)
+        return super().formset_valid(formset)
 
 
 class BaseInlineFormSetFactory(BaseFormSetFactory):
@@ -224,14 +185,7 @@
         """
         Returns the keyword arguments for instantiating the formset.
         """
-        # Perform deprecation check
-        if hasattr(self, "save_as_new"):
-            klass = type(self).__name__
-            raise DeprecationWarning(
-                "Setting `{0}.save_as_new` at the class level is now "
-                "deprecated. Set `{0}.formset_kwargs` instead.".format(klass)
-            )
-        kwargs = super(BaseInlineFormSetFactory, self).get_formset_kwargs()
+        kwargs = super().get_formset_kwargs()
         kwargs["instance"] = self.object
         return kwargs
 
@@ -239,7 +193,7 @@
         """
         Returns the keyword arguments for calling the formset factory
         """
-        kwargs = super(BaseInlineFormSetFactory, self).get_factory_kwargs()
+        kwargs = super().get_factory_kwargs()
         kwargs.setdefault("fields", self.fields)
         kwargs.setdefault("exclude", self.exclude)
 
@@ -256,19 +210,6 @@
         )
 
 
-class BaseInlineFormSetMixin(BaseInlineFormSetFactory):
-    def __init__(self, *args, **kwargs):
-        from warnings import warn
-
-        warn(
-            "`extra_views.BaseInlineFormSetMixin` has been renamed to "
-            "`BaseInlineFormSetFactory`. `BaseInlineFormSetMixin` will be 
removed in "
-            "a future release.",
-            DeprecationWarning,
-        )
-        super(BaseInlineFormSetMixin, self).__init__(*args, **kwargs)
-
-
 class InlineFormSetMixin(BaseInlineFormSetFactory, SingleObjectMixin, 
FormSetMixin):
     """
     A view mixin that provides a way to show and handle a single inline formset
@@ -277,7 +218,7 @@
 
     def formset_valid(self, formset):
         self.object_list = formset.save()
-        return super(InlineFormSetMixin, self).formset_valid(formset)
+        return super().formset_valid(formset)
 
 
 class ProcessFormSetView(View):
@@ -328,11 +269,11 @@
 
     def get(self, request, *args, **kwargs):
         self.object_list = self.get_queryset()
-        return super(BaseModelFormSetView, self).get(request, *args, **kwargs)
+        return super().get(request, *args, **kwargs)
 
     def post(self, request, *args, **kwargs):
         self.object_list = self.get_queryset()
-        return super(BaseModelFormSetView, self).post(request, *args, **kwargs)
+        return super().post(request, *args, **kwargs)
 
 
 class ModelFormSetView(MultipleObjectTemplateResponseMixin, 
BaseModelFormSetView):
@@ -349,11 +290,11 @@
 
     def get(self, request, *args, **kwargs):
         self.object = self.get_object()
-        return super(BaseInlineFormSetView, self).get(request, *args, **kwargs)
+        return super().get(request, *args, **kwargs)
 
     def post(self, request, *args, **kwargs):
         self.object = self.get_object()
-        return super(BaseInlineFormSetView, self).post(request, *args, 
**kwargs)
+        return super().post(request, *args, **kwargs)
 
 
 class InlineFormSetView(SingleObjectTemplateResponseMixin, 
BaseInlineFormSetView):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-extra-views-0.13.0/extra_views/generic.py 
new/django-extra-views-0.14.0/extra_views/generic.py
--- old/django-extra-views-0.13.0/extra_views/generic.py        2019-12-20 
11:49:35.000000000 +0100
+++ new/django-extra-views-0.14.0/extra_views/generic.py        2021-06-09 
11:02:13.000000000 +0200
@@ -24,19 +24,6 @@
         return result
 
 
-class BaseGenericInlineFormSetMixin(BaseGenericInlineFormSetFactory):
-    def __init__(self, *args, **kwargs):
-        from warnings import warn
-
-        warn(
-            "`extra_views.BaseGenericInlineFormSetMixin` has been renamed to "
-            "`BaseGenericInlineFormSetFactory`. 
`BaseGenericInlineFormSetMixin` "
-            "will be removed in a future release.",
-            DeprecationWarning,
-        )
-        super(BaseGenericInlineFormSetMixin, self).__init__(*args, **kwargs)
-
-
 class GenericInlineFormSetFactory(BaseGenericInlineFormSetFactory):
     """
     Class used to create a `GenericInlineFormSet` from 
`generic_inlineformset_factory`
@@ -55,19 +42,6 @@
         self.view = view
 
 
-class GenericInlineFormSet(GenericInlineFormSetFactory):
-    def __init__(self, *args, **kwargs):
-        from warnings import warn
-
-        warn(
-            "`extra_views.GenericInlineFormSet` has been renamed to "
-            "`GenericInlineFormSetFactory`. `GenericInlineFormSet` "
-            "will be removed in a future release.",
-            DeprecationWarning,
-        )
-        super(GenericInlineFormSet, self).__init__(*args, **kwargs)
-
-
 class GenericInlineFormSetMixin(BaseGenericInlineFormSetFactory, 
InlineFormSetMixin):
     """
     A mixin that provides a way to show and handle a generic inline formset in 
a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-extra-views-0.13.0/extra_views_tests/forms.py 
new/django-extra-views-0.14.0/extra_views_tests/forms.py
--- old/django-extra-views-0.13.0/extra_views_tests/forms.py    2019-12-20 
11:49:35.000000000 +0100
+++ new/django-extra-views-0.14.0/extra_views_tests/forms.py    2021-06-09 
11:02:13.000000000 +0200
@@ -9,7 +9,7 @@
         fields = ["name"]
 
     def save(self, commit=True):
-        instance = super(OrderForm, self).save(commit=commit)
+        instance = super().save(commit=commit)
 
         if commit:
             instance.action_on_save = True
@@ -34,4 +34,4 @@
     postcode = forms.CharField(max_length=10, required=True)
 
     def __init__(self, *args, **kwargs):
-        super(AddressForm, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-extra-views-0.13.0/extra_views_tests/formsets.py 
new/django-extra-views-0.14.0/extra_views_tests/formsets.py
--- old/django-extra-views-0.13.0/extra_views_tests/formsets.py 2019-12-20 
11:49:35.000000000 +0100
+++ new/django-extra-views-0.14.0/extra_views_tests/formsets.py 2021-06-09 
11:02:13.000000000 +0200
@@ -13,11 +13,11 @@
 
 class AddressFormSet(BaseFormSet):
     def add_fields(self, form, index):
-        super(AddressFormSet, self).add_fields(form, index)
+        super().add_fields(form, index)
         form.fields["county"] = forms.ChoiceField(choices=COUNTRY_CHOICES, 
initial="gb")
 
 
 class BaseArticleFormSet(BaseModelFormSet):
     def add_fields(self, form, index):
-        super(BaseArticleFormSet, self).add_fields(form, index)
+        super().add_fields(form, index)
         form.fields["notes"] = forms.CharField(initial="Write notes here")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-extra-views-0.13.0/extra_views_tests/tests.py 
new/django-extra-views-0.14.0/extra_views_tests/tests.py
--- old/django-extra-views-0.13.0/extra_views_tests/tests.py    2019-12-20 
11:49:35.000000000 +0100
+++ new/django-extra-views-0.14.0/extra_views_tests/tests.py    2021-06-09 
11:02:13.000000000 +0200
@@ -1,5 +1,3 @@
-from __future__ import unicode_literals
-
 import datetime
 from decimal import Decimal as D
 from unittest import expectedFailure
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-extra-views-0.13.0/extra_views_tests/views.py 
new/django-extra-views-0.14.0/extra_views_tests/views.py
--- old/django-extra-views-0.13.0/extra_views_tests/views.py    2019-12-20 
11:49:35.000000000 +0100
+++ new/django-extra-views-0.14.0/extra_views_tests/views.py    2021-06-09 
11:02:13.000000000 +0200
@@ -92,7 +92,7 @@
     success_message = "Order %(name)s was created successfully!"
 
     def form_valid(self, form):
-        response = super(OrderCreateView, self).form_valid(form)
+        response = super().form_valid(form)
         # Update the response url to indicate that form_valid was called
         response["Location"] += "?form_valid_called=1"
         return response
@@ -136,14 +136,14 @@
         if self.define_query:
             return "test B"
         else:
-            return super(SearchableItemListView, self).get_search_query()
+            return super().get_search_query()
 
     def get(self, request, *args, **kwargs):
         if self.exact_query:
             self.search_fields = [("name", "iexact"), "sku"]
         elif self.wrong_lookup:
             self.search_fields = [("name", "gte"), "sku"]
-        return super(SearchableItemListView, self).get(request, *args, 
**kwargs)
+        return super().get(request, *args, **kwargs)
 
 
 class SortableItemListView(SortableListMixin, generic.ListView):
@@ -157,4 +157,4 @@
         elif kwargs["flag"] == "aliases":
             self.sort_fields_aliases = [("name", "by_name"), ("sku", "by_sku")]
             self.sort_fields = []
-        return super(SortableItemListView, self).get(request, *args, **kwargs)
+        return super().get(request, *args, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-extra-views-0.13.0/setup.py 
new/django-extra-views-0.14.0/setup.py
--- old/django-extra-views-0.13.0/setup.py      2019-12-20 11:49:35.000000000 
+0100
+++ new/django-extra-views-0.14.0/setup.py      2021-06-09 11:02:13.000000000 
+0200
@@ -10,7 +10,7 @@
     name="django-extra-views",
     version=VERSION,
     url="https://github.com/AndrewIngram/django-extra-views";,
-    install_requires=["Django >=1.11", "six>=1.5.2"],
+    install_requires=["Django >=2.1"],
     description="Extra class-based views for Django",
     long_description=open("README.rst", "r").read(),
     license="MIT",
@@ -22,8 +22,8 @@
         "Environment :: Web Environment",
         "Framework :: Django",
         "Intended Audience :: Developers",
+        "License :: OSI Approved :: MIT License",
         "Programming Language :: Python",
-        "Programming Language :: Python :: 2",
         "Programming Language :: Python :: 3",
     ],
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-extra-views-0.13.0/tox.ini 
new/django-extra-views-0.14.0/tox.ini
--- old/django-extra-views-0.13.0/tox.ini       2019-12-20 11:49:35.000000000 
+0100
+++ new/django-extra-views-0.14.0/tox.ini       2021-06-09 11:02:13.000000000 
+0200
@@ -1,8 +1,8 @@
 [tox]
-envlist = py27-django{111}
-          py35-django{111,21,22}
-          py36-django{111,21,22,30,master}
-          py37-django{111,21,22,30,master}
+envlist = py35-django{21,22}
+          py36-django{21,22,30,31,master}
+          py37-django{21,22,30,31,master}
+          py38-django{22,30,31,master}
           docs
 
 [testenv]
@@ -15,11 +15,11 @@
     pytest {posargs}
 
 deps =
-    django111: Django>=1.11,<1.12
     django21: Django>=2.1,<2.2
     django22: Django>=2.2,<2.3
     django30: Django>=3.0a1,<3.1
-    djangomaster: https://github.com/django/django/archive/master.tar.gz
+    django31: Django>=3.1,<3.2
+    djangomaster: https://github.com/django/django/archive/main.tar.gz
     pytest-django
     pytest-cov
 

++++++ merged_pr_233.patch ++++++
>From 4a2bf63352b3fb58c5e932a67e9763a68a012702 Mon Sep 17 00:00:00 2001
From: sdolemelipone <[email protected]>
Date: Fri, 18 Jun 2021 16:04:21 +0100
Subject: [PATCH 1/3] Added Django 3.2 and Python 3.9 and fixed management form
 test.

---
 extra_views_tests/tests.py | 21 ++++++++++++++++++---
 tox.ini                    |  8 +++++---
 2 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/extra_views_tests/tests.py b/extra_views_tests/tests.py
index 013bdd7..758779c 100644
--- a/extra_views_tests/tests.py
+++ b/extra_views_tests/tests.py
@@ -2,6 +2,7 @@
 from decimal import Decimal as D
 from unittest import expectedFailure
 
+import django
 from django.contrib.messages import get_messages
 from django.core.exceptions import ImproperlyConfigured
 from django.forms import ValidationError
@@ -32,9 +33,23 @@ def test_formset_named(self):
         self.assertEqual(res.status_code, 200)
         self.assertEqual(res.context["formset"], res.context["AddressFormset"])
 
-    def test_missing_management(self):
-        with self.assertRaises(ValidationError):
-            self.client.post("/formset/simple/", {})
+    def test_missing_management_form(self):
+        # Django >=3.2 and does not raise an exception, but returns an error.
+        if django.__version__ >= "3.2.0":
+            res = self.client.post("/formset/simple/", {})
+            self.assertEqual(200, res.status_code)
+            formset = res.context["formset"]
+            self.assertFalse(formset.is_valid())
+            self.assertIn(
+                "ManagementForm data is missing or has been tampered with",
+                formset.non_form_errors()[0],
+            )
+        else:
+            with self.assertRaisesRegex(
+                ValidationError,
+                "ManagementForm data is missing or has been tampered with",
+            ):
+                self.client.post("/formset/simple/", {})
 
     def test_success(self):
         res = self.client.post("/formset/simple/", self.management_data, 
follow=True)
diff --git a/tox.ini b/tox.ini
index 908caeb..26d386c 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,8 +1,9 @@
 [tox]
 envlist = py35-django{21,22}
-          py36-django{21,22,30,31,master}
-          py37-django{21,22,30,31,master}
-          py38-django{22,30,31,master}
+          py36-django{21,22,30,31,32,master}
+          py37-django{21,22,30,31,32,master}
+          py38-django{22,30,31,32,master}
+          py39-django{22,30,31,32,master}
           docs
 
 [testenv]
@@ -19,6 +20,7 @@ deps =
     django22: Django>=2.2,<2.3
     django30: Django>=3.0a1,<3.1
     django31: Django>=3.1,<3.2
+    django32: Django>=3.2,<3.3
     djangomaster: https://github.com/django/django/archive/main.tar.gz
     pytest-django
     pytest-cov

>From 41048f5a22e0117e0474b93f11087cf9da3aeb49 Mon Sep 17 00:00:00 2001
From: sdolemelipone <[email protected]>
Date: Fri, 18 Jun 2021 16:37:32 +0100
Subject: [PATCH 2/3] Updated extra_views_tests.urls to use django.urls.path
 and djangomaster envs

---
 extra_views_tests/urls.py | 54 +++++++++++++++++++--------------------
 tox.ini                   |  4 +--
 2 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/extra_views_tests/urls.py b/extra_views_tests/urls.py
index 08147a8..bb71c36 100644
--- a/extra_views_tests/urls.py
+++ b/extra_views_tests/urls.py
@@ -1,4 +1,4 @@
-from django.conf.urls import url
+from django.urls import path
 from django.views.generic import TemplateView
 
 from .formsets import AddressFormSet
@@ -21,37 +21,37 @@
 )
 
 urlpatterns = [
-    url(r"^formset/simple/$", AddressFormSetView.as_view()),
-    url(r"^formset/simple/named/$", AddressFormSetViewNamed.as_view()),
-    url(r"^formset/simple/kwargs/$", AddressFormSetViewKwargs.as_view()),
-    url(
-        r"^formset/simple_redirect/$",
+    path("formset/simple/", AddressFormSetView.as_view()),
+    path("formset/simple/named/", AddressFormSetViewNamed.as_view()),
+    path("formset/simple/kwargs/", AddressFormSetViewKwargs.as_view()),
+    path(
+        "formset/simple_redirect/",
         
AddressFormSetView.as_view(success_url="/formset/simple_redirect/valid/"),
     ),
-    url(
-        r"^formset/simple_redirect/valid/$",
+    path(
+        "formset/simple_redirect/valid/",
         TemplateView.as_view(template_name="extra_views/success.html"),
     ),
-    url(r"^formset/custom/$", 
AddressFormSetView.as_view(formset_class=AddressFormSet)),
-    url(r"^modelformset/simple/$", ItemModelFormSetView.as_view()),
-    url(r"^modelformset/exclude/$", ItemModelFormSetExcludeView.as_view()),
-    url(r"^modelformset/custom/$", FormAndFormSetOverrideView.as_view()),
-    url(r"^modelformset/paged/$", PagedModelFormSetView.as_view()),
-    url(r"^inlineformset/(?P<pk>\d+)/$", OrderItemFormSetView.as_view()),
-    url(r"^inlines/(\d+)/new/$", OrderCreateView.as_view()),
-    url(r"^inlines/new/$", OrderCreateView.as_view()),
-    url(r"^inlines/new/named/$", OrderCreateNamedView.as_view()),
-    url(r"^inlines/(?P<pk>\d+)/$", OrderUpdateView.as_view()),
-    url(r"^genericinlineformset/(?P<pk>\d+)/$", OrderTagsView.as_view()),
-    url(r"^sortable/(?P<flag>\w+)/$", SortableItemListView.as_view()),
-    url(r"^events/(?P<year>\d{4})/(?P<month>\w+)/$", 
EventCalendarView.as_view()),
-    url(r"^searchable/$", SearchableItemListView.as_view()),
-    url(
-        r"^searchable/predefined_query/$",
+    path("formset/custom/", 
AddressFormSetView.as_view(formset_class=AddressFormSet)),
+    path("modelformset/simple/", ItemModelFormSetView.as_view()),
+    path("modelformset/exclude/", ItemModelFormSetExcludeView.as_view()),
+    path("modelformset/custom/", FormAndFormSetOverrideView.as_view()),
+    path("modelformset/paged/", PagedModelFormSetView.as_view()),
+    path("inlineformset/<int:pk>/", OrderItemFormSetView.as_view()),
+    path("inlines/<int:pk>/new/", OrderCreateView.as_view()),
+    path("inlines/new/", OrderCreateView.as_view()),
+    path("inlines/new/named/", OrderCreateNamedView.as_view()),
+    path("inlines/<int:pk>/", OrderUpdateView.as_view()),
+    path("genericinlineformset/<int:pk>/", OrderTagsView.as_view()),
+    path("sortable/<str:flag>/", SortableItemListView.as_view()),
+    path("events/<int:year>/<str:month>/", EventCalendarView.as_view()),
+    path("searchable/", SearchableItemListView.as_view()),
+    path(
+        "searchable/predefined_query/",
         SearchableItemListView.as_view(define_query=True),
     ),
-    url(r"^searchable/exact_query/$", 
SearchableItemListView.as_view(exact_query=True)),
-    url(
-        r"^searchable/wrong_lookup/$", 
SearchableItemListView.as_view(wrong_lookup=True)
+    path("searchable/exact_query/", 
SearchableItemListView.as_view(exact_query=True)),
+    path(
+        "searchable/wrong_lookup/", 
SearchableItemListView.as_view(wrong_lookup=True)
     ),
 ]
diff --git a/tox.ini b/tox.ini
index 26d386c..82bc66e 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,7 +1,7 @@
 [tox]
 envlist = py35-django{21,22}
-          py36-django{21,22,30,31,32,master}
-          py37-django{21,22,30,31,32,master}
+          py36-django{21,22,30,31,32}
+          py37-django{21,22,30,31,32}
           py38-django{22,30,31,32,master}
           py39-django{22,30,31,32,master}
           docs

>From bf394e92aaa2ecbc8f0a8526df8a9ae90f6f6f2a Mon Sep 17 00:00:00 2001
From: sdolemelipone <[email protected]>
Date: Fri, 18 Jun 2021 16:51:44 +0100
Subject: [PATCH 3/3] Updated travis.

---
 .travis.yml | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/.travis.yml b/.travis.yml
index c14ba85..74afc83 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,12 +6,14 @@ python:
   - "3.6"
   - "3.7"
   - "3.8"
+  - "3.9"
 
 env:
   - DJANGO=django21
   - DJANGO=django22
   - DJANGO=django30
   - DJANGO=django31
+  - DJANGO=django32
   - DJANGO=djangomaster
 
 matrix:
@@ -21,9 +23,17 @@ matrix:
     - python: "3.5"
       env: DJANGO=django31
     - python: "3.5"
+      env: DJANGO=django32
+    - python: "3.5"
+      env: DJANGO=djangomaster
+    - python: "3.6"
+      env: DJANGO=djangomaster
+    - python: "3.7"
       env: DJANGO=djangomaster
     - python: "3.8"
       env: DJANGO=django21
+    - python: "3.9"
+      env: DJANGO=django21
   allow_failures:
     - env: DJANGO=djangomaster
 

Reply via email to