Пример #1
0
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,
    }
Пример #2
0
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,
    }
Пример #3
0
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
Пример #4
0
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