From eb9cd6fc1c8bac2c1dafed29a43e975a94c918b6 Mon Sep 17 00:00:00 2001 From: Tom Kralidis Date: Fri, 25 Dec 2015 14:09:37 -0500 Subject: [PATCH] force all CSW GetRecords requests to set ogc:SortBy to ensure proper ordering --- ckanext/spatial/lib/csw_client.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ckanext/spatial/lib/csw_client.py b/ckanext/spatial/lib/csw_client.py index 6da2062..a8fbdf8 100644 --- a/ckanext/spatial/lib/csw_client.py +++ b/ckanext/spatial/lib/csw_client.py @@ -6,7 +6,7 @@ for convenience. import logging from owslib.etree import etree -from owslib.fes import PropertyIsEqualTo +from owslib.fes import PropertyIsEqualTo, SortBy, SortProperty log = logging.getLogger(__name__) @@ -66,6 +66,10 @@ class CswService(OwsService): Perform various operations on a CSW service """ from owslib.csw import CatalogueServiceWeb as _Implementation + + def __init__(self): + self.sortby = SortBy([SortProperty('dc:identifier')]) + def getrecords(self, qtype=None, keywords=[], typenames="csw:Record", esn="brief", skip=0, count=10, outputschema="gmd", **kw): @@ -83,6 +87,7 @@ class CswService(OwsService): "startposition": skip, "maxrecords": count, "outputschema": namespaces[outputschema], + "sortby": self.sortby } log.info('Making CSW request: getrecords2 %r', kwa) csw.getrecords2(**kwa) @@ -110,7 +115,8 @@ class CswService(OwsService): "startposition": startposition, "maxrecords": page, "outputschema": namespaces[outputschema], - "cql":cql, + "cql": cql, + "sortby": self.sortby } i = 0 matches = 0