Exemplo n.º 1
0
def data_project(request, project):
    obj = get_project(request, project)
    return render_to_response('data.html', RequestContext(request, {
        'object': obj,
        'api_docs': weblate.get_doc_url('api', 'exports'),
        'rss_docs': weblate.get_doc_url('api', 'rss'),
    }))
Exemplo n.º 2
0
def reset_project(request, project):
    obj = get_project(request, project)

    if obj.do_reset(request):
        messages.info(request, _('All repositories have been reset.'))

    return HttpResponseRedirect(obj.get_absolute_url())
Exemplo n.º 3
0
def commit_project(request, project):
    obj = get_project(request, project)
    obj.commit_pending(request)

    messages.info(request, _('All pending translations were committed.'))

    return redirect(obj)
Exemplo n.º 4
0
def reset_project(request, project):
    obj = get_project(request, project)

    if obj.do_reset(request):
        messages.info(request, _('All repositories have been reset.'))

    return redirect(obj)
Exemplo n.º 5
0
def edit_dictionary(request, project, lang):
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)
    word = get_object_or_404(Dictionary, project=prj, language=lang, id=request.GET.get("id"))

    if request.method == "POST":
        form = WordForm(request.POST)
        if form.is_valid():
            word.source = form.cleaned_data["source"]
            word.target = form.cleaned_data["target"]
            word.save()
            return HttpResponseRedirect(reverse("show_dictionary", kwargs={"project": prj.slug, "lang": lang.code}))
    else:
        form = WordForm(initial={"source": word.source, "target": word.target})

    return render_to_response(
        "edit_dictionary.html",
        RequestContext(
            request,
            {
                "title": _("%(language)s dictionary for %(project)s") % {"language": lang, "project": prj},
                "project": prj,
                "language": lang,
                "form": form,
            },
        ),
    )
Exemplo n.º 6
0
def download_dictionary(request, project, lang):
    """
    Exports dictionary into various formats.
    """
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)

    # Parse parameters
    export_format = None
    if "format" in request.GET:
        export_format = request.GET["format"]
    if not export_format in ["csv", "po", "tbx"]:
        export_format = "csv"

    # Grab all words
    words = Dictionary.objects.filter(project=prj, language=lang).order_by("source")

    # Translate toolkit based export
    if export_format in ("po", "tbx"):
        return download_dictionary_ttkit(export_format, prj, lang, words)

    # Manually create CSV file
    response = HttpResponse(mimetype="text/csv; charset=utf-8")
    filename = "dictionary-%s-%s.csv" % (prj.slug, lang.code)
    response["Content-Disposition"] = "attachment; filename=%s" % filename

    writer = csv.writer(response)

    for word in words.iterator():
        writer.writerow((word.source.encode("utf8"), word.target.encode("utf8")))

    return response
Exemplo n.º 7
0
def git_status_project(request, project):
    obj = get_project(request, project)

    return render_to_response('js/git-status.html',
                              RequestContext(request, {
                                  'object': obj,
                              }))
Exemplo n.º 8
0
def push_project(request, project):
    obj = get_project(request, project)

    if obj.do_push(request):
        messages.info(request, _('All repositories were pushed.'))

    return redirect(obj)
Exemplo n.º 9
0
def update_project(request, project):
    obj = get_project(request, project)

    if obj.do_update(request):
        messages.info(request, _('All repositories were updated.'))

    return redirect(obj)
Exemplo n.º 10
0
def commit_project(request, project):
    obj = get_project(request, project)
    obj.commit_pending(request)

    messages.info(request, _('All pending translations were committed.'))

    return HttpResponseRedirect(obj.get_absolute_url())
