File upstream-post-2.2.patch of Package python-papyrus

From a36bed660fc1b7ee404bd4353e3b808c28b255a4 Mon Sep 17 00:00:00 2001
From: Frederic Junod <frederic.junod@camptocamp.com>
Date: Mon, 9 May 2016 08:36:00 +0200
Subject: [PATCH 1/8] Change 'update' HTTP response from 201 to 200

---
 papyrus/protocol.py            | 2 +-
 papyrus/tests/test_protocol.py | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/papyrus/protocol.py b/papyrus/protocol.py
index c267c6f..40e5b06 100644
--- a/papyrus/protocol.py
+++ b/papyrus/protocol.py
@@ -351,7 +351,7 @@ def update(self, request, id):
             self.before_update(request, feature, obj)
         obj.__update__(feature)
         session.flush()
-        request.response.status_int = 201
+        request.response.status_int = 200
         return obj
 
     def delete(self, request, id):
diff --git a/papyrus/tests/test_protocol.py b/papyrus/tests/test_protocol.py
index 995e334..d1410c0 100644
--- a/papyrus/tests/test_protocol.py
+++ b/papyrus/tests/test_protocol.py
@@ -793,7 +793,7 @@ def before_update(request, feature, obj):
         self.assertTrue(isinstance(request._log["obj"], MappedClass))
 
         # test response status
-        self.assertEqual(request.response.status_int, 201)
+        self.assertEqual(request.response.status_int, 200)
 
     def test_delete_forbidden(self):
         from papyrus.protocol import Protocol

From 1e3647179ec0e6169f587886f0cb9657ab2e4789 Mon Sep 17 00:00:00 2001
From: Frederic Junod <frederic.junod@camptocamp.com>
Date: Fri, 13 Jan 2017 13:50:34 +0100
Subject: [PATCH 4/8] Fix ST_Transform name in tests

---
 papyrus/tests/test_protocol.py | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/papyrus/tests/test_protocol.py b/papyrus/tests/test_protocol.py
index d1410c0..c3accf3 100644
--- a/papyrus/tests/test_protocol.py
+++ b/papyrus/tests/test_protocol.py
@@ -99,10 +99,10 @@ def test_box_filter_with_epsg(self):
         compiled_filter = filter.compile(self._get_engine())
         params = compiled_filter.params
         filter_str = _compiled_to_string(compiled_filter)
-        self.assertEqual(filter_str, b'ST_DWITHIN(ST_Transform("table".geom, %(param_1)s), ST_GeomFromWKB(%(ST_GeomFromWKB_1)s, %(ST_GeomFromWKB_2)s), %(ST_DWITHIN_1)s)')  # NOQA
+        self.assertEqual(filter_str, b'ST_DWITHIN(ST_Transform("table".geom, %(ST_Transform_1)s), ST_GeomFromWKB(%(ST_GeomFromWKB_1)s, %(ST_GeomFromWKB_2)s), %(ST_DWITHIN_1)s)')  # NOQA
         self.assertTrue(wkb.loads(bytes(params["ST_GeomFromWKB_1"])).equals(wkt.loads('POLYGON ((-180 -90, -180 90, 180 90, 180 -90, -180 -90))')))  # NOQA
         self.assertEqual(params["ST_GeomFromWKB_2"], 900913)
-        self.assertEqual(params["param_1"], 900913)
+        self.assertEqual(params["ST_Transform_1"], 900913)
         self.assertEqual(params["ST_DWITHIN_1"], 1)
 
     def test_within_filter(self):
@@ -133,10 +133,10 @@ def test_within_filter_with_epsg(self):
         compiled_filter = filter.compile(self._get_engine())
         params = compiled_filter.params
         filter_str = _compiled_to_string(compiled_filter)
-        self.assertEqual(filter_str, b'ST_DWITHIN(ST_Transform("table".geom, %(param_1)s), ST_GeomFromWKB(%(ST_GeomFromWKB_1)s, %(ST_GeomFromWKB_2)s), %(ST_DWITHIN_1)s)')  # NOQA
+        self.assertEqual(filter_str, b'ST_DWITHIN(ST_Transform("table".geom, %(ST_Transform_1)s), ST_GeomFromWKB(%(ST_GeomFromWKB_1)s, %(ST_GeomFromWKB_2)s), %(ST_DWITHIN_1)s)')  # NOQA
         self.assertTrue(wkb.loads(bytes(params["ST_GeomFromWKB_1"])).equals(wkt.loads('POINT (40 5)')))  # NOQA
         self.assertEqual(params["ST_GeomFromWKB_2"], 900913)
