django-gisserver 2.2.0__tar.gz → 2.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/CHANGES.md +8 -0
  2. {django_gisserver-2.2.0/django_gisserver.egg-info → django_gisserver-2.2.2}/PKG-INFO +1 -1
  3. {django_gisserver-2.2.0 → django_gisserver-2.2.2/django_gisserver.egg-info}/PKG-INFO +1 -1
  4. django_gisserver-2.2.2/gisserver/__init__.py +1 -0
  5. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/operations/base.py +26 -6
  6. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/operations/wfs20.py +8 -0
  7. django_gisserver-2.2.0/gisserver/__init__.py +0 -1
  8. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/LICENSE +0 -0
  9. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/MANIFEST.in +0 -0
  10. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/README.md +0 -0
  11. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/django_gisserver.egg-info/SOURCES.txt +0 -0
  12. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/django_gisserver.egg-info/dependency_links.txt +0 -0
  13. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/django_gisserver.egg-info/not-zip-safe +0 -0
  14. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/django_gisserver.egg-info/requires.txt +0 -0
  15. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/django_gisserver.egg-info/top_level.txt +0 -0
  16. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/compat.py +0 -0
  17. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/conf.py +0 -0
  18. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/crs.py +0 -0
  19. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/db.py +0 -0
  20. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/exceptions.py +0 -0
  21. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/extensions/__init__.py +0 -0
  22. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/extensions/functions.py +0 -0
  23. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/extensions/queries.py +0 -0
  24. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/features.py +0 -0
  25. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/geometries.py +0 -0
  26. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/management/__init__.py +0 -0
  27. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/management/commands/__init__.py +0 -0
  28. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/management/commands/loadgeojson.py +0 -0
  29. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/operations/__init__.py +0 -0
  30. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/output/__init__.py +0 -0
  31. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/output/base.py +0 -0
  32. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/output/csv.py +0 -0
  33. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/output/geojson.py +0 -0
  34. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/output/gml32.py +0 -0
  35. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/output/iters.py +0 -0
  36. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/output/results.py +0 -0
  37. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/output/stored.py +0 -0
  38. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/output/utils.py +0 -0
  39. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/output/xmlschema.py +0 -0
  40. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/__init__.py +0 -0
  41. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/ast.py +0 -0
  42. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/fes20/__init__.py +0 -0
  43. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/fes20/expressions.py +0 -0
  44. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/fes20/filters.py +0 -0
  45. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/fes20/identifiers.py +0 -0
  46. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/fes20/lookups.py +0 -0
  47. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/fes20/operators.py +0 -0
  48. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/fes20/sorting.py +0 -0
  49. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/gml/__init__.py +0 -0
  50. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/gml/base.py +0 -0
  51. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/gml/geometries.py +0 -0
  52. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/ows/__init__.py +0 -0
  53. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/ows/kvp.py +0 -0
  54. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/ows/requests.py +0 -0
  55. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/query.py +0 -0
  56. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/values.py +0 -0
  57. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/wfs20/__init__.py +0 -0
  58. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/wfs20/adhoc.py +0 -0
  59. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/wfs20/base.py +0 -0
  60. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/wfs20/projection.py +0 -0
  61. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/wfs20/requests.py +0 -0
  62. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/wfs20/stored.py +0 -0
  63. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/parsers/xml.py +0 -0
  64. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/projection.py +0 -0
  65. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/static/gisserver/bootstrap-5.3.6.min.css +0 -0
  66. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/static/gisserver/index.css +0 -0
  67. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/templates/gisserver/base.html +0 -0
  68. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/templates/gisserver/index.html +0 -0
  69. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/templates/gisserver/service_description.html +0 -0
  70. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/templates/gisserver/wfs/2.0.0/get_capabilities.xml +0 -0
  71. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/templates/gisserver/wfs/feature_field.html +0 -0
  72. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/templates/gisserver/wfs/feature_type.html +0 -0
  73. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/templatetags/__init__.py +0 -0
  74. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/templatetags/gisserver_tags.py +0 -0
  75. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/types.py +0 -0
  76. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/gisserver/views.py +0 -0
  77. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/pyproject.toml +0 -0
  78. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/setup.cfg +0 -0
  79. {django_gisserver-2.2.0 → django_gisserver-2.2.2}/setup.py +0 -0