Exemplo n.º 11
0
def edit_dictionary(request, project, lang):
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)
    word = get_object_or_404(
        Dictionary,
        project=prj,
        language=lang,
        id=request.GET.get('id')
    )

    if request.method == 'POST':
        form = WordForm(request.POST)
        if form.is_valid():
            word.source = form.cleaned_data['source']
            word.target = form.cleaned_data['target']
            word.save()
            return HttpResponseRedirect(reverse(
                'show_dictionary',
                kwargs={'project': prj.slug, 'lang': lang.code}
            ))
    else:
        form = WordForm(
            initial={'source': word.source, 'target': word.target}
        )

    return render_to_response('edit_dictionary.html', RequestContext(request, {
        'title': _('%(language)s dictionary for %(project)s') %
        {'language': lang, 'project': prj},
        'project': prj,
        'language': lang,
        'form': form,
    }))
Exemplo n.º 12
0
def edit_dictionary(request, project, lang):
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)
    word = get_object_or_404(
        Dictionary,
        project=prj,
        language=lang,
        id=request.GET.get('id')
    )

    if request.method == 'POST':
        form = WordForm(request.POST)
        if form.is_valid():
            word.source = form.cleaned_data['source']
            word.target = form.cleaned_data['target']
            word.save()
            return HttpResponseRedirect(reverse(
                'show_dictionary',
                kwargs={'project': prj.slug, 'lang': lang.code}
            ))
    else:
        form = WordForm(
            initial={'source': word.source, 'target': word.target}
        )

    return render_to_response('edit_dictionary.html', RequestContext(request, {
        'title': _('%(language)s dictionary for %(project)s') %
        {'language': lang, 'project': prj},
        'project': prj,
        'language': lang,
        'form': form,
    }))
Exemplo n.º 13
0
def push_project(request, project):
    obj = get_project(request, project)

    if obj.do_push(request):
        messages.info(request, _('All repositories were pushed.'))

    return HttpResponseRedirect(obj.get_absolute_url())
Exemplo n.º 14
0
def show_project(request, project):
    obj = get_project(request, project)

    dicts = Dictionary.objects.filter(
        project=obj
    ).values_list(
        'language', flat=True
    ).distinct()

    last_changes = Change.objects.prefetch().filter(
        Q(translation__subproject__project=obj) |
        Q(dictionary__project=obj)
    ).order_by('-timestamp')[:10]

    return render_to_response('project.html', RequestContext(request, {
        'object': obj,
        'dicts': Language.objects.filter(id__in=dicts),
        'last_changes': last_changes,
        'last_changes_rss': reverse(
            'rss-project',
            kwargs={'project': obj.slug}
        ),
        'last_changes_url': urlencode(
            {'project': obj.slug}
        ),
    }))
Exemplo n.º 15
0
def show_dictionary(request, project, lang):
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)

    if (request.method == 'POST'
            and request.user.has_perm('trans.add_dictionary')):
        form = WordForm(request.POST)
        if form.is_valid():
            Dictionary.objects.create(
                project=prj,
                language=lang,
                source=form.cleaned_data['source'],
                target=form.cleaned_data['target']
            )
        return HttpResponseRedirect(request.get_full_path())
    else:
        form = WordForm()

    uploadform = DictUploadForm()

    words = Dictionary.objects.filter(
        project=prj, language=lang
    ).order_by('source')

    limit = request.GET.get('limit', 25)
    page = request.GET.get('page', 1)

    letterform = LetterForm(request.GET)

    if letterform.is_valid() and letterform.cleaned_data['letter'] != '':
        words = words.filter(
            source__istartswith=letterform.cleaned_data['letter']
        )
        letter = letterform.cleaned_data['letter']
    else:
        letter = ''

    paginator = Paginator(words, limit)

    try:
        words = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        words = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        words = paginator.page(paginator.num_pages)

    return render_to_response('dictionary.html', RequestContext(request, {
        'title': _('%(language)s dictionary for %(project)s') %
        {'language': lang, 'project': prj},
        'project': prj,
        'language': lang,
        'words': words,
        'form': form,
        'uploadform': uploadform,
        'letterform': letterform,
        'letter': letter,
    }))
