Beispiel #1
0
def tos_confirm(request):
    user = None
    if request.user.is_authenticated:
        user = request.user
    elif 'tos_user' in request.session:
        user = User.objects.get(pk=request.session['tos_user'])

    if user is None:
        return redirect('home')

    agreement = Agreement.objects.get_or_create(user=user)[0]
    if agreement.is_current():
        return redirect_next(request.GET.get('next'), 'home')

    if request.method == 'POST':
        form = TOSForm(request.POST)
        if form.is_valid():
            agreement.make_current(request)
            return redirect_next(form.cleaned_data['next'], 'home')
    else:
        form = TOSForm(initial={'next': request.GET.get('next')})

    return render(
        request,
        'legal/confirm.html',
        {
            'form': form,
        }
    )
Beispiel #2
0
def tos_confirm(request):
    user = None
    if request.user.is_authenticated:
        user = request.user
    elif 'tos_user' in request.session:
        user = User.objects.get(pk=request.session['tos_user'])

    if user is None:
        return redirect('home')

    agreement = Agreement.objects.get_or_create(user=user)[0]
    if agreement.is_current():
        return redirect_next(request.GET.get('next'), 'home')

    if request.method == 'POST':
        form = TOSForm(request.POST)
        if form.is_valid():
            agreement.make_current(request)
            return redirect_next(form.cleaned_data['next'], 'home')
    else:
        form = TOSForm(initial={'next': request.GET.get('next')})

    return render(request, 'legal/confirm.html', {
        'form': form,
    })
Beispiel #3
0
def edit_context(request, pk):
    unit = get_object_or_404(Unit, pk=pk)
    if not unit.is_source and not unit.translation.component.is_glossary:
        raise Http404("Non source unit!")

    do_add = "addflag" in request.POST
    if do_add or "removeflag" in request.POST:
        if not request.user.has_perm("unit.flag", unit.translation):
            raise PermissionDenied()
        flag = request.POST.get("addflag", request.POST.get("removeflag"))
        flags = Flags(unit.extra_flags)
        if do_add:
            flags.merge(flag)
        else:
            flags.remove(flag)
        new_flags = flags.format()
        if new_flags != unit.extra_flags:
            unit.extra_flags = new_flags
            unit.save(same_content=True, update_fields=["extra_flags"])
    else:

        if not request.user.has_perm("source.edit", unit.translation):
            raise PermissionDenied()

        form = ContextForm(request.POST, instance=unit, user=request.user)

        if form.is_valid():
            form.save()
        else:
            messages.error(request,
                           _("Failed to change additional string info!"))
            show_form_errors(request, form)

    return redirect_next(request.POST.get("next"), unit.get_absolute_url())
Beispiel #4
0
def agreement_confirm(request, project, component):
    component = get_component(request, project, component)

    has_agreed = ContributorAgreement.objects.has_agreed(
        request.user, component
    )

    if request.method == 'POST':
        form = ContributorAgreementForm(request.POST)
        if form.is_valid() and not has_agreed:
            ContributorAgreement.objects.create(
                user=request.user,
                component=component
            )
            return redirect_next(
                request.GET.get('next'),
                component.get_absolute_url(),
            )
    else:
        form = ContributorAgreementForm(
            initial={
                'next': request.GET.get('next'),
                'confirm': has_agreed,
            }
        )

    return render(
        request,
        'contributor-agreement.html',
        {
            'form': form,
            'object': component,
            'has_agreed': has_agreed,
        }
    )
Beispiel #5
0
def comment(request, pk):
    """Add new comment."""
    unit = get_object_or_404(Unit, pk=pk)
    request.user.check_access(unit.translation.component.project)

    if not request.user.has_perm('comment.add', unit.translation):
        raise PermissionDenied()

    form = CommentForm(request.POST)

    if form.is_valid():
        if form.cleaned_data['scope'] == 'global':
            lang = None
        else:
            lang = unit.translation.language
        Comment.objects.add(
            unit,
            request.user,
            lang,
            form.cleaned_data['comment']
        )
        messages.success(request, _('Posted new comment'))
    else:
        messages.error(request, _('Failed to add comment!'))

    return redirect_next(request.POST.get('next'), unit)
