Переглянути джерело

r.in.wms: fix importing ParseError (patch by Stepan Turek)

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@54662 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 12 роки тому
батько
коміт
80df6440d2
2 змінених файлів з 28 додано та 21 видалено
  1. 23 19
      scripts/r.in.wms/wms_cap_parsers.py
  2. 5 2
      scripts/r.in.wms/wms_drv.py

+ 23 - 19
scripts/r.in.wms/wms_cap_parsers.py

@@ -16,6 +16,10 @@ This program is free software under the GNU General Public License
 
 @author Stepan Turek <stepan.turek seznam.cz> (Mentor: Martin Landa)
 """
+try:
+    from xml.etree.ElementTree import ParseError
+except ImportError: # < Python 2.7
+    from xml.parsers.expat import ExpatError as ParseError
 
 import xml.etree.ElementTree as etree
 import grass.script as grass 
@@ -26,13 +30,13 @@ class BaseCapabilitiesTree(etree.ElementTree):
         """
         try:
             etree.ElementTree.__init__(self, file = cap_file)
-        except etree.ParseError:
-            raise etree.ParseError(_("Unable to parse XML file"))
+        except ParseError:
+            raise ParseError(_("Unable to parse XML file"))
         except IOError as error:
-            raise etree.ParseError(_("Unabble to open XML file '%s'.\n%s\n" % (cap_file, error)))
+            raise ParseError(_("Unable to open XML file '%s'.\n%s\n" % (cap_file, error)))
 
         if self.getroot() is None:
-            raise etree.ParseError(_("Root node was not found.")) 
+            raise ParseError(_("Root node was not found.")) 
         
 class WMSXMLNsHandler:
     def __init__(self, caps):
@@ -45,8 +49,8 @@ class WMSXMLNsHandler:
         elif caps.getroot().find(self.namespace + "Service") is not None:
             self.use_ns = True
         else:
-            raise etree.ParseError(_("Unable to parse capabilities file.\n\
-                                      Tag <%s> was not found.") % "Service")
+            raise ParseError(_("Unable to parse capabilities file.\n\
+                                Tag <%s> was not found.") % "Service")
     
     def Ns(self, tag_name):
         """!Add namespace to tag_name according to version
@@ -74,8 +78,8 @@ class WMSCapabilitiesTree(BaseCapabilitiesTree):
         grass.debug('Checking WMS capabilities tree.', 4)
         
         if not "version" in self.getroot().attrib:
-            raise etree.ParseError(_("Missing version attribute root node "
-                                     "in Capabilities XML file"))
+            raise ParseError(_("Missing version attribute root node "
+                                "in Capabilities XML file"))
         else:
             wms_version = self.getroot().attrib["version"]
         
@@ -86,7 +90,7 @@ class WMSCapabilitiesTree(BaseCapabilitiesTree):
 
         if force_version is not None:
             if wms_version != force_version:
-                raise etree.ParseError(_("WMS server does not support '%s' version.") % wms_version)
+                raise ParseError(_("WMS server does not support '%s' version.") % wms_version)
 
         capability = self._find(self.getroot(), "Capability")
         root_layer = self._find(capability, "Layer")
@@ -220,8 +224,8 @@ class WMSCapabilitiesTree(BaseCapabilitiesTree):
         res = etreeElement.find(self.xml_ns.Ns(tag))
 
         if res is None:
-            raise etree.ParseError(_("Unable to parse capabilities file. \n\
-                                      Tag <%s> was not found.") % tag)
+            raise ParseError(_("Unable to parse capabilities file. \n\
+                                Tag <%s> was not found.") % tag)
 
         return res
 
@@ -232,8 +236,8 @@ class WMSCapabilitiesTree(BaseCapabilitiesTree):
         res = etreeElement.findall(self.xml_ns.Ns(tag))
 
         if not res:
-            raise etree.ParseError(_("Unable to parse capabilities file. \n\
-                                      Tag <%s> was not found.") % tag)
+            raise ParseError(_("Unable to parse capabilities file. \n\
+                                Tag <%s> was not found.") % tag)
 
         return res
 
@@ -462,8 +466,8 @@ class WMTSCapabilitiesTree(BaseCapabilitiesTree):
             res = etreeElement.find(ns(tag))
 
         if res is None:
-            raise etree.ParseError(_("Unable to parse capabilities file. \n\
-                                      Tag '%s' was not found.") % tag)
+            raise ParseError(_("Unable to parse capabilities file. \n\
+                                Tag '%s' was not found.") % tag)
 
         return res
 
@@ -477,8 +481,8 @@ class WMTSCapabilitiesTree(BaseCapabilitiesTree):
             res = etreeElement.findall(ns(tag))
 
         if not res:
-            raise etree.ParseError(_("Unable to parse capabilities file. \n\
-                                      Tag '%s' was not found.") % tag)
+            raise ParseError(_("Unable to parse capabilities file. \n\
+                                Tag '%s' was not found.") % tag)
 
         return res
 
@@ -531,8 +535,8 @@ class OnEarthCapabilitiesTree(BaseCapabilitiesTree):
         res = etreeElement.find(tag)
 
         if res is None:
-            raise  etree.ParseError(_("Unable to parse tile service file. \n\
-                                       Tag <%s> was not found.") % tag)
+            raise  ParseError(_("Unable to parse tile service file. \n\
+                                 Tag <%s> was not found.") % tag)
 
         return res
 

+ 5 - 2
scripts/r.in.wms/wms_drv.py

@@ -30,8 +30,11 @@ Numeric.arrayrange = Numeric.arange
 from math import pi, floor
 from urllib2 import HTTPError
 from httplib import HTTPException
-from xml.etree.ElementTree import ParseError
-
+try:
+    from xml.etree.ElementTree import ParseError
+except ImportError: # < Python 2.7
+    from xml.parsers.expat import ExpatError as ParseError
+    
 from wms_base import WMSBase
 
 from wms_cap_parsers import WMTSCapabilitiesTree, OnEarthCapabilitiesTree