Exemplo n.º 16
0
def show_dictionary(request, project, lang):
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)

    if (request.method == 'POST'
            and request.user.has_perm('trans.add_dictionary')):
        form = WordForm(request.POST)
        if form.is_valid():
            Dictionary.objects.create(
                project=prj,
                language=lang,
                source=form.cleaned_data['source'],
                target=form.cleaned_data['target']
            )
        return HttpResponseRedirect(request.get_full_path())
    else:
        form = WordForm()

    uploadform = DictUploadForm()

    words = Dictionary.objects.filter(
        project=prj, language=lang
    ).order_by('source')

    limit = request.GET.get('limit', 25)
    page = request.GET.get('page', 1)

    letterform = LetterForm(request.GET)

    if letterform.is_valid() and letterform.cleaned_data['letter'] != '':
        words = words.filter(
            source__istartswith=letterform.cleaned_data['letter']
        )
        letter = letterform.cleaned_data['letter']
    else:
        letter = ''

    paginator = Paginator(words, limit)

    try:
        words = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        words = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        words = paginator.page(paginator.num_pages)

    return render_to_response('dictionary.html', RequestContext(request, {
        'title': _('%(language)s dictionary for %(project)s') %
        {'language': lang, 'project': prj},
        'project': prj,
        'language': lang,
        'words': words,
        'form': form,
        'uploadform': uploadform,
        'letterform': letterform,
        'letter': letter,
    }))
Exemplo n.º 17
0
def delete_dictionary(request, project, lang):
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)
    word = get_object_or_404(Dictionary, project=prj, language=lang, id=request.POST.get("id"))

    word.delete()

    return HttpResponseRedirect(reverse("show_dictionary", kwargs={"project": prj.slug, "lang": lang.code}))
Exemplo n.º 18
0
def update_project(request, project):
    '''
    API hook for updating git repos.
    '''
    if not appsettings.ENABLE_HOOKS:
        return HttpResponseNotAllowed([])
    obj = get_project(request, project, True)
    perform_update(obj)
    return HttpResponse('update triggered')
Exemplo n.º 19
0
def data_project(request, project):
    obj = get_project(request, project)
    site = Site.objects.get_current()
    return render_to_response('data.html', RequestContext(request, {
        'object': obj,
        'site_domain': site.domain,
        'api_docs': weblate.get_doc_url('api', 'exports'),
        'rss_docs': weblate.get_doc_url('api', 'rss'),
    }))
Exemplo n.º 20
0
def show_dictionary(request, project, lang):
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)

    if request.method == "POST" and request.user.has_perm("trans.add_dictionary"):
        form = WordForm(request.POST)
        if form.is_valid():
            Dictionary.objects.create(
                project=prj, language=lang, source=form.cleaned_data["source"], target=form.cleaned_data["target"]
            )
        return HttpResponseRedirect(request.get_full_path())
    else:
        form = WordForm()

    uploadform = DictUploadForm()

    words = Dictionary.objects.filter(project=prj, language=lang).order_by("source")

    limit = request.GET.get("limit", 25)
    page = request.GET.get("page", 1)

    letterform = LetterForm(request.GET)

    if letterform.is_valid() and letterform.cleaned_data["letter"] != "":
        words = words.filter(source__istartswith=letterform.cleaned_data["letter"])
        letter = letterform.cleaned_data["letter"]
    else:
        letter = ""

    paginator = Paginator(words, limit)

    try:
        words = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        words = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        words = paginator.page(paginator.num_pages)

    return render_to_response(
        "dictionary.html",
        RequestContext(
            request,
            {
                "title": _("%(language)s dictionary for %(project)s") % {"language": lang, "project": prj},
                "project": prj,
                "language": lang,
                "words": words,
                "form": form,
                "uploadform": uploadform,
                "letterform": letterform,
                "letter": letter,
            },
        ),
    )
Exemplo n.º 21
0
def unlock_project(request, project):
    obj = get_project(request, project)

    for subproject in obj.subproject_set.all():
        subproject.locked = False
        subproject.save()

    messages.info(request, _('Project is now open for translation updates.'))

    return HttpResponseRedirect(obj.get_absolute_url())
