Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-Flask-Security-Too for 
openSUSE:Factory checked in at 2022-10-03 15:59:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Flask-Security-Too (Old)
 and      /work/SRC/openSUSE:Factory/.python-Flask-Security-Too.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-Flask-Security-Too"

Mon Oct  3 15:59:29 2022 rev:12 rq:1007165 version:5.0.2

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-Flask-Security-Too/python-Flask-Security-Too.changes
      2022-09-08 14:24:04.398726976 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-Flask-Security-Too.new.2275/python-Flask-Security-Too.changes
    2022-10-03 15:59:30.490972210 +0200
@@ -1,0 +2,25 @@
+Fri Sep 30 06:52:16 UTC 2022 - Steve Kowalik <steven.kowa...@suse.com>
+
+- Upate to 5.0.2:
+  * Role permissions backwards compatibility bug.
+  * Fix Change Password regression.
+  * Support for WebAuthn.
+  * Support Two-factor recovery codes.
+  * Provide option to prevent user enumeration (i.e. Generic Responses).
+  * Support for Python 3.10.
+  * Support for Flask >= 2.2.
+  * Add custom HTML attributes to improve user experience.
+  * Make the required zxcvbn complexity score configurable.
+  * Get rid of Flask-Mail. Flask-Mailman is now the default preferred email
+    package.
+  * A delete option has been added to us-setup (form and view).
+  * Improve username support - the LoginForm now has a separate field for
+    username.
+  * Fix test and other failures with newer Flask-Login/Werkzeug versions.
+  * Fix test failures with newer Flask versions.
+- Drop patch endswith-assert.patch:
+  * Included upstream.
+- Rebase patches no-mongodb.patch and use-pyqrcodeng.patch
+- Update {Build,}Requires versions.
+
+-------------------------------------------------------------------

Old:
----
  Flask-Security-Too-4.1.3.tar.gz
  endswith-assert.patch

New:
----
  Flask-Security-Too-5.0.2.tar.gz

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

Other differences:
------------------
++++++ python-Flask-Security-Too.spec ++++++
--- /var/tmp/diff_new_pack.5SYDBX/_old  2022-10-03 15:59:31.614974461 +0200
+++ /var/tmp/diff_new_pack.5SYDBX/_new  2022-10-03 15:59:31.622974477 +0200
@@ -19,41 +19,39 @@
 %define skip_python2 1
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-Flask-Security-Too
-Version:        4.1.3
+Version:        5.0.2
 Release:        0
 Summary:        Security for Flask apps
 License:        MIT
-URL:            https://github.com/jwag956/flask-security
+URL:            https://github.com/Flask-Middleware/flask-security
 Source:         
https://files.pythonhosted.org/packages/source/F/Flask-Security-Too/Flask-Security-Too-%{version}.tar.gz
 Patch0:         no-mongodb.patch
 Patch1:         use-pyqrcodeng.patch
-# PATCH-FIX-UPSTREAM endswith-assert.patch 
gh#Flask-Middleware/flask-security#605 mc...@suse.com
-# don't test for euqality of response.headers['Location'], just for .endswith
-Patch2:         endswith-assert.patch
-BuildRequires:  %{python_module Babel >= 1.3}
+BuildRequires:  %{python_module Babel >= 2.9.1}
 BuildRequires:  %{python_module Flask >= 1.1.1}
-BuildRequires:  %{python_module Flask-Babel}
+BuildRequires:  %{python_module Flask-Babel >= 2.0.0}
 BuildRequires:  %{python_module Flask-Login >= 0.4.1}
-BuildRequires:  %{python_module Flask-Mail >= 0.9.1}
+BuildRequires:  %{python_module Flask-Mailman >= 0.3.0}
 BuildRequires:  %{python_module Flask-Principal >= 0.4.0}
-BuildRequires:  %{python_module Flask-SQLAlchemy >= 2.3}
+BuildRequires:  %{python_module Flask-SQLAlchemy >= 2.5.1}
 BuildRequires:  %{python_module Flask-WTF >= 0.14.3}
 BuildRequires:  %{python_module PyQRCode >= 1.2}