Beispiel #6
0
def comment(request, pk):
    """Add new comment."""
    unit = get_object_or_404(Unit, pk=pk)
    request.user.check_access(unit.translation.component.project)

    if not request.user.has_perm('comment.add', unit.translation):
        raise PermissionDenied()

    form = CommentForm(request.POST)

    if form.is_valid():
        if form.cleaned_data['scope'] == 'global':
            lang = None
        else:
            lang = unit.translation.language
        Comment.objects.add(
            unit,
            request.user,
            lang,
            form.cleaned_data['comment']
        )
        messages.success(request, _('Posted new comment'))
    else:
        messages.error(request, _('Failed to add comment!'))

    return redirect_next(request.POST.get('next'), unit)
Beispiel #7
0
def agreement_confirm(request, project, component):
    component = get_component(request, project, component)

    has_agreed = ContributorAgreement.objects.has_agreed(
        request.user, component)

    if request.method == 'POST':
        form = ContributorAgreementForm(request.POST)
        if form.is_valid() and not has_agreed:
            ContributorAgreement.objects.create(user=request.user,
                                                component=component)
            return redirect_next(request.GET.get('next'),
                                 component.get_absolute_url())
    else:
        form = ContributorAgreementForm(initial={
            'next': request.GET.get('next'),
            'confirm': has_agreed
        })

    return render(
        request,
        'contributor-agreement.html',
        {
            'form': form,
            'object': component,
            'has_agreed': has_agreed
        },
    )
Beispiel #8
0
def agreement_confirm(request, project, component):
    component = get_component(request, project, component)

    has_agreed = ContributorAgreement.objects.has_agreed(
        request.user, component)

    if request.method == "POST":
        form = ContributorAgreementForm(request.POST)
        if form.is_valid() and not has_agreed:
            ContributorAgreement.objects.create(user=request.user,
                                                component=component)
            return redirect_next(request.GET.get("next"),
                                 component.get_absolute_url())
    else:
        form = ContributorAgreementForm(initial={
            "next": request.GET.get("next"),
            "confirm": has_agreed
        })

    return render(
        request,
        "contributor-agreement.html",
        {
            "form": form,
            "object": component,
            "has_agreed": has_agreed
        },
    )
Beispiel #9
0
def edit_glossary(request, pk):
    term = get_object_or_404(Term, id=pk)
    if not term.check_perm(request.user, "glossary.edit"):
        raise PermissionDenied()

    if request.method == "POST":
        form = TermForm(term.glossary.project,
                        data=request.POST,
                        instance=term)
        if form.is_valid():
            term.edit(
                request,
                form.cleaned_data["source"],
                form.cleaned_data["target"],
                form.cleaned_data["glossary"],
            )
            return redirect_next(
                request.POST.get("next"),
                reverse(
                    "show_glossary",
                    kwargs={
                        "project": term.glossary.project.slug,
                        "lang": term.language.code,
                    },
                ),
            )
    else:
        form = TermForm(term.glossary.project, instance=term)

    last_changes = Change.objects.last_changes(
        request.user).filter(glossary_term=term)[:10]

    return render(
        request,
        "edit_glossary.html",
        {
            "title":
            dict_title(term.glossary, term.language),
            "project":
            term.glossary.project,
            "language":
            term.language,
            "form":
            form,
            "next":
            request.POST.get("next") or request.GET.get("next"),
            "last_changes":
            last_changes,
            "last_changes_url":
            urlencode((
                ("project", term.glossary.project.slug),
                ("lang", term.language.code),
                ("action", Change.ACTION_DICTIONARY_NEW),
                ("action", Change.ACTION_DICTIONARY_EDIT),
                ("action", Change.ACTION_DICTIONARY_UPLOAD),
            )),
        },
    )
Beispiel #10
0
def resolve_comment(request, pk):
    """Resolve comment."""
    comment_obj = get_object_or_404(Comment, pk=pk)

    if not request.user.has_perm("comment.delete", comment_obj):
        raise PermissionDenied()

    fallback_url = comment_obj.unit.get_absolute_url()

    comment_obj.resolved = True
    comment_obj.save(update_fields=["resolved"])
    messages.info(request, _("Translation comment has been resolved."))

    return redirect_next(request.POST.get("next"), fallback_url)