Exemplo n.º 22
0
def data_project(request, project):
    obj = get_project(request, project)
    return render_to_response(
        'data.html',
        RequestContext(
            request, {
                'object': obj,
                'api_docs': weblate.get_doc_url('api', 'exports'),
                'rss_docs': weblate.get_doc_url('api', 'rss'),
            }))
Exemplo n.º 23
0
def unlock_project(request, project):
    obj = get_project(request, project)

    for subproject in obj.subproject_set.all():
        subproject.locked = False
        subproject.save()

    messages.info(request, _('Project is now open for translation updates.'))

    return HttpResponseRedirect(obj.get_absolute_url())
Exemplo n.º 24
0
def show_dictionaries(request, project):
    obj = get_project(request, project)
    dicts = Translation.objects.filter(subproject__project=obj).values_list("language", flat=True).distinct()

    return render_to_response(
        "dictionaries.html",
        RequestContext(
            request, {"title": _("Dictionaries"), "dicts": Language.objects.filter(id__in=dicts), "project": obj}
        ),
    )
Exemplo n.º 25
0
def show_check_project(request, name, project):
    '''
    Show checks failing in a project.
    '''
    prj = get_project(request, project)
    try:
        check = CHECKS[name]
    except KeyError:
        raise Http404('No check matches the given query.')
    units = Unit.objects.none()
    if check.target:
        langs = Check.objects.filter(
            check=name, project=prj, ignore=False
        ).values_list('language', flat=True).distinct()
        for lang in langs:
            checks = Check.objects.filter(
                check=name, project=prj, language=lang, ignore=False
            ).values_list('checksum', flat=True)
            res = Unit.objects.filter(
                checksum__in=checks,
                translation__language=lang,
                translation__subproject__project=prj,
                translated=True
            ).values(
                'translation__subproject__slug',
                'translation__subproject__project__slug'
            ).annotate(count=Count('id'))
            units |= res
    if check.source:
        checks = Check.objects.filter(
            check=name,
            project=prj,
            language=None,
            ignore=False
        ).values_list(
            'checksum', flat=True
        )
        for subproject in prj.subproject_set.all():
            lang = subproject.translation_set.all()[0].language
            res = Unit.objects.filter(
                checksum__in=checks,
                translation__language=lang,
                translation__subproject=subproject
            ).values(
                'translation__subproject__slug',
                'translation__subproject__project__slug'
            ).annotate(count=Count('id'))
            units |= res

    return render_to_response('check_project.html', RequestContext(request, {
        'checks': units,
        'title': '%s/%s' % (prj.__unicode__(), check.name),
        'check': check,
        'project': prj,
    }))
Exemplo n.º 26
0
def show_dictionaries(request, project):
    obj = get_project(request, project)
    dicts = Translation.objects.filter(
        subproject__project=obj
    ).values_list('language', flat=True).distinct()

    return render_to_response('dictionaries.html', RequestContext(request, {
        'title': _('Dictionaries'),
        'dicts': Language.objects.filter(id__in=dicts),
        'project': obj,
    }))
Exemplo n.º 27
0
def show_dictionaries(request, project):
    obj = get_project(request, project)
    dicts = Translation.objects.filter(
        subproject__project=obj
    ).values_list('language', flat=True).distinct()

    return render_to_response('dictionaries.html', RequestContext(request, {
        'title': _('Dictionaries'),
        'dicts': Language.objects.filter(id__in=dicts),
        'project': obj,
    }))
Exemplo n.º 28
0
def lock_project(request, project):
    obj = get_project(request, project)

    obj.commit_pending(request)

    for subproject in obj.subproject_set.all():
        subproject.locked = True
        subproject.save()

    messages.info(request, _("All subprojects are now locked for translation updates!"))

    return HttpResponseRedirect(obj.get_absolute_url())
