示例#1
0
文件: basic.py 项目: sunner/weblate
def new_language(request, project, component):
    obj = get_component(request, project, component)

    form_class = get_new_language_form(request, obj)

    if request.method == 'POST':
        form = form_class(obj, request.POST)

        if form.is_valid():
            langs = form.cleaned_data['lang']
            for language in Language.objects.filter(code__in=langs):
                if obj.new_lang == 'contact':
                    notify_new_language(obj, language, request.user)
                    messages.success(
                        request,
                        _("A request for a new translation has been "
                          "sent to the project's maintainers."))
                elif obj.new_lang == 'add':
                    obj.add_new_language(language, request)
            return redirect(obj)
        else:
            messages.error(request, _('Please fix errors in the form.'))
    else:
        form = form_class(obj)

    return render(request, 'new-language.html', {
        'object': obj,
        'project': obj.project,
        'form': form,
    })
示例#2
0
    def test_notify_new_language(self):
        second_user = self.second_user()
        notify_new_language(
            self.component,
            Language.objects.filter(code='de'),
            second_user
        )

        # Check mail
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(
            mail.outbox[0].subject,
            '[Weblate] New language request in Test/Test'
        )

        # Add project owner
        self.component.project.add_user(second_user, '@Administration')
        notify_new_language(
            self.component,
            Language.objects.filter(code='de'),
            second_user,
        )

        # Check mail
        self.assertEqual(len(mail.outbox), 3)
示例#3
0
    def test_notify_new_language(self):
        second_user = self.second_user()
        notify_new_language(
            self.component,
            Language.objects.filter(code='de'),
            second_user
        )

        # Check mail
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(
            mail.outbox[0].subject,
            '[Weblate] New language request in Test/Test'
        )

        # Add project owner
        self.component.project.add_user(second_user, '@Administration')
        notify_new_language(
            self.component,
            Language.objects.filter(code='de'),
            second_user,
        )

        # Check mail
        self.assertEqual(len(mail.outbox), 3)
示例#4
0
def notify_change(change_id):
    from weblate.trans.models import Change
    from weblate.accounts.notifications import (
        notify_merge_failure,
        notify_parse_error,
        notify_new_string,
        notify_new_contributor,
        notify_new_suggestion,
        notify_new_comment,
        notify_new_translation,
        notify_new_language,
    )
    change = Change.objects.get(pk=change_id)
    if change.action in (Change.ACTION_FAILED_MERGE,
                         Change.ACTION_FAILED_REBASE):
        notify_merge_failure(change)
    elif change.action == Change.ACTION_PARSE_ERROR:
        notify_parse_error(change)
    elif change.action == Change.ACTION_NEW_STRING:
        notify_new_string(change)
    elif change.action == Change.ACTION_NEW_CONTRIBUTOR:
        notify_new_contributor(change)
    elif change.action == Change.ACTION_SUGGESTION:
        notify_new_suggestion(change)
    elif change.action == Change.ACTION_COMMENT:
        notify_new_comment(change)
    elif change.action in Change.ACTIONS_CONTENT:
        notify_new_translation(change)
    elif change.action in (Change.ACTION_ADDED_LANGUAGE,
                           Change.ACTION_REQUESTED_LANGUAGE):
        notify_new_language(change)
    def test_notify_new_language(self):
        second_user = self.second_user()
        change = Change(user=second_user,
                        component=self.component,
                        details={'language': 'de'})
        notify_new_language(change)

        # Check mail
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].subject,
                         '[Weblate] New language request in Test/Test')

        # Add project owner
        self.component.project.add_user(second_user, '@Administration')
        notify_new_language(change)

        # Check mail
        self.assertEqual(len(mail.outbox), 3)
示例#6
0
文件: basic.py 项目: dsnoeck/weblate
def new_language(request, project, component):
    obj = get_component(request, project, component)

    form_class = get_new_language_form(request, obj)

    if request.method == 'POST':
        form = form_class(obj, request.POST)

        if form.is_valid():
            langs = form.cleaned_data['lang']
            for language in Language.objects.filter(code__in=langs):
                if obj.new_lang == 'contact':
                    notify_new_language(obj, language, request.user)
                    messages.success(
                        request,
                        _(
                            "A request for a new translation has been "
                            "sent to the project's maintainers."
                        )
                    )
                elif obj.new_lang == 'add':
                    obj.add_new_language(language, request)
            return redirect(obj)
        else:
            messages.error(
                request,
                _('Please fix errors in the form.')
            )
    else:
        form = form_class(obj)

    return render(
        request,
        'new-language.html',
        {
            'object': obj,
            'project': obj.project,
            'form': form,
        }
    )