Beispiel #11
0
def edit_check_flags(request, pk):
    """Change source string flags."""
    source = get_object_or_404(Source, pk=pk)

    if not request.user.has_perm('source.edit', source.component):
        raise PermissionDenied()

    form = CheckFlagsForm(request.POST)
    if form.is_valid():
        source.check_flags = form.cleaned_data['flags']
        source.save()
    else:
        messages.error(request, _('Failed to change translation flags!'))
    return redirect_next(request.POST.get('next'), source.get_absolute_url())
Beispiel #12
0
def edit_context(request, pk):
    """Change source string context."""
    source = get_object_or_404(Source, pk=pk)

    if not request.user.has_perm('source.edit', source.component):
        raise PermissionDenied()

    form = ContextForm(request.POST)
    if form.is_valid():
        source.context = form.cleaned_data['context']
        source.save()
    else:
        messages.error(request, _('Failed to change a context!'))
    return redirect_next(request.POST.get('next'), source.get_absolute_url())
Beispiel #13
0
def tos_confirm(request):
    user = None
    if request.user.is_authenticated:
        user = request.user
    elif "tos_user" in request.session:
        user = User.objects.get(pk=request.session["tos_user"])

    if user is None:
        return redirect("home")

    agreement = Agreement.objects.get_or_create(user=user)[0]
    if agreement.is_current():
        return redirect_next(request.GET.get("next"), "home")

    if request.method == "POST":
        form = TOSForm(request.POST)
        if form.is_valid():
            agreement.make_current(request)
            return redirect_next(form.cleaned_data["next"], "home")
    else:
        form = TOSForm(initial={"next": request.GET.get("next")})

    return render(request, "legal/confirm.html", {"form": form})
Beispiel #14
0
def edit_priority(request, pk):
    """Change source string priority."""
    source = get_object_or_404(Source, pk=pk)

    if not can_edit_priority(request.user, source.subproject.project):
        raise PermissionDenied()

    form = PriorityForm(request.POST)
    if form.is_valid():
        source.priority = form.cleaned_data['priority']
        source.save()
    else:
        messages.error(request, _('Failed to change a priority!'))
    return redirect_next(request.POST.get('next'), source.get_absolute_url())
Beispiel #15
0
def delete_glossary(request, pk):
    term = get_object_or_404(Term, id=pk)
    if not term.check_perm(request.user, "glossary.delete"):
        raise PermissionDenied()

    term.delete()

    return redirect_next(
        request.POST.get("next"),
        reverse(
            "show_glossary",
            kwargs={"project": term.glossary.project.slug, "lang": term.language.code},
        ),
    )
Beispiel #16
0
def edit_priority(request, pk):
    """Change source string priority."""
    source = get_object_or_404(Source, pk=pk)

    if not request.user.has_perm('source.edit', source.component):
        raise PermissionDenied()

    form = PriorityForm(request.POST)
    if form.is_valid():
        source.priority = form.cleaned_data['priority']
        source.save()
    else:
        messages.error(request, _('Failed to change a priority!'))
    return redirect_next(request.POST.get('next'), source.get_absolute_url())
Beispiel #17
0
def edit_check_flags(request, pk):
    """Change source string check flags."""
    source = get_object_or_404(Source, pk=pk)

    if not can_edit_flags(request.user, source.subproject.project):
        raise PermissionDenied()

    form = CheckFlagsForm(request.POST)
    if form.is_valid():
        source.check_flags = form.cleaned_data['flags']
        source.save()
    else:
        messages.error(request, _('Failed to change check flags!'))
    return redirect_next(request.POST.get('next'), source.get_absolute_url())
Beispiel #18
0
def delete_comment(request, pk):
    """Delete comment."""
    comment_obj = get_object_or_404(Comment, pk=pk)
    project = comment_obj.unit.translation.component.project
    request.user.check_access(project)

    if not request.user.has_perm('comment.delete', comment_obj, project):
        raise PermissionDenied()

    fallback_url = comment_obj.unit.get_absolute_url()

    comment_obj.delete()
    messages.info(request, _('Translation comment has been deleted.'))

    return redirect_next(request.POST.get('next'), fallback_url)
Beispiel #19
0
def edit_context(request, pk):
    """Change source string context."""
    source = get_object_or_404(Source, pk=pk)

    if not request.user.has_perm('source.edit', source.component):
        raise PermissionDenied()

    form = ContextForm(request.POST)
    if form.is_valid():
        source.context = form.cleaned_data['context']
        source.save()
    else:
        messages.error(request, _('Failed to change a context!'))
        show_form_errors(request, form)
    return redirect_next(request.POST.get('next'), source.get_absolute_url())