-        self.assertEqual(params["param_1"], 900913)
+        self.assertEqual(params["ST_Transform_1"], 900913)
         self.assertEqual(params["ST_DWITHIN_1"], 1)
 
     def test_polygon_filter(self):
@@ -172,10 +172,10 @@ def test_polygon_filter_with_epsg(self):
         compiled_filter = filter.compile(self._get_engine())
         params = compiled_filter.params
         filter_str = _compiled_to_string(compiled_filter)
-        self.assertEqual(filter_str, b'ST_DWITHIN(ST_Transform("table".geom, %(param_1)s), ST_GeomFromWKB(%(ST_GeomFromWKB_1)s, %(ST_GeomFromWKB_2)s), %(ST_DWITHIN_1)s)')  # NOQA
+        self.assertEqual(filter_str, b'ST_DWITHIN(ST_Transform("table".geom, %(ST_Transform_1)s), ST_GeomFromWKB(%(ST_GeomFromWKB_1)s, %(ST_GeomFromWKB_2)s), %(ST_DWITHIN_1)s)')  # NOQA
         self.assertTrue(wkb.loads(bytes(params["ST_GeomFromWKB_1"])).equals(poly))  # NOQA
         self.assertEqual(params["ST_GeomFromWKB_2"], 900913)
-        self.assertEqual(params["param_1"], 900913)
+        self.assertEqual(params["ST_Transform_1"], 900913)
         self.assertEqual(params["ST_DWITHIN_1"], 1)
 
     def test_geom_filter_no_params(self):

From e23bac5eb4f8ea53636396276694f6eb5dd34c90 Mon Sep 17 00:00:00 2001
From: Frederic Junod <frederic.junod@camptocamp.com>
Date: Fri, 13 Jan 2017 11:56:16 +0100
Subject: [PATCH 5/8] Fix membership test in create_geom_filter

---
 papyrus/protocol.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/papyrus/protocol.py b/papyrus/protocol.py
index 40e5b06..0e4e628 100644
--- a/papyrus/protocol.py
+++ b/papyrus/protocol.py
@@ -85,7 +85,7 @@ def create_geom_filter(request, mapped_class, geom_attr):
         shape = Polygon(((box[0], box[1]), (box[0], box[3]),
                          (box[2], box[3]), (box[2], box[1]),
                          (box[0], box[1])))
-    elif 'lon' and 'lat' in request.params:
+    elif 'lon' in request.params and 'lat' in request.params:
         shape = Point(float(request.params['lon']),
                       float(request.params['lat']))
     elif 'geometry' in request.params:

From ecd8fd2fd3940ae83c63b38011f1b06a47f1a6c0 Mon Sep 17 00:00:00 2001
From: Frederic Junod <frederic.junod@camptocamp.com>
Date: Mon, 23 Jan 2017 11:05:11 +0100
Subject: [PATCH 6/8] Change content type to 'application/geo+json'

See https://tools.ietf.org/html/rfc7946#section-12:
> The media type for GeoJSON text is "application/geo+json"  [...]
---
 papyrus/renderers.py            |  2 +-
 papyrus/tests/test_renderers.py | 16 ++++++++--------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/papyrus/renderers.py b/papyrus/renderers.py
index 7cd28f8..9900c81 100644
--- a/papyrus/renderers.py
+++ b/papyrus/renderers.py
@@ -73,7 +73,7 @@ def _render(value, system):
                 if ct == response.default_content_type:
                     callback = request.params.get(self.jsonp_param_name)
                     if callback is None:
-                        response.content_type = 'application/json'
+                        response.content_type = 'application/geo+json'
                     else:
                         response.content_type = 'text/javascript'
                         ret = ('%(callback)s(%(json)s);' %
diff --git a/papyrus/tests/test_renderers.py b/papyrus/tests/test_renderers.py
index 6a0f8fa..0856329 100644
--- a/papyrus/tests/test_renderers.py
+++ b/papyrus/tests/test_renderers.py
@@ -29,7 +29,7 @@ def test_geojson(self):
         result = renderer(f, {'request': request})
         result_parsed = json.loads(result)
         self.assertEqual(result_parsed, {"geometry": {"type": "Point", "coordinates": [53, -4]}, "type": "Feature", "id": 1, "properties": {"title": "Dict 1"}})  # NOQA
-        self.assertEqual(request.response.content_type, 'application/json')
+        self.assertEqual(request.response.content_type, 'application/geo+json')
 
     def test_geojson_content_type(self):
         renderer = self._callFUT()
@@ -59,7 +59,7 @@ def test_Decimal(self):
         result = renderer(f, {'request': request})
         result_parsed = json.loads(result)
         self.assertEqual(result_parsed, {"geometry": {"type": "Point", "coordinates": [53, -4]}, "type": "Feature", "id": 1, "properties": {"decimal": 0.003}})  # NOQA
-        self.assertEqual(request.response.content_type, 'application/json')
+        self.assertEqual(request.response.content_type, 'application/geo+json')
 
     def test_date(self):
         renderer = self._callFUT()
@@ -74,7 +74,7 @@ def test_date(self):
         result = renderer(f, {'request': request})
         result_parsed = json.loads(result)
         self.assertEqual(result_parsed, {"geometry": {"type": "Point", "coordinates": [53, -4]}, "type": "Feature", "id": 1, "properties": {"date": "2011-05-21"}})  # NOQA
-        self.assertEqual(request.response.content_type, 'application/json')
+        self.assertEqual(request.response.content_type, 'application/geo+json')
 
     def test_datetime(self):
         renderer = self._callFUT()
@@ -90,7 +90,7 @@ def test_datetime(self):
         result = renderer(f, {'request': request})
         result_parsed = json.loads(result)
         self.assertEqual(result_parsed, {"geometry": {"type": "Point", "coordinates": [53, -4]}, "type": "Feature", "id": 1, "properties": {"datetime": "2011-05-21T20:55:12"}})  # NOQA
-        self.assertEqual(request.response.content_type, 'application/json')
+        self.assertEqual(request.response.content_type, 'application/geo+json')
 
     def test_jsonp(self):
         renderer = self._callFUT()
@@ -122,7 +122,7 @@ def test_jsonp_param_name(self):
         result = renderer(f, {'request': request})
         result_parsed = json.loads(result)
         self.assertEqual(result_parsed, {"geometry": {"type": "Point", "coordinates": [53, -4]}, "type": "Feature", "id": 1, "properties": {"title": "Dict 1"}})  # NOQA
-        self.assertEqual(request.response.content_type, 'application/json')
+        self.assertEqual(request.response.content_type, 'application/geo+json')
         request = testing.DummyRequest()
         request.params['cb'] = 'jsonp_cb'
         result = renderer(f, {'request': request})
@@ -144,7 +144,7 @@ def test_type_for_array_default(self):
         result = renderer([f], {'request': request})
         result_parsed = json.loads(result)
         self.assertEqual(result_parsed, {"type": "FeatureCollection", "features": [{"geometry": {"type": "Point", "coordinates": [53, -4]}, "type": "Feature", "id": 1, "properties": {"title": "Dict 1"}}]})  # NOQA
-        self.assertEqual(request.response.content_type, 'application/json')
+        self.assertEqual(request.response.content_type, 'application/geo+json')
 
     def test_collection_type(self):
         renderer = self._callFUT(collection_type='GeometryCollection')
@@ -156,11 +156,11 @@ def test_collection_type(self):
         result_parsed = json.loads(result)
         self.assertEqual(result_parsed,
                          {"type": "Point", "coordinates": [53, -4]})
-        self.assertEqual(request.response.content_type, 'application/json')
+        self.assertEqual(request.response.content_type, 'application/geo+json')
         result = renderer([f], {'request': request})
         result_parsed = json.loads(result)
         self.assertEqual(result_parsed, {"type": "GeometryCollection", "geometries": [{"type": "Point", "coordinates": [53, -4]}]})  # NOQA
-        self.assertEqual(request.response.content_type, 'application/json')
+        self.assertEqual(request.response.content_type, 'application/geo+json')
 
 
 class Test_XSD(unittest.TestCase):

openSUSE Build Service is sponsored by