Exemplo n.º 29
0
def update_project(request, project):
    '''
    API hook for updating git repos.
    '''
    if not appsettings.ENABLE_HOOKS:
        return HttpResponseNotAllowed([])
    obj = get_project(request, project, True)
    if appsettings.BACKGROUND_HOOKS:
        thread = threading.Thread(target=obj.do_update)
        thread.start()
    else:
        obj.do_update()
    return HttpResponse('update triggered')
Exemplo n.º 30
0
def data_project(request, project):
    obj = get_project(request, project)
    return render_to_response(
        "data.html",
        RequestContext(
            request,
            {
                "object": obj,
                "api_docs": weblate.get_doc_url("api", "exports"),
                "rss_docs": weblate.get_doc_url("api", "rss"),
            },
        ),
    )
Exemplo n.º 31
0
def update_project(request, project):
    '''
    API hook for updating git repos.
    '''
    if not appsettings.ENABLE_HOOKS:
        return HttpResponseNotAllowed([])
    obj = get_project(request, project, True)
    if appsettings.BACKGROUND_HOOKS:
        thread = threading.Thread(target=obj.do_update)
        thread.start()
    else:
        obj.do_update()
    return HttpResponse('update triggered')
Exemplo n.º 32
0
def lock_project(request, project):
    obj = get_project(request, project)

    obj.commit_pending(request)

    for subproject in obj.subproject_set.all():
        subproject.locked = True
        subproject.save()

    messages.info(
        request,
        _('All subprojects are now locked for translation updates!')
    )

    return redirect(obj)
Exemplo n.º 33
0
def lock_project(request, project):
    obj = get_project(request, project)

    obj.commit_pending(request)

    for subproject in obj.subproject_set.all():
        subproject.locked = True
        subproject.save()

    messages.info(
        request,
        _('All subprojects are now locked for translation updates!')
    )

    return HttpResponseRedirect(obj.get_absolute_url())
Exemplo n.º 34
0
def delete_dictionary(request, project, lang):
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)
    word = get_object_or_404(
        Dictionary,
        project=prj,
        language=lang,
        id=request.POST.get('id')
    )

    word.delete()

    return HttpResponseRedirect(reverse(
        'show_dictionary',
        kwargs={'project': prj.slug, 'lang': lang.code})
    )
Exemplo n.º 35
0
def delete_dictionary(request, project, lang):
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)
    word = get_object_or_404(
        Dictionary,
        project=prj,
        language=lang,
        id=request.POST.get('id')
    )

    word.delete()

    return HttpResponseRedirect(reverse(
        'show_dictionary',
        kwargs={'project': prj.slug, 'lang': lang.code})
    )
Exemplo n.º 36
0
def delete_dictionary(request, project, lang):
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)
    word = get_object_or_404(
        Dictionary,
        project=prj,
        language=lang,
        id=request.POST.get('id')
    )

    word.delete()

    return redirect(
        'show_dictionary',
        project=prj.slug,
        lang=lang.code
    )
Exemplo n.º 37
0
def edit_dictionary(request, project, lang):
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)
    word = get_object_or_404(
        Dictionary,
        project=prj,
        language=lang,
        id=request.GET.get('id')
    )

    if request.method == 'POST':
        form = WordForm(request.POST)
        if form.is_valid():
            word.edit(
                request,
                form.cleaned_data['source'],
                form.cleaned_data['target']
            )
            return redirect(
                'show_dictionary',
                project=prj.slug,
                lang=lang.code
            )
    else:
        form = WordForm(
            initial={'source': word.source, 'target': word.target}
        )

    last_changes = Change.objects.filter(
        dictionary=word,
    ).order_by('-timestamp')[:10]

    return render_to_response('edit_dictionary.html', RequestContext(request, {
        'title': _('%(language)s dictionary for %(project)s') %
        {'language': lang, 'project': prj},
        'project': prj,
        'language': lang,
        'form': form,
        'last_changes': last_changes,
        'last_changes_url': urlencode({
            'project': prj.slug,
            'lang': lang.code,
            'glossary': 1
        }),
    }))