Beispiel #20
0
def delete_comment(request, pk):
    """Delete comment."""
    comment_obj = get_object_or_404(Comment, pk=pk)

    if not request.user.has_perm("comment.delete", comment_obj):
        raise PermissionDenied()

    fallback_url = comment_obj.unit.get_absolute_url()

    if "spam" in request.POST:
        comment_obj.report_spam()
    comment_obj.delete()
    messages.info(request, _("Translation comment has been deleted."))

    return redirect_next(request.POST.get("next"), fallback_url)
Beispiel #21
0
def edit_context(request, pk):
    unit = get_object_or_404(Unit, pk=pk)
    if not unit.is_source:
        raise Http404("Non source unit!")

    if not request.user.has_perm("source.edit", unit.translation.component):
        raise PermissionDenied()

    form = ContextForm(request.POST, instance=unit, user=request.user)

    if form.is_valid():
        form.save()
    else:
        messages.error(request, _("Failed to change a context!"))
        show_form_errors(request, form)

    return redirect_next(request.POST.get("next"), unit.get_absolute_url())
Beispiel #22
0
def delete_comment(request, pk):
    """Delete comment."""
    comment_obj = get_object_or_404(Comment, pk=pk)
    check_access(request, comment_obj.project)

    if not can_delete_comment(request.user, comment_obj.project):
        raise PermissionDenied()

    units = get_related_units(comment_obj)
    if units.exists():
        fallback_url = units[0].get_absolute_url()
    else:
        fallback_url = comment_obj.project.get_absolute_url()

    comment_obj.delete()
    messages.info(request, _('Translation comment has been deleted.'))

    return redirect_next(request.POST.get('next'), fallback_url)
Beispiel #23
0
def delete_comment(request, pk):
    """Delete comment."""
    comment_obj = get_object_or_404(Comment, pk=pk)
    check_access(request, comment_obj.project)

    if not can_delete_comment(request.user, comment_obj):
        raise PermissionDenied()

    units = get_related_units(comment_obj)
    if units.exists():
        fallback_url = units[0].get_absolute_url()
    else:
        fallback_url = comment_obj.project.get_absolute_url()

    comment_obj.delete()
    messages.info(request, _('Translation comment has been deleted.'))

    return redirect_next(request.POST.get('next'), fallback_url)
