[arch-commits] Commit in mailman3/trunk (5 files)

David Runge dvzrv at gemini.archlinux.org
Wed Aug 3 22:09:26 UTC 2022


    Date: Wednesday, August 3, 2022 @ 22:09:26
  Author: dvzrv
Revision: 1260174

upgpkg: mailman3 3.3.5-6: Rebuild to add patch for accepting booleans in REST API.

Add patch to accept booleans in REST API: https://bugs.archlinux.org/task/75505
Switch to PEP517.

Added:
  mailman3/trunk/keys/
  mailman3/trunk/keys/pgp/
  mailman3/trunk/keys/pgp/541EA0448453394FF77A0ECC9D9B2BA061D0A67C.asc
  mailman3/trunk/mailman3-3.3.5-booleans_rest_api.patch
Modified:
  mailman3/trunk/PKGBUILD

-------------------------------------------------------+
 PKGBUILD                                              |   37 ++++++----
 keys/pgp/541EA0448453394FF77A0ECC9D9B2BA061D0A67C.asc |    1 
 mailman3-3.3.5-booleans_rest_api.patch                |   58 ++++++++++++++++
 3 files changed, 82 insertions(+), 14 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2022-08-03 21:54:01 UTC (rev 1260173)
+++ PKGBUILD	2022-08-03 22:09:26 UTC (rev 1260174)
@@ -3,7 +3,7 @@
 _name=mailman
 pkgname=mailman3
 pkgver=3.3.5
-pkgrel=5
+pkgrel=6
 pkgdesc="The GNU mailing list manager"
 arch=(any)
 url="https://www.list.org/"
@@ -16,17 +16,19 @@
 python-passlib python-requests python-sqlalchemy1.3
 python-zope-component python-zope-configuration python-zope-event
 python-zope-interface)
-makedepends=(git python-setuptools)
+makedepends=(git python-build python-installer python-setuptools python-wheel)
 checkdepends=(python-flufl.testing python-nose2 python-psycopg2
 python-pymysql python-pytest)
-optdepends=('hyperkitty: for local archive and list interaction'
-            'lynx: for the default HTML to plaintext conversion'
-            'mailman3-hyperkitty: for archiving mails with an instance of hyperkitty'
-            'postorius: for local configuration interaction'
-            'python-mailmanclient: for programmatically interfacing the mailman REST API locally'
-            'python-psycopg2: for PostgreSQL support'
-            'python-pymysql: for MySQL support'
-            'smtp-server: for using a local mail server')
+optdepends=(
+  'hyperkitty: for local archive and list interaction'
+  'lynx: for the default HTML to plaintext conversion'
+  'mailman3-hyperkitty: for archiving mails with an instance of hyperkitty'
+  'postorius: for local configuration interaction'
+  'python-mailmanclient: for programmatically interfacing the mailman REST API locally'
+  'python-psycopg2: for PostgreSQL support'
+  'python-pymysql: for MySQL support'
+  'smtp-server: for using a local mail server'
+)
 conflicts=(mailman)
 replaces=(mailman-core)
 backup=(etc/mailman.cfg)
@@ -46,6 +48,7 @@
   $pkgname.tmpfiles
   $pkgname-3.3.5-python-alembic1.7.patch
   $pkgname-3.3.5-moderate_cross_posted.patch
