memoQResource.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. from suds.client import Client
  2. import memoQFile
  3. import json
  4. class MemoQResource(object):
  5. """Client for memoQ Light Resource API."""
  6. def __init__(self):
  7. with open("config.json") as json_file:
  8. self.config = json.load(json_file)
  9. if self.config["api_base_url"] != "":
  10. api_url = self.config["api_base_url"] + \
  11. "/memoqservices/resource?wsdl"
  12. self.client = Client(api_url)
  13. self.types = self.client.factory.create(
  14. '{http://kilgray.com/memoqservices/2007}ResourceType')
  15. self.__type = None
  16. self.info = None
  17. def __repr__(self):
  18. if self.info != None:
  19. return "{} - {} ({})".format(self.info.Name, self.info.Guid, self.get_type())
  20. else:
  21. return "No resource!"
  22. def get_guid(self):
  23. """Returns resource guid."""
  24. if self.info != None:
  25. return self.info.Guid
  26. def get_type(self):
  27. """Returns resource type."""
  28. return self.__type
  29. def set_type(self, value):
  30. """Sets resource type."""
  31. if self.valid_type(value):
  32. self.__type = self.types[value]
  33. def valid_type(self, value):
  34. """Returns true if type is valid."""
  35. if value in self.types:
  36. return True
  37. return False
  38. def set_active_resource(self, guid, resource_type):
  39. """Populates info basing on resource type and guid."""
  40. if guid != None and self.valid_type(resource_type):
  41. try:
  42. info = self.client.service.GetResourceInfo(
  43. self.types[resource_type], guid)
  44. if info != None:
  45. self.info = info
  46. self.set_type(resource_type)
  47. except Exception:
  48. pass
  49. def get_resources_of_type(self, resource_type):
  50. """Returns all resources of given type from memoQ server."""
  51. if self.valid_type(resource_type):
  52. return self.client.service.ListResources(resource_type)
  53. def get_all_resources(self):
  54. """Returns all resources from memoQ server."""
  55. resources = []
  56. for name, value in self.types:
  57. for resource in self.get_resources_of_type(value):
  58. resources.extend([(value, x) for x in resource[1]])
  59. return resources
  60. def download_resource(self, path):
  61. """Downloads active resource to given path. Returns path to downloaded file."""
  62. if self.get_type() != None and self.get_guid() != None:
  63. file_client = memoQFile.MemoQFile()
  64. return file_client.download_file(
  65. path, self.client.service.ExportResource(self.get_type(), self.get_guid()))