Beispiel #1
0
 def fetch_translations(self):
     response = self.request(self.url + "requests/?token={0}".format(self.token))
     if response[0].status == 200:
         etree = utils.element_tree(response)
         requests = etree.findall("resource")
         completed_requests = (r for r in requests if eval(r.findtext("ready")))
         in_progress_requests = set(
             [tr.external_id for tr in TranslationRequest.objects.filter(status=STATUS_IN_PROGRESS)]
         )
         for request in completed_requests:
             shortname = request.findtext("shortname")
             if shortname in in_progress_requests:
                 trans_request = TranslationRequest.objects.get_by_external_id(shortname)
                 response = self.request(self.url + "results/{0}/?token={1}".format(shortname, self.token))
                 etree = utils.element_tree(response)
                 result = etree.findtext("result")
                 result = re.sub("### (\[\[YAHOO_SPLITTER\]\]\n)?(### )?", "", result)
                 result = re.sub("(<[A-Z]\[)?(\]>)?", "", result)
                 result_sentences = [sentence.strip() for sentence in utils.clean_string(result.strip()).split("\n")]
                 store = Store.objects.get(translation_project=trans_request.translation_project)
                 units = store.unit_set.all()
                 if not len(units) == len(result_sentences):
                     trans_request.status = STATUS_ERROR
                     print "ERROR!"
                 else:
                     for i in range(len(units)):
                         units[i].target = result_sentences[i]
                         units[i].state = pootle_store.util.FUZZY
                         units[i].save()
                     trans_request.status = STATUS_FINISHED
                 trans_request.save()
     else:
         raise Exception(response[0].reason)
Beispiel #2
0
 def fetch_workers(self):
     url = self.url + "workers/?token=%s" % self.token
     response = self.request(url)
     etree = utils.element_tree(response)
     return etree.findall("resource")