Exemplo n.º 38
0
def show_project(request, project):
    obj = get_project(request, project)

    dicts = Dictionary.objects.filter(project=obj).values_list("language", flat=True).distinct()

    last_changes = Change.objects.filter(translation__subproject__project=obj).order_by("-timestamp")[:10]

    return render_to_response(
        "project.html",
        RequestContext(
            request,
            {
                "object": obj,
                "dicts": Language.objects.filter(id__in=dicts),
                "last_changes": last_changes,
                "last_changes_rss": reverse("rss-project", kwargs={"project": obj.slug}),
                "last_changes_url": urlencode({"project": obj.slug}),
            },
        ),
    )
Exemplo n.º 39
0
def upload_dictionary(request, project, lang):
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)

    if request.method == "POST":
        form = DictUploadForm(request.POST, request.FILES)
        if form.is_valid():
            try:
                count = Dictionary.objects.upload(prj, lang, request.FILES["file"], form.cleaned_data["method"])
                if count == 0:
                    messages.warning(request, _("No words to import found in file."))
                else:
                    messages.info(request, _("Imported %d words from file.") % count)
            except Exception as e:
                messages.error(request, _("File upload has failed: %s" % unicode(e)))
        else:
            messages.error(request, _("Failed to process form!"))
    else:
        messages.error(request, _("Failed to process form!"))
    return HttpResponseRedirect(reverse("show_dictionary", kwargs={"project": prj.slug, "lang": lang.code}))
Exemplo n.º 40
0
def show_project(request, project):
    obj = get_project(request, project)

    dicts = Dictionary.objects.filter(project=obj).values_list(
        'language', flat=True).distinct()

    last_changes = Change.objects.filter(
        translation__subproject__project=obj).order_by('-timestamp')[:10]

    return render_to_response(
        'project.html',
        RequestContext(
            request, {
                'object':
                obj,
                'dicts':
                Language.objects.filter(id__in=dicts),
                'last_changes':
                last_changes,
                'last_changes_rss':
                reverse('rss-project', kwargs={'project': obj.slug}),
            }))
Exemplo n.º 41
0
def show_engage(request, project, lang=None):
    # Get project object
    obj = get_project(request, project)

    # Handle language parameter
    language = None
    if lang is not None:
        language = try_set_language(lang)

    context = {
        'object': obj,
        'project': obj.name,
        'languages': obj.get_language_count(),
        'total': obj.get_total(),
        'percent': obj.get_translated_percent(language),
        'url': obj.get_absolute_url(),
        'language': language,
    }

    # Render text
    if language is None:
        status_text = _(
            '<a href="%(url)s">Translation project for %(project)s</a> '
            'currently contains %(total)s strings for translation and is '
            '<a href="%(url)s">being translated into %(languages)s languages'
            '</a>. Overall, these translations are %(percent)s%% complete.')
    else:
        # Translators: line of text in engagement widget, please use your
        # language name instead of English
        status_text = _(
            '<a href="%(url)s">Translation project for %(project)s</a> into '
            'English currently contains %(total)s strings for translation and '
            'is %(percent)s%% complete.')
        if 'English' in status_text:
            status_text = status_text.replace('English', language.name)

    context['status_text'] = mark_safe(status_text % context)

    return render_to_response('engage.html', RequestContext(request, context))
Exemplo n.º 42
0
def render(request, project, widget='287x66', color=None, lang=None):
    obj = get_project(request, project)

    # Handle language parameter
    if lang is not None:
        lang = try_set_language(lang)

    # Get widget class
    try:
        widget_class = WIDGETS[widget]
    except KeyError:
        raise Http404()

    # Construct object
    widget = widget_class(obj, color, lang)

    # Render widget
    widget.render()

    # Get image data
    data = widget.get_image()

    return HttpResponse(content_type='image/png', content=data)
