ソースを参照

Fix exist method of vector and raster classes and fix the with statement when try to open a map that does not exist

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@56144 15284696-431f-4ddb-bdfa-cd5b030d7da7
Pietro Zambelli 12 年 前
コミット
077657ad29

+ 7 - 4
lib/python/pygrass/raster/abstract.py

@@ -188,8 +188,11 @@ class RasterAbstractBase(object):
             self.info = Info(self.name, self.mapset)
 
     def __enter__(self):
-        self.open('r')
-        return self
+        if self.exist():
+            self.open('r')
+            return self
+        else:
+            raise ValueError("Raster not found.")
 
     def __exit__(self, exc_type, exc_value, traceback):
         self.close()
@@ -303,8 +306,8 @@ class RasterAbstractBase(object):
         if self.name:
             if self.mapset == '':
                 mapset = functions.get_mapset_raster(self.name, self.mapset)
-                self.mapset = mapset
-                return True
+                self.mapset = mapset if mapset else ''
+                return True if mapset else False
             return bool(functions.get_mapset_raster(self.name, self.mapset))
         else:
             return False

+ 11 - 8
lib/python/pygrass/vector/abstract.py

@@ -91,8 +91,11 @@ class Info(object):
         self.layer = layer
 
     def __enter__(self):
-        self.open('r')
-        return self
+        if self.exist():
+            self.open('r')
+            return self
+        else:
+            raise ValueError('Vector not found.')
 
     def __exit__(self, exc_type, exc_value, traceback):
         self.close()
@@ -263,12 +266,12 @@ class Info(object):
 
     def exist(self):
         """Return if the Vector exists or not"""
-        if self._name:
-            self.mapset = functions.get_mapset_vector(self._name, self.mapset)
-        else:
-            return False
-        if self.mapset:
-            return True
+        if self.name:
+            if self.mapset == '':
+                mapset = functions.get_mapset_vector(self.name, self.mapset)
+                self.mapset = mapset if mapset else ''
+                return True if mapset else False
+            return bool(functions.get_mapset_vector(self.name, self.mapset))
         else:
             return False