-BuildRequires:  %{python_module SQLAlchemy >= 1.2.6}
+BuildRequires:  %{python_module SQLAlchemy >= 1.3.24}
 BuildRequires:  %{python_module WTForms-lang}
 BuildRequires:  %{python_module WTForms}
 BuildRequires:  %{python_module Werkzeug >= 0.14.1}
 BuildRequires:  %{python_module argon2_cffi >= 19.1.0}
 BuildRequires:  %{python_module bcrypt >= 3.1.4}
-BuildRequires:  %{python_module bleach}
+BuildRequires:  %{python_module bleach >= 3.3.1}
 BuildRequires:  %{python_module blinker >= 1.4}
 BuildRequires:  %{python_module cachetools >= 3.1.0}
-BuildRequires:  %{python_module cryptography >= 2.1.4}
+BuildRequires:  %{python_module cryptography >= 3.4.8}
+BuildRequires:  %{python_module dateutil}
 BuildRequires:  %{python_module email-validator >= 1.1.1}
 BuildRequires:  %{python_module itsdangerous >= 1.1.0}
 BuildRequires:  %{python_module passlib >= 1.7.2}
 BuildRequires:  %{python_module peewee >= 3.7.1}
-BuildRequires:  %{python_module phonenumbers >= 8.11.1}
+BuildRequires:  %{python_module phonenumbers >= 8.12.18}
 BuildRequires:  %{python_module pony}
 BuildRequires:  %{python_module pytest >= 6.2.5}
 BuildRequires:  %{python_module setuptools}
@@ -61,22 +59,23 @@
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-Flask >= 1.1.1
-Requires:       python-Flask-Babel
+Requires:       python-Flask-Babel >= 2.0.0
 Requires:       python-Flask-Login >= 0.4.1
 Requires:       python-Flask-Principal >= 0.4.0
 Requires:       python-Flask-WTF >= 0.14.3
 Requires:       python-Werkzeug >= 0.14.1
 Requires:       python-bcrypt >= 3.1.4
+Requires:       python-bleach >= 3.3.1
 Requires:       python-blinker >= 1.4
-Requires:       python-cryptography >= 2.1.4
+Requires:       python-cryptography >= 3.4.8
 Requires:       python-email-validator >= 1.1.1
 Requires:       python-itsdangerous >= 1.1.0
 Requires:       python-passlib >= 1.7.2
 Recommends:     python-PyQRCode >= 1.2
-Recommends:     python-SQLAlchemy >= 1.2.6
+Recommends:     python-SQLAlchemy >= 1.3.24
 Recommends:     python-zxcvbn >= 4.4.28
 Suggests:       python-argon2_cffi >= 19.1.0
-Suggests:       python-phonenumbers >= 8.11.1
+Suggests:       python-phonenumbers >= 8.12.18
 Conflicts:      python-Flask-Security < 3.2.0
 Obsoletes:      python-Flask-Security < 3.2.0
 Provides:       python-Flask-Security = %{version}

++++++ Flask-Security-Too-4.1.3.tar.gz -> Flask-Security-Too-5.0.2.tar.gz ++++++
++++ 39914 lines of diff (skipped)

++++++ no-mongodb.patch ++++++
--- /var/tmp/diff_new_pack.5SYDBX/_old  2022-10-03 15:59:31.830974893 +0200
+++ /var/tmp/diff_new_pack.5SYDBX/_new  2022-10-03 15:59:31.834974902 +0200
@@ -1,23 +1,23 @@
-Index: Flask-Security-Too-4.1.2/tests/conftest.py
+Index: Flask-Security-Too-5.0.2/tests/conftest.py
 ===================================================================
---- Flask-Security-Too-4.1.2.orig/tests/conftest.py
-+++ Flask-Security-Too-4.1.2/tests/conftest.py
-@@ -683,7 +683,7 @@ def client_nc(request, sqlalchemy_app):
+--- Flask-Security-Too-5.0.2.orig/tests/conftest.py
++++ Flask-Security-Too-5.0.2/tests/conftest.py
+@@ -862,7 +862,7 @@ def client_nc(request, sqlalchemy_app):
      return app.test_client(use_cookies=False)
  
  
 -@pytest.fixture(params=["cl-sqlalchemy", "c2", "cl-mongo", "cl-peewee"])
 +@pytest.fixture(params=["cl-sqlalchemy", "c2", "cl-peewee"])