Beispiel #24
0
def show_glossary(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("glossary.add", prj):
        form = TermForm(prj, request.POST)
        if form.is_valid():
            Term.objects.create(
                request.user,
                language=lang,
                source=form.cleaned_data["source"],
                target=form.cleaned_data["target"],
                glossary=form.cleaned_data["glossary"],
            )
        return redirect_next(request.POST.get("next"), request.get_full_path())
    form = TermForm(prj,)

    uploadform = GlossaryUploadForm(prj)

    terms = Term.objects.for_project(prj).filter(language=lang).order()

    letterform = LetterForm(request.GET)

    searchform = OneTermForm(request.GET)

    if searchform.is_valid() and searchform.cleaned_data["term"] != "":
        terms = terms.filter(source__substring=searchform.cleaned_data["term"])
        search = searchform.cleaned_data["term"]
    else:
        search = ""

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

    terms = get_paginator(request, terms)

    last_changes = (
        Change.objects.last_changes(request.user)
        .filter(project=prj, language=lang)
        .exclude(glossary_term=None)[:10]
    )
Beispiel #25
0
def comment(request, pk):
    """Add new comment."""
    scope = unit = get_object_or_404(Unit, pk=pk)
    request.user.check_access(unit.translation.component.project)

    if not request.user.has_perm("comment.add", unit.translation):
        raise PermissionDenied()

    form = CommentForm(request.POST)

    if form.is_valid():
        if form.cleaned_data["scope"] == "global":
            scope = unit.source_info
        Comment.objects.add(scope, request.user, form.cleaned_data["comment"])
        messages.success(request, _("Posted new comment"))
    else:
        messages.error(request, _("Failed to add comment!"))

    return redirect_next(request.POST.get("next"), unit)
Beispiel #26
0
def comment(request, pk):
    """Add new comment."""
    scope = unit = get_object_or_404(Unit, pk=pk)
    component = unit.translation.component
    request.user.check_access(component.project)

    if not request.user.has_perm("comment.add", unit.translation):
        raise PermissionDenied()

    form = CommentForm(unit.translation, request.POST)

    if form.is_valid():
        # Is this source or target comment?
        if form.cleaned_data["scope"] in ("global", "report"):
            scope = unit.source_info
        # Create comment object
        Comment.objects.add(scope, request, form.cleaned_data["comment"])
        # Add review label/flag
        if form.cleaned_data["scope"] == "report":
            if component.has_template():
                if scope.translated and not scope.readonly:
                    scope.translate(
                        request.user,
                        scope.target,
                        STATE_FUZZY,
                        change_action=Change.ACTION_MARKED_EDIT,
                    )
            else:
                label = component.project.label_set.get_or_create(
                    name=gettext_noop("Source needs review"),
                    defaults={"color": "red"})[0]
                scope.labels.add(label)
        messages.success(request, _("Posted new comment"))
    else:
        messages.error(request, _("Failed to add comment!"))

    return redirect_next(request.POST.get("next"), unit)
Beispiel #27
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 can_add_dictionary(request.user, prj):
        form = WordForm(request.POST)
        if form.is_valid():
            Dictionary.objects.create(request.user,
                                      project=prj,
                                      language=lang,
                                      source=form.cleaned_data['source'],
                                      target=form.cleaned_data['target'])
        return redirect_next(request.POST.get('next'), request.get_full_path())
    else:
        form = WordForm()

    uploadform = DictUploadForm()

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

    page, limit = get_page_limit(request, 25)

    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 EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        words = paginator.page(paginator.num_pages)

    last_changes = Change.objects.last_changes(request.user).filter(
        dictionary__project=prj, dictionary__language=lang)[:10]

    return render(
        request, 'dictionary.html', {
            'title':
            dict_title(prj, lang),
            'project':
            prj,
            'language':
            lang,
            'page_obj':
            words,
            'form':
            form,
            'query_string':
            'letter={}'.format(letter) if letter else '',
            'uploadform':
            uploadform,
            'letterform':
            letterform,
            'letter':
            letter,
            'limit':
            limit,
            'page':
            page,
            'last_changes':
            last_changes,
            'last_changes_url':
            urlencode({
                'project': prj.slug,
                'lang': lang.code,
                'glossary': 1
            }),
        })
Beispiel #28
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('glossary.add', prj):
        form = WordForm(request.POST)
        if form.is_valid():
            Dictionary.objects.create(
                request.user,
                project=prj,
                language=lang,
                source=form.cleaned_data['source'],
                target=form.cleaned_data['target']
            )
        return redirect_next(
            request.POST.get('next'), request.get_full_path()
        )
    else:
        form = WordForm()

    uploadform = DictUploadForm()

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

    page, limit = get_page_limit(request, 25)

    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 EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        words = paginator.page(paginator.num_pages)

    last_changes = Change.objects.last_changes(request.user).filter(
        dictionary__project=prj,
        dictionary__language=lang
    )[:10]

    return render(
        request,
        'dictionary.html',
        {
            'title': dict_title(prj, lang),
            'project': prj,
            'language': lang,
            'page_obj': words,
            'form': form,
            'query_string': 'letter={}'.format(letter) if letter else '',
            'uploadform': uploadform,
            'letterform': letterform,
            'letter': letter,
            'limit': limit,
            'page': page,
            'last_changes': last_changes,
            'last_changes_url': urlencode({
                'project': prj.slug,
                'lang': lang.code,
                'glossary': 1
            }),
        }
    )
Beispiel #29
0
def show_glossary(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("glossary.add", prj):
        form = TermForm(prj, request.POST)
        if form.is_valid():
            Term.objects.create(
                request.user,
                language=lang,
                source=form.cleaned_data["source"],
                target=form.cleaned_data["target"],
                glossary=form.cleaned_data["glossary"],
            )
        return redirect_next(request.POST.get("next"), request.get_full_path())
    form = TermForm(prj)

    uploadform = GlossaryUploadForm(prj)

    terms = Term.objects.for_project(prj).filter(language=lang).order()

    letterform = LetterForm(request.GET)

    searchform = OneTermForm(request.GET)

    if searchform.is_valid() and searchform.cleaned_data["term"] != "":
        terms = terms.filter(source__substring=searchform.cleaned_data["term"])
        search = searchform.cleaned_data["term"]
    else:
        search = ""

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

    terms = get_paginator(request, terms)

    last_changes = (Change.objects.last_changes(request.user).filter(
        project=prj, language=lang).exclude(glossary_term=None)[:10])

    exporters = EXPORTERS.list_exporters_filter(EXPORT_TYPES)

    return render(
        request,
        "glossary.html",
        {
            "title":
            dict_title(prj, lang),
            "project":
            prj,
            "language":
            lang,
            "page_obj":
            terms,
            "exporters":
            exporters,
            "form":
            form,
            "query_string":
            urlencode({
                "term": search,
                "letter": letter
            }),
            "uploadform":
            uploadform,
            "letterform":
            letterform,
            "searchform":
            searchform,
            "letter":
            letter,
            "last_changes":
            last_changes,
            "last_changes_url":
            urlencode((
                ("project", prj.slug),
                ("lang", lang.code),
                ("action", Change.ACTION_DICTIONARY_NEW),
                ("action", Change.ACTION_DICTIONARY_EDIT),
                ("action", Change.ACTION_DICTIONARY_UPLOAD),
            )),
        },
    )
Beispiel #30
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('glossary.add', prj):
        form = WordForm(request.POST)
        if form.is_valid():
            Dictionary.objects.create(
                request.user,
                project=prj,
                language=lang,
                source=form.cleaned_data['source'],
                target=form.cleaned_data['target']
            )
        return redirect_next(
            request.POST.get('next'), request.get_full_path()
        )
    form = WordForm()

    uploadform = DictUploadForm()

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

    letterform = LetterForm(request.GET)

    searchform = OneWordForm(request.GET)

    if searchform.is_valid() and searchform.cleaned_data['term'] != '':
        words = words.filter(
            source__icontains=searchform.cleaned_data['term']
        )
        search = searchform.cleaned_data['term']
    else:
        search = ''

    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 = ''

    words = get_paginator(request, words)

    last_changes = Change.objects.last_changes(request.user).filter(
        dictionary__project=prj,
        dictionary__language=lang
    )[:10]

    return render(
        request,
        'dictionary.html',
        {
            'title': dict_title(prj, lang),
            'project': prj,
            'language': lang,
            'page_obj': words,
            'form': form,
            'query_string': urlencode({
                'term': search,
                'letter': letter
            }),
            'uploadform': uploadform,
            'letterform': letterform,
            'searchform': searchform,
            'letter': letter,
            'last_changes': last_changes,
            'last_changes_url': urlencode({
                'project': prj.slug,
                'lang': lang.code,
                'glossary': 1
            }),
        }
    )
Beispiel #31
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('glossary.add', prj):
        form = WordForm(request.POST)
        if form.is_valid():
            Dictionary.objects.create(
                request.user,
                project=prj,
                language=lang,
                source=form.cleaned_data['source'],
                target=form.cleaned_data['target']
            )
        return redirect_next(
            request.POST.get('next'), request.get_full_path()
        )
    else:
        form = WordForm()

    uploadform = DictUploadForm()

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

    letterform = LetterForm(request.GET)

    searchform = OneWordForm(request.GET)

    if searchform.is_valid() and searchform.cleaned_data['term'] != '':
        words = words.filter(
            source__icontains=searchform.cleaned_data['term']
        )
        search = searchform.cleaned_data['term']
    else:
        search = ''

    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 = ''

    words = get_paginator(request, words)

    last_changes = Change.objects.last_changes(request.user).filter(
        dictionary__project=prj,
        dictionary__language=lang
    )[:10]

    return render(
        request,
        'dictionary.html',
        {
            'title': dict_title(prj, lang),
            'project': prj,
            'language': lang,
            'page_obj': words,
            'form': form,
            'query_string': urlencode({
                'term': search,
                'letter': letter
            }),
            'uploadform': uploadform,
            'letterform': letterform,
            'searchform': searchform,
            'letter': letter,
            'last_changes': last_changes,
            'last_changes_url': urlencode({
                'project': prj.slug,
                'lang': lang.code,
                'glossary': 1
            }),
        }
    )