Browse Source

Cleaning up and extending

Piotr Czajkowski 7 years ago
parent
commit
cca16d9743
7 changed files with 101 additions and 37 deletions
  1. 2 2
      memoQFile.py
  2. 39 22
      memoQProject.py
  3. 52 7
      memoQProjectTest.py
  4. 2 2
      memoQResource.py
  5. 2 2
      memoQSecurity.py
  6. 2 2
      memoQTM.py
  7. 2 0
      testFiles/testConfig.json

+ 2 - 2
memoQFile.py

@@ -12,9 +12,9 @@ class MemoQFile(object):
             self.config = json.load(json_file)
 
         if self.config["api_base_url"] != "":
-            apiURL = self.config["api_base_url"] + \
+            api_url = self.config["api_base_url"] + \
                 "/memoqservices/filemanager?wdsl"
-            self.client = Client(apiURL)
+            self.client = Client(api_url)
 
     def download_file(self, path, guid):
         """Downloads file of given guid from memoQ Server to specified path. Returns full path of downloaded file."""

+ 39 - 22
memoQProject.py

@@ -38,8 +38,8 @@ class Project(object):
         if projectInfo != None:
             self.name = projectInfo['Name']
             self.domain = projectInfo['Domain']
-            self.languages.target.extend(
-                [x for x in projectInfo['TargetLanguageCodes'].string])
+            self.languages.target = [
+                x for x in projectInfo['TargetLanguageCodes'].string]
             self.languages.source = projectInfo['SourceLanguageCode']
             self.deadline = projectInfo['Deadline']
 
@@ -52,9 +52,9 @@ class MemoQProject(object):
             self.config = json.load(json_file)
 
         if self.config["api_base_url"] != "":
-            apiURL = self.config["api_base_url"] + \
+            api_url = self.config["api_base_url"] + \
                 "/memoqservices/ServerProject?wsdl"
-            self.client = Client(apiURL)
+            self.client = Client(api_url)
 
         self.project = Project()
 
@@ -87,24 +87,33 @@ class MemoQProject(object):
             self.project.set_project_guid(None)
 
     def template_project_options(self, template_guid):
-        """Needs guid of memoQ project template.
+        """Needs guid of memoQ project template. project.languages.source must be set.
         Returns options needed for creating memoQ project from template."""
         if self.project.languages.source != None:
             options = self.client.factory.create(
                 '{http://kilgray.com/memoqservices/2007}TemplateBasedProjectCreateInfo')
             options.TemplateGuid = template_guid
             options.Name = self.project.name
-            options.SourceLanguageCode = self.project.languages.source
+
+            if self.project.languages.source != "":
+                options.SourceLanguageCode = self.project.languages.source
+            else:
+                print("project.languages.source must be set!")
+                return None
+
             options.Domain = self.project.domain
             options.CreatorUser = self.config["creator_guid"]
             return options
         else:
             return None
 
-    def create_project_from_template(self, templateGuid):
-        """Creates memoQ project from given project template.
+    def create_project_from_template(self, template_guid=None, options=None):
+        """Creates memoQ project using predefined options when
+        provided with template_guid or using provided options.
         Sets new project as active project on success."""
-        options = self.template_project_options(templateGuid)
+        if template_guid != None:
+            options = self.template_project_options(template_guid)
+
         if options != None:
             result = self.client.service.CreateProjectFromTemplate(options)
             if result.ResultStatus == "Success":
@@ -113,13 +122,24 @@ class MemoQProject(object):
                 self.project.set_project_guid(None)
 
     def project_options(self):
-        """Returns options needed for creating memoQ project."""
+        """Returns options needed for creating memoQ project. project.languages.source and project.languages.target must be set."""
         if len(self.project.languages.target) and self.project.languages.source != None:
             options = self.client.factory.create(
                 '{http://kilgray.com/memoqservices/2007}ServerProjectDesktopDocsCreateInfo')
             options.Name = self.project.name