- def clients(request, app, tmpdir, realdburl):
+ def clients(request, app, tmpdir, realdburl, realmongodburl):
      if request.param == "cl-sqlalchemy":
          ds = sqlalchemy_setup(request, app, tmpdir, realdburl)
-@@ -729,7 +729,7 @@ def get_message_local(app):
+@@ -908,7 +908,7 @@ def get_message_local(app):
  
  
  @pytest.fixture(
 -    params=["sqlalchemy", "sqlalchemy-session", "mongoengine", "peewee", 
"pony"]
 +    params=["sqlalchemy", "sqlalchemy-session", "peewee", "pony"]
  )
- def datastore(request, app, tmpdir, realdburl):
+ def datastore(request, app, tmpdir, realdburl, realmongodburl):
      if request.param == "sqlalchemy":
 

++++++ use-pyqrcodeng.patch ++++++
--- /var/tmp/diff_new_pack.5SYDBX/_old  2022-10-03 15:59:31.846974925 +0200
+++ /var/tmp/diff_new_pack.5SYDBX/_new  2022-10-03 15:59:31.850974934 +0200
@@ -1,30 +1,37 @@
-Index: Flask-Security-Too-4.1.2/flask_security/core.py
+Index: Flask-Security-Too-5.0.2/flask_security/core.py
 ===================================================================
---- Flask-Security-Too-4.1.2.orig/flask_security/core.py
-+++ Flask-Security-Too-4.1.2/flask_security/core.py
-@@ -1411,7 +1411,7 @@ class Security:
+--- Flask-Security-Too-5.0.2.orig/flask_security/core.py
++++ Flask-Security-Too-5.0.2/flask_security/core.py
+@@ -1523,7 +1523,7 @@ class Security:
                  and "authenticator" in cv("TWO_FACTOR_ENABLED_METHODS", 
app=app)
              )
              if need_qrcode:
--                self._check_modules("pyqrcode", "TWO_FACTOR or 
UNIFIED_SIGNIN")
+-                self._check_modules("qrcode", "TWO_FACTOR or UNIFIED_SIGNIN")
 +                self._check_modules("pyqrcodeng", "TWO_FACTOR or 
UNIFIED_SIGNIN")
  
              need_sms = (
                  cv("UNIFIED_SIGNIN", app=app)
-Index: Flask-Security-Too-4.1.2/flask_security/totp.py
+Index: Flask-Security-Too-5.0.2/flask_security/totp.py
 ===================================================================
---- Flask-Security-Too-4.1.2.orig/flask_security/totp.py
-+++ Flask-Security-Too-4.1.2/flask_security/totp.py
-@@ -139,9 +139,9 @@ class Totp:
+--- Flask-Security-Too-5.0.2.orig/flask_security/totp.py
++++ Flask-Security-Too-5.0.2/flask_security/totp.py
+@@ -140,15 +140,11 @@ class Totp:
          .. versionadded:: 4.0.0
          """
          try:
--            import pyqrcode
+-            import qrcode
+-            import qrcode.image.svg
 +            import pyqrcodeng
  
--            code = pyqrcode.create(self.get_totp_uri(username, totp))
-+            code = pyqrcodeng.create(self.get_totp_uri(username, totp))
+-            image = qrcode.make(
+-                self.get_totp_uri(username, totp),
+-                image_factory=qrcode.image.svg.SvgImage,
+-            )
++            image = pyqrcodeng.create(self.get_totp_uri(username, totp))
              with io.BytesIO() as virtual_file:
-                 code.svg(file=virtual_file, scale=3)
+-                image.save(virtual_file)
++                image.svg(virtual_file, scale=1)
                  image_as_str = 
base64.b64encode(virtual_file.getvalue()).decode("ascii")
+ 
+             return f"data:image/svg+xml;base64,{image_as_str}"
 

Reply via email to