def edit_blog_entry(request, id=None): if id is None: raise entry = BlogEntryContent.objects.get(pk=id) if request.method == "POST": form = BlogContentForm(request.POST, instance=entry) if form.is_valid(): instance = form.save() messages.success(request, "%r updated." % instance) return http.HttpResponseRedirect(instance.get_absolute_url()) else: form = BlogContentForm(instance=entry) return { "title": _("Edit a blog entry"), "abort_url": entry.get_absolute_url(), "form": form, }
def edit_blog_entry(request, id=None): if id is None: raise entry = BlogEntryContent.objects.get(pk=id) if request.method == "POST": if "cancel" in request.POST: messages.info(request, _("Edit blog entry aborted, ok.")) url = entry.get_absolute_url() return http.HttpResponseRedirect(url) form = BlogContentForm(request.POST, instance=entry) if form.is_valid(): instance = form.save() messages.success(request, "%r updated." % instance) return http.HttpResponseRedirect(instance.get_absolute_url()) else: form = BlogContentForm(instance=entry) return { "title": _("Edit a blog entry"), "form": form, }
def translate_blog_entry(request, id=None): if id is None: raise source_entry = BlogEntryContent.objects.get(pk=id) absolute_url = source_entry.get_absolute_url() # select the destination language result = select_language(request, absolute_url, source_entry.language, source_entry.headline) if isinstance(result, Language): # Language was selected or they exit only one other language dest_language = result elif isinstance(result, dict): # template context returned -> render language select form return result elif isinstance(result, http.HttpResponse): # e.g. error return result else: raise RuntimeError() # Should never happen context = { "title": _("Translate a blog entry"), "template_name": "blog/translate_blog_entry.html", "abort_url": absolute_url, } try: dest_entry = BlogEntryContent.objects.get(entry=source_entry.entry, language=dest_language) except BlogEntryContent.DoesNotExist: dest_entry = None dest_initial = { "entry": source_entry.entry, "language":dest_language, "markup": source_entry.markup, "is_public": source_entry.is_public, } if request.method == "POST": source_form = BlogContentForm(request.POST, prefix="source", instance=source_entry) if dest_entry is None: dest_form = BlogContentForm(request.POST, prefix="dest", initial=dest_initial) else: dest_form = BlogContentForm(request.POST, prefix="dest", instance=dest_entry) if "autotranslate" in request.POST: if source_form.is_valid(): dest_form, filled_fields, errors = prefill( source_form, dest_form, source_entry.language, dest_language, only_fields=("headline", "content"), #debug=True, ) if filled_fields: messages.success(request, "These fields are translated with google: %s" % ", ".join(filled_fields)) else: messages.info(request, "No fields translated with google, because all fields have been a translation.") if errors: for error in errors: messages.error(request, error) else: if source_form.is_valid() and dest_form.is_valid(): # All forms are valid -> Save all. source_form.save() dest_entry2 = dest_form.save(commit=False) dest_entry2.entry = source_entry.entry dest_entry2.save() if dest_entry is None: messages.success(request, "All saved. New entry %r created." % dest_entry2) else: messages.success(request, "All saved.") return http.HttpResponseRedirect(dest_entry2.get_absolute_url()) else: source_form = BlogContentForm(prefix="source", instance=source_entry) if dest_entry is None: dest_form = BlogContentForm(prefix="dest", initial=dest_initial) else: dest_form = BlogContentForm(prefix="dest", instance=dest_entry) source_fields = [] dest_fields = [] line_fields = [] for source_field, dest_field in zip(source_form, dest_form): assert source_field.name == dest_field.name if source_field.name in ("content", "language", "markup"): # Fields witch displayed side by side. source_fields.append(source_field) dest_fields.append(dest_field) else: # Fields witch renders alternating one below the other. source_field.language = source_entry.language line_fields.append(source_field) dest_field.language = dest_language line_fields.append(dest_field) if source_form.errors or dest_form.errors: has_errors = True else: has_errors = False context.update({ "source_entry": source_entry, "dest_language": dest_language, "source_form": source_form, "dest_form": dest_form, "all_forms": [source_form, dest_form], "has_errors": has_errors, "source_fields": source_fields, "dest_fields": dest_fields, "line_fields": line_fields, }) return context
def translate_blog_entry(request, id=None): if id is None: raise source_entry = BlogEntryContent.objects.get(pk=id) absolute_url = source_entry.get_absolute_url() # select the destination language result = select_language(request, absolute_url, source_entry.language, source_entry.headline) if isinstance(result, Language): # Language was selected or they exit only one other language dest_language = result elif isinstance(result, dict): # template context returned -> render language select form return result elif isinstance(result, http.HttpResponse): # e.g. error return result else: raise RuntimeError() # Should never happen context = { "title": _("Translate a blog entry"), "template_name": "blog/translate_blog_entry.html", "abort_url": absolute_url, } try: dest_entry = BlogEntryContent.objects.get(entry=source_entry.entry, language=dest_language) except BlogEntryContent.DoesNotExist: dest_entry = None dest_initial = { "entry": source_entry.entry, "language": dest_language, "markup": source_entry.markup, "is_public": source_entry.is_public, } if request.method == "POST": source_form = BlogContentForm(request.POST, prefix="source", instance=source_entry) if dest_entry is None: dest_form = BlogContentForm(request.POST, prefix="dest", initial=dest_initial) else: dest_form = BlogContentForm(request.POST, prefix="dest", instance=dest_entry) if "autotranslate" in request.POST: raise NotImplementedError("TODO: Must be reimplemented!") # if source_form.is_valid(): # dest_form, filled_fields, errors = prefill( # source_form, dest_form, # source_entry.language, dest_language, # only_fields=("headline", "content"), # #debug=True, # ) # if filled_fields: # messages.success(request, "These fields are translated with google: %s" % ", ".join(filled_fields)) # else: # messages.info(request, "No fields translated with google, because all fields have been a translation.") # if errors: # for error in errors: # messages.error(request, error) else: if source_form.is_valid() and dest_form.is_valid(): # All forms are valid -> Save all. source_form.save() dest_entry2 = dest_form.save(commit=False) dest_entry2.entry = source_entry.entry dest_entry2.save() if dest_entry is None: messages.success( request, "All saved. New entry %r created." % dest_entry2) else: messages.success(request, "All saved.") return http.HttpResponseRedirect( dest_entry2.get_absolute_url()) else: source_form = BlogContentForm(prefix="source", instance=source_entry) if dest_entry is None: dest_form = BlogContentForm(prefix="dest", initial=dest_initial) else: dest_form = BlogContentForm(prefix="dest", instance=dest_entry) source_fields = [] dest_fields = [] line_fields = [] for source_field, dest_field in zip(source_form, dest_form): assert source_field.name == dest_field.name if source_field.name in ("content", "language", "markup"): # Fields witch displayed side by side. source_fields.append(source_field) dest_fields.append(dest_field) else: # Fields witch renders alternating one below the other. source_field.language = source_entry.language line_fields.append(source_field) dest_field.language = dest_language line_fields.append(dest_field) if source_form.errors or dest_form.errors: has_errors = True else: has_errors = False context.update({ "source_entry": source_entry, "dest_language": dest_language, "source_form": source_form, "dest_form": dest_form, "all_forms": [source_form, dest_form], "has_errors": has_errors, "source_fields": source_fields, "dest_fields": dest_fields, "line_fields": line_fields, }) return context