Selaa lähdekoodia

FES: Cut off the root <Filter> tag

Michal Šrédl 14 vuotta sitten
vanhempi
commit
c8bcd6f5ad
1 muutettua tiedostoa jossa 18 lisäystä ja 4 poistoa
  1. 18 4
      OWS.py

+ 18 - 4
OWS.py

@@ -4,6 +4,7 @@
 import urlparse
 import urllib
 from lxml import objectify
+from lxml import etree
 import os,sys
 import tempfile
 import logging
@@ -281,11 +282,24 @@ class OWS:
     def setFilter(self,mapobj,request):
         """ Set WFS filter encoding 
         """
-        logging.debug("Setting filter for layer %s to %s" % (request.getValueByName("layers"),request.getValueByName("fes")))
+        # get the layer
         layerobj = mapobj.getLayerByName(request.getValueByName("layers"))
-        layerobj.setMetaData("wfs_filter",request.getValueByName("fes"))
-        # layerobj.metadata.get("wfs_filter") is still fine
-        
+
+        # get the filter
+        fes = request.getValueByName("fes")
+        logging.debug("FES received from HSLayers: %s" % fes)
+
+        # cut off the opening and closing <Filter> tag
+        # - this is needed for mapserver
+        root = etree.XML(fes)
+        msFilter = ""
+        for child in root:
+            msFilter += etree.tostring(child)
+        logging.debug("Setting the filter %s" % msFilter)
+
+        # set the filter
+        layerobj.setMetaData("wfs_filter",msFilter)
+
 
 def getService():