def translate(request, locale, slug, part): """Translate view.""" locale = get_object_or_404(Locale, code=locale) projects = ( Project.objects.available() .prefetch_related('subpage_set', 'tag_set') .order_by('name') ) if slug.lower() == 'all-projects': project = Project(name='All Projects', slug=slug.lower()) else: project = get_object_or_404(Project.objects.available(), slug=slug) if locale not in project.locales.all(): raise Http404 return render(request, 'translate.html', { 'download_form': forms.DownloadFileForm(), 'upload_form': forms.UploadFileForm(), 'locale': locale, 'locale_projects': locale.available_projects_list(), 'locales': Locale.objects.available(), 'part': part, 'project': project, 'projects': projects, })
def translate(request, locale, slug, part): """Translate view.""" locale = get_object_or_404(Locale, code=locale) projects = ( Project.objects.available() .prefetch_related('subpage_set', 'tag_set') .order_by('name') ) if slug.lower() == 'all-projects': project = Project(name='All Projects', slug=slug.lower()) else: project = get_object_or_404(Project.objects.available(), slug=slug) if locale not in project.locales.all(): raise Http404 return render(request, 'translate.html', { 'download_form': forms.DownloadFileForm(), 'upload_form': forms.UploadFileForm(), 'locale': locale, 'locale_projects': locale.available_projects_list(), 'locales': Locale.objects.available(), 'part': part, 'project': project, 'projects': projects, 'is_google_translate_supported': bool(settings.GOOGLE_TRANSLATE_API_KEY), 'is_microsoft_translator_supported': bool(settings.MICROSOFT_TRANSLATOR_API_KEY), })
def entities(request): """Get entities for the specified project, locale and paths.""" form = forms.GetEntitiesForm(request.POST) if not form.is_valid(): return JsonResponse( { 'status': False, 'message': '{error}'.format(error=form.errors.as_json(escape_html=True)), }, status=400) locale = get_object_or_404(Locale, code=form.cleaned_data['locale']) project_slug = form.cleaned_data['project'] if project_slug == 'all-projects': project = Project(slug=project_slug) else: project = get_object_or_404(Project, slug=project_slug) # Only return entities with provided IDs (batch editing) if form.cleaned_data['entity_ids']: return _get_entities_list(locale, project, form) # `Entity.for_project_locale` only requires a subset of the fields the form contains. We thus # make a new dict with only the keys we want to pass to that function. restrict_to_keys = ( 'paths', 'status', 'search', 'exclude_entities', 'extra', 'time', 'author', 'tag', ) form_data = { k: form.cleaned_data[k] for k in restrict_to_keys if k in form.cleaned_data } entities = Entity.for_project_locale(project, locale, **form_data) # Only return a list of entity PKs (batch editing: select all) if form.cleaned_data['pk_only']: return JsonResponse({ 'entity_pks': list(entities.values_list('pk', flat=True)), }) # In-place view: load all entities if form.cleaned_data['inplace_editor']: return _get_all_entities(locale, project, form, entities) # Out-of-context view: paginate entities return _get_paginated_entities(locale, project, form, entities)
def translate(request, locale, slug, part): """Translate view.""" # Redirect the user to the Translate.Next app if needed. # To be removed as part of bug 1527853. user = request.user if (waffle.switch_is_active('translate_next') and user.is_authenticated and user.profile.use_translate_next): url = reverse('pontoon.translate.next', kwargs={ 'project': slug, 'locale': locale, 'resource': part, }) query = request.GET.urlencode() if query: url += '?' + query return redirect(url) locale = get_object_or_404(Locale, code=locale) projects = (Project.objects.available().prefetch_related( 'subpage_set', 'tag_set').order_by('name')) if slug.lower() == 'all-projects': project = Project(name='All Projects', slug=slug.lower()) else: project = get_object_or_404(Project.objects.available(), slug=slug) if locale not in project.locales.all(): raise Http404 return render( request, 'translate.html', { 'download_form': forms.DownloadFileForm(), 'upload_form': forms.UploadFileForm(), 'locale': locale, 'locale_projects': locale.available_projects_list(), 'locales': Locale.objects.available(), 'part': part, 'project': project, 'projects': projects, 'is_google_translate_supported': bool(settings.GOOGLE_TRANSLATE_API_KEY), 'is_microsoft_translator_supported': bool(settings.MICROSOFT_TRANSLATOR_API_KEY), })
def entities(request): """Get entities for the specified project, locale and paths.""" form = forms.GetEntitiesForm(request.POST) if not form.is_valid(): return JsonResponse( { "status": False, "message": "{error}".format(error=form.errors.as_json(escape_html=True)), }, status=400, ) locale = get_object_or_404(Locale, code=form.cleaned_data["locale"]) preferred_source_locale = "" if request.user.is_authenticated: preferred_source_locale = request.user.profile.preferred_source_locale project_slug = form.cleaned_data["project"] if project_slug == "all-projects": project = Project(slug=project_slug) else: project = get_object_or_404(Project, slug=project_slug) # Only return entities with provided IDs (batch editing) if form.cleaned_data["entity_ids"]: return _get_entities_list(locale, preferred_source_locale, project, form) # `Entity.for_project_locale` only requires a subset of the fields the form contains. We thus # make a new dict with only the keys we want to pass to that function. restrict_to_keys = ( "paths", "status", "search", "exclude_entities", "extra", "time", "author", "tag", ) form_data = { k: form.cleaned_data[k] for k in restrict_to_keys if k in form.cleaned_data } try: entities = Entity.for_project_locale(project, locale, **form_data) except ValueError as error: return JsonResponse( { "status": False, "message": "{error}".format(error=error) }, status=500) # Only return a list of entity PKs (batch editing: select all) if form.cleaned_data["pk_only"]: return JsonResponse( {"entity_pks": list(entities.values_list("pk", flat=True))}) # In-place view: load all entities if form.cleaned_data["inplace_editor"]: return _get_all_entities(locale, preferred_source_locale, project, form, entities) # Out-of-context view: paginate entities return _get_paginated_entities(locale, preferred_source_locale, project, form, entities)