Skip to content

Commit c98b5d7

Browse files
committed
overriding FES parsing
1 parent 066d3b8 commit c98b5d7

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

pycsw/core/pygeofilter_ext.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@
4545

4646

4747
class PycswFilterEvaluator(SQLAlchemyFilterEvaluator):
48-
def __init__(self, field_mapping=None, dbtype='sqlite', undefined_as_null=None):
48+
def __init__(self, field_mapping=None, dbtype='sqlite',
49+
undefined_as_null=None):
4950
super().__init__(field_mapping, undefined_as_null=undefined_as_null)
5051
self._pycsw_dbtype = dbtype
5152

@@ -85,9 +86,10 @@ def ilike(self, node, lhs):
8586
def to_filter(ast, dbtype, field_mapping=None):
8687
return PycswFilterEvaluator(field_mapping, dbtype).evaluate(ast)
8788

89+
8890
class PycswCSWFES11Parser(FES11Parser):
89-
# def __init__(self):
90-
# super().__init__()
91+
def parse(self, input_):
92+
return FES11Parser().parse(input_)
9193

9294
@fhandle('BBOX')
9395
def geometry_bbox(self, node: Element, lhs, rhs, crs=None):

pycsw/ogc/csw/csw2.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import os
3434

3535
from pygeofilter.parsers.ecql.parser import parse as ecql_parse
36-
from pygeofilter.parsers.fes.v11 import parse as fes1_parse
3736
from pycsw.core.pygeofilter_ext import PycswCSWFES11Parser
3837

3938
from pycsw.core.etree import etree
@@ -771,8 +770,9 @@ def getrecords(self):
771770
self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts)
772771
self.parent.kvp['constraint']['_dict'] = xml2dict(etree.tostring(doc), self.parent.context.namespaces)
773772
else:
773+
pc = PycswCSWFES11Parser()
774774
self.parent.kvp['constraint'] = {
775-
'ast': fes1_parse(tmp)
775+
'ast': pc.parse(tmp)
776776
}
777777
except Exception as err:
778778
errortext = \
@@ -1602,8 +1602,8 @@ def _parse_constraint(self, element):
16021602
self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts)
16031603
query['_dict'] = xml2dict(etree.tostring(tmp), self.parent.context.namespaces)
16041604
else:
1605-
#query['ast'] = PycswCSWFES11Parser().parse(etree.tostring(tmp))
1606-
query['ast'] = fes1_parse(etree.tostring(tmp))
1605+
pc = PycswCSWFES11Parser()
1606+
query['ast'] = pc.parse(tmp)
16071607
except Exception as err:
16081608
return 'Invalid Filter request: %s' % err
16091609

pycsw/ogc/csw/csw3.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@
3232
from time import time
3333

3434
from pygeofilter.parsers.ecql.parser import parse as ecql_parse
35-
from pygeofilter.parsers.fes.v11 import parse as fes1_parse
3635

3736
from pycsw.core.etree import etree
3837
from pycsw.ogc.csw.cql import cql2fes
3938
from pycsw import opensearch
4039
from pycsw.core import metadata, util
4140
from pycsw.core.formats.fmt_json import xml2dict
41+
from pycsw.core.pygeofilter_ext import PycswCSWFES11Parser
4242
from pycsw.ogc.fes import fes1, fes2
4343
import logging
4444

@@ -797,8 +797,9 @@ def getrecords(self):
797797
self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts)
798798
self.parent.kvp['constraint']['_dict'] = xml2dict(etree.tostring(doc), self.parent.context.namespaces)
799799
else:
800+
pc = PycswCSWFES11Parser()
800801
self.parent.kvp['constraint'] = {
801-
'ast': fes1_parse(etree.tostring(self.parent.kvp['constraint']))
802+
'ast': pc.parse(self.parent.kvp['constraint'])
802803
}
803804
except Exception as err:
804805
errortext = \
@@ -1672,7 +1673,8 @@ def _parse_constraint(self, element):
16721673
self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts)
16731674
query['_dict'] = xml2dict(etree.tostring(tmp), self.parent.context.namespaces)
16741675
else:
1675-
query['ast'] = fes1_parse(etree.tostring(tmp))
1676+
pc = PycswCSWFES11Parser()
1677+
query['ast'] = pc.parse(tmp)
16761678
except Exception as err:
16771679
return 'Invalid Filter request: %s' % err
16781680

0 commit comments

Comments
 (0)