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, })
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)
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)
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)
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, } )