workspace.py 927 B

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