workspace.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import os
  2. import json
  3. from concert.networking.base import get_tango_device
  4. class Workspace(object):
  5. # FIXME: we should actually get absolute paths
  6. ROOT = os.path.expanduser('~')
  7. def __init__(self, penny, name):
  8. self.penny = penny
  9. self.name = name
  10. @property
  11. def path(self):
  12. return os.path.join(self.ROOT, self.penny.device.GetPath(self.name))
  13. def close(self):
  14. self.penny.close(self.name)
  15. def free(self):
  16. self.penny.free(self.name)
  17. def delete(self):
  18. self.penny.delete(self.name)
  19. def __enter__(self):
  20. return self
  21. def __exit__(self, *exc):
  22. self.close()
  23. class Penny(object):
  24. def __init__(self, uri='anka/astor/penny'):
  25. self.device = get_tango_device(uri)
  26. @property
  27. def workspaces(self):
  28. return json.loads(self.device.WorkspaceList).keys()
  29. def create(self, name):
  30. real = self.device.Create(name)
  31. return Workspace(self, real)
  32. def close(self, name):
  33. self.device.Close(name)
  34. def free(self, name):
  35. self.device.Free(name)
  36. def delete(self, name):
  37. self.device.Delete(name)