memoQResource.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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.guid = None
  16. self.__type = None
  17. self.info = None
  18. def __repr__(self):
  19. if self.info != None:
  20. return "{} - {} ({})".format(self.info.Name, self.info.Guid, self.get_type())
  21. else:
  22. return "No resource!"
  23. def get_type(self):
  24. """Returns resource type."""
  25. return self.__type
  26. def valid_type(self, value):
  27. """Returns true if type is valid."""
  28. if value in self.types:
  29. return True
  30. return False
  31. def set_type(self, value):
  32. """Sets resource type."""
  33. if self.valid_type(value):
  34. self.__type = self.types[value]
  35. def set_active_resource(self, guid=None, resource_type=None):
  36. """Populates info basing on resource type and guid."""
  37. if resource_type != None and guid != None:
  38. self.set_type(resource_type)
  39. self.guid = guid
  40. if self.guid != None and self.get_type() != None:
  41. self.info = self.client.service.GetResourceInfo(
  42. self.get_type(), self.guid)
  43. def get_resources_of_type(self, resource_type):
  44. """Returns all resources of given type from memoQ server."""
  45. if self.valid_type(resource_type):
  46. return self.client.service.ListResources(resource_type)
  47. def get_all_resources(self):
  48. """Returns all resources from memoQ server."""
  49. resources = []
  50. for name, value in self.types:
  51. for resource in self.get_resources_of_type(value):
  52. resources.extend([(value, x) for x in resource[1]])
  53. return resources
  54. def download_resource(self, path):
  55. """Downloads active resource to given path. Returns path to downloaded file."""
  56. if self.get_type() != None and self.guid != None:
  57. file_client = memoQFile.MemoQFile()
  58. return file_client.download_file(
  59. path, self.client.service.ExportResource(self.get_type(), self.guid))