-            options.SourceLanguageCode = self.project.languages.source
-            options.TargetLanguageCodes.string = self.project.languages.target
+
+            if self.project.languages.source != "":
+                options.SourceLanguageCode = self.project.languages.source
+            else:
+                print("project.languages.source must be set!")
+                return None
+
+            if len(self.project.languages.target):
+                options.TargetLanguageCodes.string = self.project.languages.target
+            else:
+                print("project.languages.target must be set!")
+                return None
+
             options.Deadline = self.project.deadline
             options.RecordVersionHistory = True
             options.CreatorUser = self.config["creator_guid"]
@@ -131,9 +151,12 @@ class MemoQProject(object):
         else:
             return None
 
-    def create_project(self):
-        """Creates memoQ project. Sets new project as active project on success."""
-        options = self.project_options()
+    def create_project(self, options=None):
+        """Creates memoQ project using predefined or provided options.
+        Sets new project as active project on success."""
+        if options == None:
+            options = self.project_options()
+
         if options != None:
             project_guid = self.client.service.CreateProject2(options)
             if project_guid != None:
@@ -192,9 +215,6 @@ class MemoQProject(object):
         if self.project.get_project_guid() == None:
             return "No project!"
 
-        if self.project.documents == None:
-            self.get_project_documents()
-
         export_results = []
         for guid in self.document_guids():
             export_results.append(
@@ -214,9 +234,6 @@ class MemoQProject(object):
         if self.project.get_project_guid() == None:
             return "No project!"
 
-        if self.documents == None:
-            self.get_project_documents()
-
         options = self.client.factory.create(
             '{http://kilgray.com/memoqservices/2007}DocumentExportOptions')
         options.CopySourceToEmptyTarget = True
@@ -280,7 +297,7 @@ class MemoQProject(object):
                 with open(output_file, 'wb') as target:
                     target.write(b64decode(stat.ResultData))
                     filename = '{}_{}.csv'.format(
-                    stat.TargetLangCode, self.project.name)
+                        stat.TargetLangCode, self.project.name)
                 output_file = os.path.join(path, filename)
                 with open(output_file, 'wb') as target:
                     # Statistics are base64 and utf-16 encoded, so we need to

+ 52 - 7
memoQProjectTest.py

@@ -28,20 +28,23 @@ class MemoQProjectTest(unittest.TestCase):
         """ Test for get_project_by_guid method."""
         test = memoQProject.MemoQProject()
 
-        valid_guid = "27e14066-0b73-44fc-a5ea-a828fed42e7f"
-        wrong_guid = "00000000-0000-0000-0000-000000000001"
-
-        test.get_project_by_guid(valid_guid)
+        test.get_project_by_guid(self.config["valid_project_guid"])
         self.assertEqual(test.project.get_project_guid(),
-                         valid_guid, "Guids don't match!")
+                         self.config["valid_project_guid"], "Guids don't match!")
 
-        test.get_project_by_guid(wrong_guid)
+        test.get_project_by_guid(self.config["wrong_project_guid"])
         self.assertEqual(test.project.get_project_guid(),
                          None, "Guid should be none!")
 
     def test_template_project_options(self):
         """ Test for template_project_options method."""
         test = memoQProject.MemoQProject()
