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)
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")