@@ -1,3 +1,11 @@
1
+ # 2025-12-04 (2.2.2)
2
+
3
+ * Fix output format matching to allow `application/json; subtype=geojson; charset=utf-8`
4
+
5
+ # 2025-10-14 (2.2.1)
6
+
7
+ * Add outputFormat to GetFeature operation to support ArcGISOnline
8
+
1
9
  # 2025-09-18 (2.2.0)
2
10
 
3
11
  * Drop support for python 3.9 and Django 3.2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-gisserver
3
- Version: 2.2.0
3
+ Version: 2.2.2
4
4
  Summary: Django speaking WFS 2.0 (exposing GeoDjango model fields)
5
5
  Home-page: https://github.com/amsterdam/django-gisserver
6
6
  Author: Diederik van der Boor
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-gisserver
3
- Version: 2.2.0
3
+ Version: 2.2.2
4
4
  Summary: Django speaking WFS 2.0 (exposing GeoDjango model fields)
5
5
  Home-page: https://github.com/amsterdam/django-gisserver
6
6
  Author: Diederik van der Boor
@@ -0,0 +1 @@
1
+ __version__ = "2.2.2" # follows PEP440
@@ -96,12 +96,32 @@ class OutputFormat(typing.Generic[R]):
96
96
  self._max_page_size = max_page_size
97
97
 
98
98
  def matches(self, value):
99
- """Test whether the 'value' is matched by this object."""
100
- if self.content_type == "application/gml+xml":
101
- # Allow "application/gml+xml; version=3.2" as sent by FME.
102
- # TODO rewrite this matching code in a clean way.
103
- value = value.split("; ", 1)[0]
104
- return self.content_type == value or self.subtype == value
99
+ """
100
+ Test whether the 'value' is matched by this object.
101
+
102
+ The regex used captures the content-type (ct), subtype (st), charset (cs) and version (v)
103
+ from the supplied value.
104
+
105
+ Some possible input values are:
106
+ - application/gml+xml
107
+ - application/gml+xml; version=3.2
108
+ - csv
109
+ - text/csv
110
+ - application/json; subtype=geojson; charset=utf-8
111
+ - geojson
112
+ """
113
+
114
+ regex = (
115
+ r"^(?P<ct>[^;]+);?\s?(?:(?:subtype=)(?P<st>[^;]*))?;?\s?"
116
+ r"(?:(?:charset=)(?P<cs>.*))?(;\s)?(?:(?:version=)(?P<v>.*))?"
117
+ )
118
+ if match := re.match(regex, value):
119
+ # If we capture a subtype, match on both
120
+ if match.group("st") is not None:
121
+ return self.content_type == match.group("ct") and self.subtype == match.group("st")
122
+ else:
123
+ return self.content_type == match.group("ct") or self.subtype == match.group("ct")
124
+ return False
105
125
 
106
126
  @property
107
127
  def identifier(self):
@@ -473,6 +473,14 @@ class GetFeature(BaseWFSGetDataOperation):
473
473
 
474
474
  return result
475
475
 
476
+ def get_parameters(self) -> list[Parameter]:
477
+ """Extend Parameters with outputFormat to support ArcGISOnline."""
478
+ parameters = super().get_parameters()
479
+
480
+ return parameters + [
481
+ Parameter("outputFormat", allowed_values=self.get_output_formats()),
482
+ ]
483
+
476
484
 
477
485
  class GetPropertyValue(BaseWFSGetDataOperation):
478
486
  """This returns a limited set of properties of the feature.
@@ -1 +0,0 @@
1
- __version__ = "2.2.0" # follows PEP440