def translate_from_scratch(request, source, target, title, aid, template_name="wt_articles/translate_form.html"): """ Loads a source article by provided article id (aid) and generates formsets to contain each sentence in the requested translation. """ sa_set = SourceArticle.objects.filter(id=aid) if len(sa_set) < 1: no_match = True return render_to_response(template_name, {"no_match": True}, context_instance=RequestContext(request)) article = sa_set[0] ss_list = article.sourcesentence_set.all() TranslatedSentenceSet = formset_factory(TranslatedSentenceMappingForm, extra=0) if request.method == "POST": formset = TranslatedSentenceSet(request.POST, request.FILES) if formset.is_valid(): ts_list = [] ta = TranslatedArticle() for form in formset.forms: ss = form.cleaned_data['source_sentence'] text = form.cleaned_data['text'] ts = TranslatedSentence( segment_id=ss.segment_id, source_sentence=ss, text=text, translated_by=request.user.username, translation_date=datetime.now(), language=target, best=True, ### TODO figure something better out end_of_paragraph=ss.end_of_paragraph) ts_list.append(ts) ta.article = ss.article ta.title = ss.article.title ta.timestamp = datetime.now() ta.language = target ta.save() for ts in ts_list: ts.save() ta.sentences = ts_list ta.save() return HttpResponseRedirect(ta.get_absolute_url()) else: initial_ss_set = [{'source_sentence': s} for s in ss_list] formset = TranslatedSentenceSet(initial=initial_ss_set) for form, s in zip(formset.forms, ss_list): form.fields['text'].label = s.text return render_to_response(template_name, { "formset": formset, "title": article.title, }, context_instance=RequestContext(request))
def translate_from_scratch(request, source, target, title, aid, template_name="wt_articles/translate_form.html"): """ Loads a source article by provided article id (aid) and generates formsets to contain each sentence in the requested translation. """ sa_set = SourceArticle.objects.filter(id=aid) if len(sa_set) < 1: return render_to_response(template_name, {"no_match": True}, context_instance=RequestContext(request)) article = sa_set[0] ss_list = article.sourcesentence_set.all() TranslatedSentenceSet = formset_factory(TranslatedSentenceMappingForm, extra=0) if request.method == "POST": formset = TranslatedSentenceSet(request.POST, request.FILES) if formset.is_valid(): ts_list = [] trans_art = TranslatedArticle() for form in formset.forms: src_sent = form.cleaned_data['source_sentence'] text = form.cleaned_data['text'] trans_sent = TranslatedSentence( segment_id=src_sent.segment_id, source_sentence=src_sent, text=text, translated_by=request.user.username, translation_date=datetime.now(), language=target, best=True, end_of_paragraph=src_sent.end_of_paragraph) ts_list.append(trans_sent) trans_art.article = src_sent.article trans_art.title = src_sent.article.title trans_art.timestamp = datetime.now() trans_art.language = target trans_art.save() for trans_sent in ts_list: trans_sent.save() trans_art.sentences = ts_list trans_art.save() return HttpResponseRedirect(trans_art.get_absolute_url()) else: initial_ss_set = [{'source_sentence': s} for s in ss_list] formset = TranslatedSentenceSet(initial=initial_ss_set) for form, sent in zip(formset.forms, ss_list): form.fields['text'].label = sent.text return render_to_response(template_name, { "formset": formset, "title": article.title, }, context_instance=RequestContext(request))
def translate_from_scratch(request, source, target, title, aid, template_name="wt_articles/translate_form.html"): """ aid in this context is the source article id """ sa_set = SourceArticle.objects.filter(id=aid) if len(sa_set) < 1: no_match = True return render_to_response(template_name, {"no_match": True}, context_instance=RequestContext(request)) article = sa_set[0] ss_list = article.sourcesentence_set.all() TranslatedSentenceSet = formset_factory(TranslatedSentenceMappingForm, extra=0) if request.method == "POST": formset = TranslatedSentenceSet(request.POST, request.FILES) if formset.is_valid(): ts_list = [] ta = TranslatedArticle() for form in formset.forms: ss = form.cleaned_data['source_sentence'] text = form.cleaned_data['text'] ts = TranslatedSentence(segment_id=ss.segment_id, source_sentence=ss, text=text, translated_by=request.user.username, translation_date=datetime.now(), language=target, best=True, ### TODO figure something better out end_of_paragraph=ss.end_of_paragraph) ts_list.append(ts) ta.article = ss.article ta.title = ss.article.title ta.timestamp = datetime.now() ta.language = target ta.save() for ts in ts_list: ts.save() ta.sentences = ts_list ta.save() return HttpResponseRedirect(ta.get_absolute_url()) else: initial_ss_set = [{'source_sentence': s} for s in ss_list] formset = TranslatedSentenceSet(initial=initial_ss_set) for form,s in zip(formset.forms,ss_list): form.fields['text'].label = s.text return render_to_response(template_name, { "formset": formset, "title": article.title, }, context_instance=RequestContext(request))
def handle_noargs(self, **options): t = apertium_translator() reqs = TranslationRequest.objects.filter(translator=APERTIUM) completed_reqs = list() ta_sentences = list() for req in reqs: req_sentences = req.article.sourcesentence_set.all() translated_title = t.translate(req.article.title, source=req.article.language, target=req.target_language) for s in req_sentences: translated = t.translate(s.text, source=s.article.language, target=req.target_language) ts = TranslatedSentence(segment_id=s.segment_id, source_sentence=s, text=translated, translated_by=t.name, translation_date=datetime.now(), language=req.target_language, best=True, end_of_paragraph=s.end_of_paragraph) ta_sentences.append(ts) ta = TranslatedArticle() ta.article = req.article ta.title = translated_title ta.timestamp = datetime.now() ta.language = req.target_language try: ta.save() for ts in ta_sentences: ts.save() ta.sentences = ta_sentences ta.save() completed_reqs.append(req) for cr in completed_reqs: cr.delete() except Exception as e: print type(e) print e.args ta.delete() for ts in ta_sentences: ts.delete() raise