+
+        options = test.template_project_options(
+            self.config["project_template_guid"])
+        self.assertIsNone(
+            options, "Options should be None if source language not set!")
+
         test.project.languages.source = self.config["source_language"]
 
         options = test.template_project_options(
@@ -69,17 +72,41 @@ class MemoQProjectTest(unittest.TestCase):
         test = memoQProject.MemoQProject()
         test.project.languages.source = self.config["source_language"]
 
-        test.create_project_from_template(self.config["project_template_guid"])
+        test.create_project_from_template(
+            template_guid=self.config["project_template_guid"])
+
+        self.assertNotEqual(test.project.get_project_guid(),
+                            None, "Guid shouldn't be none!")
+
+        test.delete()
+
+        # Testing override
+        options = test.template_project_options(
+            self.config["project_template_guid"])
+        options.Name += "_override"
+        options.Domain = "override"
 
+        test.create_project_from_template(options=options)
         self.assertNotEqual(test.project.get_project_guid(),
                             None, "Guid shouldn't be none!")
+        self.assertEqual(options.Domain, test.project.domain)
 
         test.delete()
 
     def test_project_options(self):
         """ Test for project_options method."""
         test = memoQProject.MemoQProject()
+
+        options = test.project_options()
+        self.assertIsNone(
+            options, "Options should be None if source language not set!")
+
         test.project.languages.source = self.config["source_language"]
+
+        options = test.project_options()
+        self.assertIsNone(
+            options, "Options should be None if target languages not set!")
+
         test.project.languages.target = self.config["target_languages"]
 
         options = test.project_options()
@@ -117,6 +144,18 @@ class MemoQProjectTest(unittest.TestCase):
 
         test.delete()
 
+        # Testing override
+        options = test.project_options()
+        options.Name += "_override"
+        options.Domain = "override"
+
+        test.create_project(options=options)
+        self.assertNotEqual(test.project.get_project_guid(),
+                            None, "Guid shouldn't be none!")
+        self.assertEqual(options.Domain, test.project.domain)
+
+        test.delete()
+
     def test_import_document(self):
         """ Test for import_document method."""
         test = memoQProject.MemoQProject()
@@ -171,7 +210,10 @@ class MemoQProjectTest(unittest.TestCase):
                          filename, "Name of document doesn't match test filename!")
 
         export_result = test.export_documents(".")
+        filepath = os.path.join(".", filename)
         self.assertTrue(export_result, "Export result should be true!")
+        self.assertTrue(os.path.isfile(filepath), "File should exist!")
+        os.remove(filepath)
 
         test.delete()
 
@@ -194,7 +236,10 @@ class MemoQProjectTest(unittest.TestCase):
                          filename, "Name of document doesn't match test filename!")
 
         export_result = test.export_documents2(".")
+        filepath = os.path.join(".", filename)
         self.assertTrue(export_result, "Export result should be true!")
+        self.assertTrue(os.path.isfile(filepath), "File should exist!")
+        os.remove(filepath)
 
         test.delete()
 

+ 2 - 2
memoQResource.py

@@ -11,9 +11,9 @@ class MemoQResource(object):
             self.config = json.load(json_file)
 
         if self.config["api_base_url"] != "":
-            apiURL = self.config["api_base_url"] + \
+            api_url = self.config["api_base_url"] + \
                 "/memoqservices/resource?wsdl"
-            self.client = Client(apiURL)
+            self.client = Client(api_url)
 
         self.types = self.client.factory.create(
             '{http://kilgray.com/memoqservices/2007}ResourceType')

+ 2 - 2
memoQSecurity.py

@@ -47,9 +47,9 @@ class MemoQSecurity(object):
             self.config = json.load(json_file)
 
         if self.config["api_base_url"] != "":
-            apiURL = self.config["api_base_url"] + \
+            api_url = self.config["api_base_url"] + \
                 "/memoqservices/security?wsdl"
-            self.client = Client(apiURL)
+            self.client = Client(api_url)
 
         self.user = User()
         self.users = []

+ 2 - 2
memoQTM.py

@@ -31,8 +31,8 @@ class MemoQTM(object):
             self.config = json.load(json_file)
 
         if self.config["api_base_url"] != "":
-            apiURL = self.config["api_base_url"] + "/memoqservices/tm?wsdl"
-            self.client = Client(apiURL)
+            api_url = self.config["api_base_url"] + "/memoqservices/tm?wsdl"
+            self.client = Client(api_url)
 
         self.tm = TM()
 

+ 2 - 0
testFiles/testConfig.json

@@ -3,6 +3,8 @@
     "target_languages" : ["ger-DE"],
     "valid_domain" : "Python",
     "wrong_domain" : "dsfdsfdsfew",
+    "valid_project_guid" : "27e14066-0b73-44fc-a5ea-a828fed42e7f",
+    "wrong_project_guid" : "00000000-0000-0000-0000-000000000001",
     "project_template_guid" : "6ec5df0f-4dc4-4f91-b6b4-c7927cc4dfd3",
     "creator_guid" : "00000000-0000-0000-0001-000000000001",
     "test_file_path" : "testFiles/test.txt",