def new_language(request, project, subproject): obj = get_subproject(request, project, subproject) if not can_add_translation(request.user, obj.project): raise PermissionDenied() form = get_new_language_form(request, obj)(obj, request.POST) if form.is_valid(): langs = form.cleaned_data['lang'] if isinstance(langs, string_types): langs = [langs] 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) else: messages.error(request, _('Invalid language chosen!')) return redirect(obj)
def new_language(request, project, subproject): obj = get_subproject(request, project, subproject) if not can_add_translation(request.user, obj.project): raise PermissionDenied() form = get_new_language_form(request, obj)(obj, request.POST) if form.is_valid(): langs = form.cleaned_data['lang'] if isinstance(langs, string_types): langs = [langs] 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) else: messages.error( request, _('Invalid language chosen!') ) return redirect(obj)
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 show_subproject(request, project, subproject): obj = get_subproject(request, project, subproject) last_changes = Change.objects.prefetch().filter( translation__subproject=obj )[:10] new_lang_form = get_new_language_form(request, obj)(obj) return render( request, 'subproject.html', { 'object': obj, 'project': obj.project, 'translations': sort_objects(obj.translation_set.enabled()), 'show_language': 1, 'reports_form': ReportsForm(), 'last_changes': last_changes, 'last_changes_url': urlencode( {'subproject': obj.slug, 'project': obj.project.slug} ), 'new_lang_form': new_lang_form, } )
def new_language(request, project, component): obj = get_component(request, project, component) user = request.user form_class = get_new_language_form(request, obj) can_add = obj.can_add_new_language(user) if request.method == "POST": form = form_class(obj, request.POST) if form.is_valid(): result = obj langs = form.cleaned_data["lang"] kwargs = { "user": user, "author": user, "component": obj, "details": {}, } with obj.repository.lock: for language in Language.objects.filter(code__in=langs): kwargs["details"]["language"] = language.code if can_add: translation = obj.add_new_language( language, request, create_translations=False ) if translation: kwargs["translation"] = translation if len(langs) == 1: result = translation Change.objects.create( action=Change.ACTION_ADDED_LANGUAGE, **kwargs ) elif obj.new_lang == "contact": Change.objects.create( action=Change.ACTION_REQUESTED_LANGUAGE, **kwargs ) messages.success( request, _( "A request for a new translation has been " "sent to the project's maintainers." ), ) if not obj.create_translations(request=request): messages.warning( request, _("The translation will be updated in the background.") ) if user.has_perm("component.edit", obj): reset_rate_limit("language", request) return redirect(result) 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, "can_add": can_add}, )
def new_language(request, project, component): obj = get_component(request, project, component) form_class = get_new_language_form(request, obj) can_add = obj.can_add_new_language(request) if request.method == 'POST': form = form_class(obj, request.POST) if form.is_valid(): langs = form.cleaned_data['lang'] kwargs = { 'user': request.user, 'author': request.user, 'component': obj, 'details': {}, } for language in Language.objects.filter(code__in=langs): kwargs['details']['language'] = language.code if can_add: obj.add_new_language(language, request) Change.objects.create( action=Change.ACTION_ADDED_LANGUAGE, **kwargs ) elif obj.new_lang == 'contact': Change.objects.create( action=Change.ACTION_REQUESTED_LANGUAGE, **kwargs ) messages.success( request, _( "A request for a new translation has been " "sent to the project's maintainers." ) ) 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, 'can_add': can_add, } )
def new_language(request, project, component): obj = get_component(request, project, component) form_class = get_new_language_form(request, obj) can_add = obj.can_add_new_language(request) if request.method == 'POST': form = form_class(obj, request.POST) if form.is_valid(): langs = form.cleaned_data['lang'] kwargs = { 'user': request.user, 'author': request.user, 'component': obj, 'details': {}, } for language in Language.objects.filter(code__in=langs): kwargs['details']['language'] = language.code if can_add: obj.add_new_language(language, request) Change.objects.create( action=Change.ACTION_ADDED_LANGUAGE, **kwargs ) elif obj.new_lang == 'contact': Change.objects.create( action=Change.ACTION_REQUESTED_LANGUAGE, **kwargs ) messages.success( request, _( "A request for a new translation has been " "sent to the project's maintainers." ) ) return redirect(obj) 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, 'can_add': can_add, } )
def new_language(request, project, component): obj = get_component(request, project, component) form_class = get_new_language_form(request, obj) can_add = obj.can_add_new_language(request.user) if request.method == "POST": form = form_class(obj, request.POST) if form.is_valid(): langs = form.cleaned_data["lang"] kwargs = { "user": request.user, "author": request.user, "component": obj, "details": {}, } for language in Language.objects.filter(code__in=langs): kwargs["details"]["language"] = language.code if can_add: translation = obj.add_new_language(language, request) if translation: kwargs["translation"] = translation if len(langs) == 1: obj = translation Change.objects.create( action=Change.ACTION_ADDED_LANGUAGE, **kwargs) elif obj.new_lang == "contact": Change.objects.create( action=Change.ACTION_REQUESTED_LANGUAGE, **kwargs) messages.success( request, _("A request for a new translation has been " "sent to the project's maintainers."), ) return redirect(obj) 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, "can_add": can_add }, )
def show_subproject(request, project, subproject): obj = get_subproject(request, project, subproject) last_changes = Change.objects.prefetch().filter( translation__subproject=obj)[:10] new_lang_form = get_new_language_form(request, obj)(obj) if (request.method == 'POST' and can_edit_subproject(request.user, obj.project)): settings_form = SubprojectSettingsForm(request.POST, instance=obj) if settings_form.is_valid(): settings_form.save() messages.success(request, _('Settings saved')) return redirect(obj) else: messages.error( request, _('Invalid settings, please check the form for errors!')) else: settings_form = SubprojectSettingsForm(instance=obj) return render( request, 'subproject.html', { 'object': obj, 'project': obj.project, 'translations': sort_objects(obj.translation_set.enabled()), 'show_language': 1, 'reports_form': ReportsForm(), 'last_changes': last_changes, 'last_changes_url': urlencode({ 'subproject': obj.slug, 'project': obj.project.slug }), 'new_lang_form': new_lang_form, 'settings_form': settings_form, })
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 show_subproject(request, project, subproject): obj = get_subproject(request, project, subproject) last_changes = Change.objects.for_component(obj)[:10] new_lang_form = get_new_language_form(request, obj)(obj) if (request.method == 'POST' and can_edit_subproject(request.user, obj.project)): settings_form = SubprojectSettingsForm(request.POST, instance=obj) if settings_form.is_valid(): settings_form.save() messages.success(request, _('Settings saved')) return redirect(obj) else: messages.error( request, _('Invalid settings, please check the form for errors!') ) else: settings_form = SubprojectSettingsForm(instance=obj) return render( request, 'subproject.html', { 'object': obj, 'project': obj.project, 'translations': sort_objects(obj.translation_set.enabled()), 'show_language': 1, 'reports_form': ReportsForm(), 'last_changes': last_changes, 'last_changes_url': urlencode( {'subproject': obj.slug, 'project': obj.project.slug} ), 'new_lang_form': new_lang_form, 'settings_form': settings_form, } )
def show_subproject(request, project, subproject): obj = get_subproject(request, project, subproject) last_changes = Change.objects.for_component(obj)[:10] new_lang_form = get_new_language_form(request, obj)(obj) if (request.method == 'POST' and can_edit_subproject(request.user, obj.project)): settings_form = SubprojectSettingsForm(request.POST, instance=obj) if settings_form.is_valid(): settings_form.save() messages.success(request, _('Settings saved')) return redirect(obj) else: messages.error( request, _('Invalid settings, please check the form for errors!')) else: settings_form = SubprojectSettingsForm(instance=obj) try: sample = obj.translation_set.all()[0] source_words = sample.total_words total_strings = sample.total except IndexError: source_words = 0 total_strings = 0 return render( request, 'subproject.html', { 'object': obj, 'project': obj.project, 'translations': sort_objects(obj.translation_set.enabled()), 'show_language': 1, 'reports_form': ReportsForm(), 'last_changes': last_changes, 'last_changes_url': urlencode({ 'subproject': obj.slug, 'project': obj.project.slug }), 'new_lang_form': new_lang_form, 'settings_form': settings_form, 'unit_count': Unit.objects.filter(translation__subproject=obj).count(), 'words_count': obj.get_total_words(), 'language_count': Language.objects.filter( translation__subproject=obj).distinct().count(), 'strings_count': total_strings, 'source_words_count': source_words, })