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. apiURL = self.config["api_base_url"] + \
  11. "/memoqservices/resource?wsdl"
  12. self.client = Client(apiURL)
  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 get_type(self):
  19. """Returns resource type."""
  20. return self.__type
  21. def valid_type(self, value):
  22. """Returns true if type is valid."""
  23. if value in self.types:
  24. return True
  25. return False
  26. def set_type(self, value):
  27. """Sets resource type."""
  28. if self.valid_type(value):
  29. self.__type = self.types[value]
  30. def __repr__(self):
  31. if self.info != None:
  32. return "{} - {} ({})".format(self.info.Name, self.info.Guid, self.get_type())
  33. else:
  34. return "No resource!"
  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))