Exemplo n.º 43
0
def upload_dictionary(request, project, lang):
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)

    if request.method == 'POST':
        form = DictUploadForm(request.POST, request.FILES)
        if form.is_valid():
            try:
                count = Dictionary.objects.upload(
                    prj,
                    lang,
                    request.FILES['file'],
                    form.cleaned_data['method']
                )
                if count == 0:
                    messages.warning(
                        request,
                        _('No words to import found in file.')
                    )
                else:
                    messages.info(
                        request,
                        _('Imported %d words from file.') % count
                    )
            except Exception as e:
                messages.error(
                    request,
                    _('File upload has failed: %s' % unicode(e))
                )
        else:
            messages.error(request, _('Failed to process form!'))
    else:
        messages.error(request, _('Failed to process form!'))
    return HttpResponseRedirect(reverse(
        'show_dictionary',
        kwargs={'project': prj.slug, 'lang': lang.code}
    ))
Exemplo n.º 44
0
def download_dictionary(request, project, lang):
    '''
    Exports dictionary into various formats.
    '''
    prj = get_project(request, project)
    lang = get_object_or_404(Language, code=lang)

    # Parse parameters
    export_format = None
    if 'format' in request.GET:
        export_format = request.GET['format']
    if not export_format in ['csv', 'po', 'tbx']:
        export_format = 'csv'

    # Grab all words
    words = Dictionary.objects.filter(
        project=prj,
        language=lang
    ).order_by('source')

    # Translate toolkit based export
    if export_format in ('po', 'tbx'):
        return download_dictionary_ttkit(export_format, prj, lang, words)

    # Manually create CSV file
    response = HttpResponse(mimetype='text/csv; charset=utf-8')
    filename = 'dictionary-%s-%s.csv' % (prj.slug, lang.code)
    response['Content-Disposition'] = 'attachment; filename=%s' % filename

    writer = csv.writer(response)

    for word in words.iterator():
        writer.writerow((
            word.source.encode('utf8'), word.target.encode('utf8')
        ))

    return response
Exemplo n.º 45
0
def widgets(request, project):
    obj = get_project(request, project)

    # Parse possible language selection
    form = EnageLanguageForm(obj, request.GET)
    lang = None
    if form.is_valid() and form.cleaned_data['lang'] != '':
        lang = Language.objects.get(code=form.cleaned_data['lang'])

    if lang is None:
        engage_base = reverse('engage', kwargs={'project': obj.slug})
    else:
        engage_base = reverse('engage-lang',
                              kwargs={
                                  'project': obj.slug,
                                  'lang': lang.code
                              })
    engage_url = get_site_url(engage_base)
    engage_url_track = '%s?utm_source=widget' % engage_url
    widget_base_url = get_site_url(
        reverse('widgets', kwargs={'project': obj.slug}))
    widget_list = []
    for widget_name in WIDGETS:
        widget_class = WIDGETS[widget_name]
        color_list = []
        for color in widget_class.colors:
            if lang is None:
                color_url = reverse('widget-image',
                                    kwargs={
                                        'project': obj.slug,
                                        'widget': widget_name,
                                        'color': color,
                                    })
            else:
                color_url = reverse('widget-image-lang',
                                    kwargs={
                                        'project': obj.slug,
                                        'widget': widget_name,
                                        'color': color,
                                        'lang': lang.code
                                    })
            color_list.append({
                'name': color,
                'url': get_site_url(color_url),
            })
        widget_list.append({
            'name': widget_name,
            'colors': color_list,
        })

    return render_to_response(
        'widgets.html',
        RequestContext(
            request, {
                'engage_url': engage_url,
                'engage_url_track': engage_url_track,
                'widget_list': widget_list,
                'widget_base_url': widget_base_url,
                'object': obj,
                'image_src': widget_list[0]['colors'][0]['url'],
                'form': form,
            }))
Exemplo n.º 46
0
 def get_object(self, request, project):
     return get_project(request, project)