+  $pkgname-3.3.5-booleans_rest_api.patch
 )
 sha512sums=('SKIP'
             '5773eae02dee11b83eb73ba81bca98d9d0a22fa3175d53172d17bbc0e9821360a4d562b6f42a3bb55c2f0c0b5b50ab84ee82da4cf8b3ff38555a378687dcde3c'
@@ -58,7 +61,8 @@
             '074cf58a93204d4b7631c4cc8af62d5720560301c6fefef6baa5d3aa33e72720870757fac7803f7b2835f8f02bb776f9d049df5c7528c743b56dda7da2085b07'
             '6f4b51fd5eb34ac974b3312c34eb1437d9435cfd50f0cb89db02b94ce514bceca2c6dc7cb172b79b2d6a23d68e7ea391ec58dbd9899938c0fe88c03c67c521b9'
             '3cba6577f70a212eca3590afbb03de0943c3509c7f93c29cd50da538e7a109626790becfa3f83098ee085ccf33c0612a9bedf3292089cfc9bdeabb83bda3f653'
-            '55fa201bedc7926dfe1b8d7ca81c72e575f4c83a80ca3585c66f222efbc78c1a70af74be864d3e310aec7f10d2fc740e746c7d995b84aea716aceadd4c266d16')
+            '55fa201bedc7926dfe1b8d7ca81c72e575f4c83a80ca3585c66f222efbc78c1a70af74be864d3e310aec7f10d2fc740e746c7d995b84aea716aceadd4c266d16'
+            'd4912abf8b13f205993f68d2f18fcad4e3b11a00da0ed54b4177417f129e074f066527e5984f237a8ae71d6c4277c12163ea53e695d376434a6cfe2c65ee3c2a')
 b2sums=('SKIP'
         '3efaa4559bcf54b322f4a21ee3000f5b2bea72dad2f9f436967f5c4d4ed8046bc08f8e31457991e63252237134f3f7d2f9e7e7862ebc211aeef11d506ded4440'
         'fc6d6545dad6cecfd4c1197269a3ec025eb0b830e04151bb2dee778b9e357127667c5a65ea401b10e31e2ec6a8509719de29c30471fa50d09634c934bdf50b9b'
@@ -70,7 +74,8 @@
         '594d6a6712f9e817f4d935225d3a1d87c96e23f1e449caab6bfb00ce2a0421af1401505c6d1d280a03f8c551136639f0dabf27d8b549ca4ea26bdb3febdda660'
         '461dce577696405011ed89f7fc109caaf27f4183b4d315baa8ad03db0f12015ebc447cbe9c0b8c5bcba38b63fcaf45adcfcb3e5bf5afb7eb0bd87a2e1b0301e5'
         '736b7bfb0d41cbf0703212139f326c1aeb04d7d800b0819c4f5fe101d5d105686dfe2fa0d8c2ae2c87d3e23314a8c126a83b5b4d467d7fb1b8073e176daa297b'
-        '21e9213373b2432e0c7a90bd11b203e7e71dc110001dde40e9a258d6c26de9484a6b45c06444864bb65f727a587c5eec7b052358549025a9fab4e9cb9762a5fb')
+        '21e9213373b2432e0c7a90bd11b203e7e71dc110001dde40e9a258d6c26de9484a6b45c06444864bb65f727a587c5eec7b052358549025a9fab4e9cb9762a5fb'
+        '20bae136e041690fe000659ce400499cc7391176cd5852888863fb85669d514b6a6081674eac9d73ee6fe2b89416665aedc9bec5aa4570406842d652dbfcb765')
 validpgpkeys=('541EA0448453394FF77A0ECC9D9B2BA061D0A67C') # Abhilash Raj <maxking at asynchronous.in>
 
 prepare() {
@@ -80,6 +85,9 @@
   # fix issue with moderating cross-posted messages: https://gitlab.com/mailman/mailman/-/issues/955
   patch -d $pkgname -Np1 -i ../$pkgname-3.3.5-moderate_cross_posted.patch
 
+  # accept booleans in REST API: https://gitlab.com/mailman/mailman/-/issues/970
+  patch -d $pkgname -Np1 -i ../$pkgname-3.3.5-booleans_rest_api.patch
+
   cd $pkgname
   # make sure that mailman runs in a FHS compliant way
   printf "[mailman]\nlayout: fhs\n" >> ../$_name.cfg
@@ -89,7 +97,7 @@
 
 build() {
   cd $pkgname
-  python setup.py build
+  python -m build --wheel --no-isolation
 }
 
 check() {
@@ -96,11 +104,12 @@
   cd $pkgname
   # thanks to test design it is impossible to run tests:
   # https://gitlab.com/mailman/mailman/-/issues/400
+  # nose2 -v
 }
 
 package() {
   cd $pkgname
-  python setup.py install --optimize=1 --root="$pkgdir"
+  python -m installer --destdir="$pkgdir" dist/*.whl
 
   # config
   install -vDm 640 ../$_name.cfg -t "$pkgdir/etc/"

Added: keys/pgp/541EA0448453394FF77A0ECC9D9B2BA061D0A67C.asc
===================================================================
(Binary files differ)

Index: mailman3/trunk/keys/pgp/541EA0448453394FF77A0ECC9D9B2BA061D0A67C.asc
===================================================================
--- keys/pgp/541EA0448453394FF77A0ECC9D9B2BA061D0A67C.asc	2022-08-03 21:54:01 UTC (rev 1260173)
+++ keys/pgp/541EA0448453394FF77A0ECC9D9B2BA061D0A67C.asc	2022-08-03 22:09:26 UTC (rev 1260174)

Property changes on: mailman3/trunk/keys/pgp/541EA0448453394FF77A0ECC9D9B2BA061D0A67C.asc
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pgp-keys
\ No newline at end of property
Added: mailman3-3.3.5-booleans_rest_api.patch
===================================================================
--- mailman3-3.3.5-booleans_rest_api.patch	                        (rev 0)
+++ mailman3-3.3.5-booleans_rest_api.patch	2022-08-03 22:09:26 UTC (rev 1260174)
@@ -0,0 +1,58 @@
+diff --git a/src/mailman/rest/helpers.py b/src/mailman/rest/helpers.py
+index 6f5d02872551d68942bfcc09b89dfec2934dce27..3efd772411769b502a2d32fec19e83d87d44a47c 100644
+--- a/src/mailman/rest/helpers.py
++++ b/src/mailman/rest/helpers.py
+@@ -249,6 +249,8 @@ class GetterSetter:
+         """
+         if self.decoder is None:
+             return value
++        if self.decoder is as_boolean and isinstance(value, bool):
++            return value
+         return self.decoder(value)
+ 
+ 
+diff --git a/src/mailman/rest/tests/test_listconf.py b/src/mailman/rest/tests/test_listconf.py
+index e9f1844fb0d5393c66b91b1ff9a01597a7a48e9b..59885bd9ef57f9258cb224281244dd2983788ebe 100644
+--- a/src/mailman/rest/tests/test_listconf.py
++++ b/src/mailman/rest/tests/test_listconf.py
+@@ -292,6 +292,17 @@ class TestConfiguration(unittest.TestCase):
+             'Invalid Parameter "archive_policy": Accepted Values are:'
+             ' never, private, public.')
+ 
++    def test_patch_with_json_boolean(self):
++        # Ensure we can patch with JSON boolean value.
++        with transaction():
++            self._mlist.gateway_to_mail = False
++        response = call_api(
++            'http://localhost:9001/3.0/lists/ant.example.com/config',
++            method='PATCH', headers={'Content-Type': 'application/json'},
++            json={'gateway_to_mail': True})
++        self.assertEqual(response[1].status_code, 204)
++        self.assertTrue(self._mlist.gateway_to_mail)
++
+     def test_bad_pipeline_name(self):
+         with self.assertRaises(HTTPError) as cm:
+             call_api(
+diff --git a/src/mailman/rest/tests/test_validator.py b/src/mailman/rest/tests/test_validator.py
+index 32c4a60c8d8920592a83d8296934a404f89eadfe..664770d7261872f428ac4a7991df7015d1414679 100644
+--- a/src/mailman/rest/tests/test_validator.py
++++ b/src/mailman/rest/tests/test_validator.py
+@@ -19,6 +19,7 @@
+ 
+ import unittest
+ 
++from lazr.config import as_boolean
+ from mailman.app.lifecycle import create_list
+ from mailman.core.api import API30, API31
+ from mailman.database.transaction import transaction
+@@ -170,3 +171,10 @@ class TestGetterSetter(unittest.TestCase):
+                          ['application/octet-stream'])
+         self.assertEqual(list(self._mlist.pass_extensions),
+                          ['.pdf'])
++
++    def test_set_boolean_as_bool(self):
++        # Non-pythonic POST data can contain JSON booleans. Ensure we can
++        # handle that.
++        getset = helpers.GetterSetter(as_boolean)
++        self.assertTrue(getset(True))
++        self.assertFalse(getset(False))



More information about the arch-commits mailing list