errors.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # -*- coding: utf-8 -*-
  2. from functools import wraps
  3. from grass.exceptions import (FlagError, ParameterError, DBError,
  4. GrassError, OpenError)
  5. from grass.pygrass.messages import get_msgr
  6. import grass.lib.gis as libgis
  7. def must_be_open(method):
  8. @wraps(method)
  9. def wrapper(self, *args, **kargs):
  10. if self.is_open():
  11. return method(self, *args, **kargs)
  12. else:
  13. msgr = get_msgr()
  14. msgr.warning(_("The map is close!"))
  15. return wrapper
  16. def mapinfo_must_be_set(method):
  17. @wraps(method)
  18. def wrapper(self, *args, **kargs):
  19. if self.c_mapinfo:
  20. return method(self, *args, **kargs)
  21. else:
  22. raise GrassError(_("The self.c_mapinfo pointer must be "\
  23. "correctly initiated"))
  24. return wrapper
  25. def must_be_in_current_mapset(method):
  26. @wraps(method)
  27. def wrapper(self, *args, **kargs):
  28. if self.mapset == libgis.G_mapset().decode():
  29. return method(self, *args, **kargs)
  30. else:
  31. raise GrassError(_("Map <{}> not found in current mapset").format(
  32. self.name))
  33. return wrapper