def comment(request, pk): """Add new comment.""" unit = get_object_or_404(Unit, pk=pk) check_access(request, unit.translation.subproject.project) if not can_add_comment(request.user, unit.translation.subproject.project): 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)
def add_dictionary(request, unit_id): unit = get_object_or_404(Unit, pk=int(unit_id)) check_access(request, unit.translation.subproject.project) prj = unit.translation.subproject.project lang = unit.translation.language code = 403 results = '' 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'] ) code = 200 results = render_to_string( 'glossary-embed.html', { 'glossary': Dictionary.objects.get_words(unit), 'unit': unit, 'user': request.user, } ) return JsonResponse( data={'responseCode': code, 'results': results} )
def comment(request, pk): """Add new comment.""" unit = get_object_or_404(Unit, pk=pk) check_access(request, unit.translation.subproject.project) if not can_add_comment(request.user, unit.translation.subproject.project): 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)
def add_dictionary(request, unit_id): unit = get_object_or_404(Unit, pk=int(unit_id)) check_access(request, unit.translation.subproject.project) prj = unit.translation.subproject.project lang = unit.translation.language code = 403 results = '' 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']) code = 200 results = render_to_string( 'glossary-embed.html', { 'glossary': Dictionary.objects.get_words(unit), 'unit': unit, 'user': request.user, }) return JsonResponse(data={'responseCode': code, 'results': results})
def translate(request, unit_id): """AJAX handler for translating.""" unit = get_object_or_404(Unit, pk=int(unit_id)) check_access(request, unit.translation.subproject.project) if not can_use_mt(request.user, unit.translation): raise PermissionDenied() service_name = request.GET.get('service', 'INVALID') if service_name not in MACHINE_TRANSLATION_SERVICES: return HttpResponseBadRequest('Invalid service specified') translation_service = MACHINE_TRANSLATION_SERVICES[service_name] # Error response response = { 'responseStatus': 500, 'service': translation_service.name, 'responseDetails': '', 'translations': [], 'lang': unit.translation.language.code, 'dir': unit.translation.language.direction, } try: response['translations'] = translation_service.translate( unit.translation.language.code, unit.get_source_plurals()[0], unit, request.user) response['responseStatus'] = 200 except Exception as exc: response['responseDetails'] = '{0}: {1}'.format( exc.__class__.__name__, str(exc)) return JsonResponse(data=response, )
def get_subproject(request, project, subproject, skip_acl=False): """Return subproject matching parameters.""" subproject = get_object_or_404(SubProject.objects.prefetch(), project__slug=project, slug=subproject) if not skip_acl: check_access(request, subproject.project) return subproject
def get_project(request, project, skip_acl=False): """Return project matching parameters.""" project = get_object_or_404( Project, slug=project, ) if not skip_acl: check_access(request, project) return project
def get_translation(request, project, subproject, lang, skip_acl=False): """Return translation matching parameters.""" translation = get_object_or_404(Translation.objects.prefetch(), language__code=lang, subproject__slug=subproject, subproject__project__slug=project) if not skip_acl: check_access(request, translation.subproject.project) return translation
def get_project(request, project, skip_acl=False): """Return project matching parameters.""" project = get_object_or_404( Project, slug=project, ) if not skip_acl: check_access(request, project) return project
def get_unit_changes(request, unit_id): """Return unit's recent changes.""" unit = get_object_or_404(Unit, pk=int(unit_id)) check_access(request, unit.translation.subproject.project) return render( request, 'js/changes.html', { 'last_changes': unit.change_set.all()[:10], 'last_changes_url': urlencode(unit.translation.get_kwargs()), })
def get_component(request, project, component, skip_acl=False): """Return component matching parameters.""" component = get_object_or_404( Component.objects.prefetch(), project__slug=project, slug=component ) if not skip_acl: check_access(request, component.project) return component
def get_subproject(request, project, subproject, skip_acl=False): """Return subproject matching parameters.""" subproject = get_object_or_404( SubProject.objects.prefetch(), project__slug=project, slug=subproject ) if not skip_acl: check_access(request, subproject.project) return subproject
def ignore_check(request, check_id): obj = get_object_or_404(Check, pk=int(check_id)) check_access(request, obj.project) if not can_ignore_check(request.user, obj.project): raise PermissionDenied() # Mark check for ignoring obj.set_ignore() # response for AJAX return HttpResponse('ok')
def ignore_check(request, check_id): obj = get_object_or_404(Check, pk=int(check_id)) check_access(request, obj.project) if not can_ignore_check(request.user, obj.project): raise PermissionDenied() # Mark check for ignoring obj.set_ignore() # response for AJAX return HttpResponse('ok')
def get_translation(request, project, subproject, lang, skip_acl=False): """Return translation matching parameters.""" translation = get_object_or_404( Translation.objects.prefetch(), language__code=lang, subproject__slug=subproject, subproject__project__slug=project, enabled=True ) if not skip_acl: check_access(request, translation.subproject.project) return translation
def get_unit_translations(request, unit_id): """Return unit's other translations.""" unit = get_object_or_404(Unit, pk=int(unit_id)) check_access(request, unit.translation.subproject.project) return render( request, 'js/translations.html', { 'units': Unit.objects.filter( id_hash=unit.id_hash, translation__subproject=unit.translation.subproject, ).exclude(pk=unit.pk), })
def get_unit_changes(request, unit_id): """Return unit's recent changes.""" unit = get_object_or_404(Unit, pk=int(unit_id)) check_access(request, unit.translation.subproject.project) return render( request, 'js/changes.html', { 'last_changes': unit.change_set.all()[:10], 'last_changes_url': urlencode(unit.translation.get_kwargs()), } )
def delete_screenshot(request, pk): obj = get_object_or_404(Screenshot, pk=pk) check_access(request, obj.component.project) if not can_delete_screenshot(request.user, obj.component.project): raise PermissionDenied() kwargs = { 'project': obj.component.project.slug, 'subproject': obj.component.slug, } obj.delete() messages.success(request, _('Screenshot %s has been deleted.') % obj.name) return redirect('screenshots', **kwargs)
def delete_screenshot(request, pk): obj = get_object_or_404(Screenshot, pk=pk) check_access(request, obj.component.project) if not can_delete_screenshot(request.user, obj.component.project): raise PermissionDenied() kwargs = { 'project': obj.component.project.slug, 'subproject': obj.component.slug, } obj.delete() messages.success(request, _('Screenshot %s has been deleted.') % obj.name) return redirect('screenshots', **kwargs)
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)
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)
def add_dictionary(request, unit_id): unit = get_object_or_404(Unit, pk=int(unit_id)) check_access(request, unit.translation.subproject.project) prj = unit.translation.subproject.project lang = unit.translation.language code = 403 results = '' words = [] if request.method == 'POST' and can_add_dictionary(request.user, prj): form = WordForm(request.POST) if form.is_valid(): word = Dictionary.objects.create( request.user, project=prj, language=lang, source=form.cleaned_data['source'], target=form.cleaned_data['target'] ) words = form.cleaned_data['words'] words.append(word.id) code = 200 results = render_to_string( 'glossary-embed.html', { 'glossary': ( Dictionary.objects.get_words(unit) | Dictionary.objects.filter(project=prj, pk__in=words) ), 'unit': unit, 'user': request.user, } ) return JsonResponse( data={ 'responseCode': code, 'results': results, 'words': ','.join([str(x) for x in words]) } )
def translate(request, unit_id): """AJAX handler for translating.""" unit = get_object_or_404(Unit, pk=int(unit_id)) check_access(request, unit.translation.subproject.project) if not can_use_mt(request.user, unit.translation): raise PermissionDenied() service_name = request.GET.get('service', 'INVALID') if service_name not in MACHINE_TRANSLATION_SERVICES: return HttpResponseBadRequest('Invalid service specified') translation_service = MACHINE_TRANSLATION_SERVICES[service_name] # Error response response = { 'responseStatus': 500, 'service': translation_service.name, 'responseDetails': '', 'translations': [], 'lang': unit.translation.language.code, 'dir': unit.translation.language.direction, } try: response['translations'] = translation_service.translate( unit.translation.language.code, unit.get_source_plurals()[0], unit, request.user ) response['responseStatus'] = 200 except Exception as exc: response['responseDetails'] = '{0}: {1}'.format( exc.__class__.__name__, str(exc) ) return JsonResponse( data=response, )
def get_screenshot(request, pk): obj = get_object_or_404(Screenshot, pk=pk) check_access(request, obj.component.project) if not can_change_screenshot(request.user, obj.component.project): raise PermissionDenied() return obj
def get_screenshot(request, pk): obj = get_object_or_404(Screenshot, pk=pk) check_access(request, obj.component.project) if not can_change_screenshot(request.user, obj.component.project): raise PermissionDenied() return obj
def get_object(self, *args, **kwargs): obj = super(ScreenshotDetail, self).get_object(*args, **kwargs) check_access(self.request, obj.component.project) return obj
def get_object(self, *args, **kwargs): obj = super(ScreenshotDetail, self).get_object(*args, **kwargs) check_access(self.request, obj.component.project) return obj