class ScreenshotDetail(DetailView): model = Screenshot _edit_form = None def get_object(self, *args, **kwargs): obj = super(ScreenshotDetail, self).get_object(*args, **kwargs) self.request.user.check_access(obj.component.project) return obj def get_context_data(self, **kwargs): result = super(ScreenshotDetail, self).get_context_data(**kwargs) component = result['object'].component if self.request.user.has_perm('screenshot.edit', component): if self._edit_form is not None: result['edit_form'] = self._edit_form else: result['edit_form'] = ScreenshotForm(instance=result['object']) return result def post(self, request, **kwargs): obj = self.get_object() if request.user.has_perm('screenshot.edit', obj.component): self._edit_form = ScreenshotForm( request.POST, request.FILES, instance=obj ) if self._edit_form.is_valid(): if request.FILES: obj.user = request.user request.user.profile.uploaded += 1 request.user.profile.save(update_fields=['uploaded']) self._edit_form.save() else: return self.get(request, **kwargs) return redirect(obj)
class ScreenshotDetail(DetailView): model = Screenshot _edit_form = None 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_context_data(self, **kwargs): result = super(ScreenshotDetail, self).get_context_data(**kwargs) component = result['object'].component if can_change_screenshot(self.request.user, component.project): if self._edit_form is not None: result['edit_form'] = self._edit_form else: result['edit_form'] = ScreenshotForm(instance=result['object']) return result def post(self, request, **kwargs): obj = self.get_object() if can_change_screenshot(request.user, obj.component.project): self._edit_form = ScreenshotForm( request.POST, request.FILES, instance=obj ) if self._edit_form.is_valid(): self._edit_form.save() else: return self.get(request, **kwargs) return redirect(obj)
def post(self, request, **kwargs): component = self.get_component() if not request.user.has_perm('screenshot.add', component): raise PermissionDenied() self._add_form = ScreenshotForm(request.POST, request.FILES) if self._add_form.is_valid(): obj = Screenshot.objects.create( component=component, user=request.user, **self._add_form.cleaned_data ) request.user.profile.uploaded += 1 request.user.profile.save(update_fields=['uploaded']) try_add_source(request, obj) messages.success( request, _( 'Screenshot has been uploaded, ' 'you can now assign it to source strings.' ) ) return redirect(obj) messages.error( request, _('Failed to upload screenshot, please fix errors below.') ) return self.get(request, **kwargs)
def post(self, request, **kwargs): component = self.get_component(kwargs) if not can_add_screenshot(request.user, component.project): raise PermissionDenied() self._add_form = ScreenshotForm(request.POST, request.FILES) if self._add_form.is_valid(): obj = Screenshot.objects.create( component=component, **self._add_form.cleaned_data ) try_add_source(request, obj) messages.success( request, _( 'Screenshot has been uploaded, ' 'you can now assign it to source strings.' ) ) return redirect(obj) else: messages.error( request, _('Failed to upload screenshot, please fix errors below.') ) return self.get(request, **kwargs)
def post(self, request, **kwargs): component = self.get_component() if not request.user.has_perm("screenshot.add", component): raise PermissionDenied() self._add_form = ScreenshotForm(component, request.POST, request.FILES) if self._add_form.is_valid(): obj = Screenshot.objects.create(user=request.user, **self._add_form.cleaned_data) request.user.profile.increase_count("uploaded") obj.change_set.create( action=Change.ACTION_SCREENSHOT_ADDED, user=request.user, target=obj.name, ) try_add_source(request, obj) messages.success( request, _("Screenshot has been uploaded, " "you can now assign it to source strings."), ) return redirect(obj) messages.error( request, _("Failed to upload screenshot, please fix errors below.")) return self.get(request, **kwargs)
class ScreenshotDetail(DetailView): model = Screenshot _edit_form = None def get_object(self, *args, **kwargs): obj = super().get_object(*args, **kwargs) self.request.user.check_access_component(obj.component) return obj def get_context_data(self, **kwargs): result = super().get_context_data(**kwargs) component = result["object"].component if self.request.user.has_perm("screenshot.edit", component): if self._edit_form is not None: result["edit_form"] = self._edit_form else: result["edit_form"] = ScreenshotForm(instance=result["object"]) return result def post(self, request, **kwargs): obj = self.get_object() if request.user.has_perm("screenshot.edit", obj.component): self._edit_form = ScreenshotForm(request.POST, request.FILES, instance=obj) if self._edit_form.is_valid(): if request.FILES: obj.user = request.user request.user.profile.increase_count("uploaded") self._edit_form.save() else: return self.get(request, **kwargs) return redirect(obj)
def post(self, request, **kwargs): obj = self.get_object() if request.user.has_perm('screenshot.edit', obj.component): self._edit_form = ScreenshotForm( request.POST, request.FILES, instance=obj ) if self._edit_form.is_valid(): self._edit_form.save() else: return self.get(request, **kwargs) return redirect(obj)
def post(self, request, **kwargs): obj = self.get_object() if can_change_screenshot(request.user, obj.component.project): self._edit_form = ScreenshotForm( request.POST, request.FILES, instance=obj ) if self._edit_form.is_valid(): self._edit_form.save() else: return self.get(request, **kwargs) return redirect(obj)
def post(self, request, **kwargs): obj = self.get_object() if request.user.has_perm("screenshot.edit", obj.component): self._edit_form = ScreenshotForm(request.POST, request.FILES, instance=obj) if self._edit_form.is_valid(): if request.FILES: obj.user = request.user request.user.profile.increase_count("uploaded") self._edit_form.save() else: return self.get(request, **kwargs) return redirect(obj)
def post(self, request, **kwargs): obj = self.get_object() if request.user.has_perm('screenshot.edit', obj.component): self._edit_form = ScreenshotForm( request.POST, request.FILES, instance=obj ) if self._edit_form.is_valid(): if request.FILES: obj.user = request.user request.user.profile.uploaded += 1 request.user.profile.save(update_fields=['uploaded']) self._edit_form.save() else: return self.get(request, **kwargs) return redirect(obj)
def get_context_data(self, **kwargs): result = super(ScreenshotDetail, self).get_context_data(**kwargs) component = result['object'].component if can_change_screenshot(self.request.user, component.project): if self._edit_form is not None: result['edit_form'] = self._edit_form else: result['edit_form'] = ScreenshotForm(instance=result['object']) return result
def get_context_data(self, **kwargs): result = super().get_context_data(**kwargs) component = result["object"].component if self.request.user.has_perm("screenshot.edit", component): if self._edit_form is not None: result["edit_form"] = self._edit_form else: result["edit_form"] = ScreenshotForm(instance=result["object"]) return result
def get_context_data(self): result = super(ScreenshotList, self).get_context_data() component = self.kwargs['component'] result['object'] = component if can_add_screenshot(self.request.user, component.project): if self._add_form is not None: result['add_form'] = self._add_form else: result['add_form'] = ScreenshotForm() return result
def get_context_data(self): result = super().get_context_data() component = self.kwargs['component'] result['object'] = component if self.request.user.has_perm('screenshot.add', component): if self._add_form is not None: result['add_form'] = self._add_form else: result['add_form'] = ScreenshotForm() return result
def get_context_data(self, **kwargs): result = super().get_context_data(**kwargs) component = self.kwargs["component"] result["object"] = component if self.request.user.has_perm("screenshot.add", component): if self._add_form is not None: result["add_form"] = self._add_form else: result["add_form"] = ScreenshotForm() return result
class ScreenshotList(ListView, ComponentViewMixin): paginate_by = 25 model = Screenshot _add_form = None def get_queryset(self): self.kwargs["component"] = self.get_component() return ( Screenshot.objects.filter(translation__component=self.kwargs["component"]) .prefetch_related("translation__language") .order() ) def get_context_data(self, **kwargs): result = super().get_context_data(**kwargs) component = self.kwargs["component"] result["object"] = component if self.request.user.has_perm("screenshot.add", component): if self._add_form is not None: result["add_form"] = self._add_form else: result["add_form"] = ScreenshotForm(component) return result def post(self, request, **kwargs): component = self.get_component() if not request.user.has_perm("screenshot.add", component): raise PermissionDenied() self._add_form = ScreenshotForm(component, request.POST, request.FILES) if self._add_form.is_valid(): obj = Screenshot.objects.create( user=request.user, **self._add_form.cleaned_data ) request.user.profile.increase_count("uploaded") obj.change_set.create( action=Change.ACTION_SCREENSHOT_ADDED, user=request.user, target=obj.name, ) try_add_source(request, obj) messages.success( request, _( "Screenshot has been uploaded, " "you can now assign it to source strings." ), ) return redirect(obj) messages.error( request, _("Failed to upload screenshot, please fix errors below.") ) return self.get(request, **kwargs)
class ScreenshotList(ListView): paginate_by = 25 model = Screenshot _add_form = None def get_component(self, kwargs): return get_subproject( self.request, kwargs['project'], kwargs['subproject'] ) def get_queryset(self): self.kwargs['component'] = self.get_component(self.kwargs) return Screenshot.objects.filter(component=self.kwargs['component']) def get_context_data(self): result = super(ScreenshotList, self).get_context_data() component = self.kwargs['component'] result['object'] = component if can_add_screenshot(self.request.user, component.project): if self._add_form is not None: result['add_form'] = self._add_form else: result['add_form'] = ScreenshotForm() return result def post(self, request, **kwargs): component = self.get_component(kwargs) if not can_add_screenshot(request.user, component.project): raise PermissionDenied() self._add_form = ScreenshotForm(request.POST, request.FILES) if self._add_form.is_valid(): obj = Screenshot.objects.create( component=component, **self._add_form.cleaned_data ) try_add_source(request, obj) messages.success( request, _( 'Screenshot has been uploaded, ' 'you can now assign it to source strings.' ) ) return redirect(obj) else: messages.error( request, _('Failed to upload screenshot, please fix errors below.') ) return self.get(request, **kwargs)
class ScreenshotList(ListView, ComponentViewMixin): paginate_by = 25 model = Screenshot _add_form = None def get_queryset(self): self.kwargs['component'] = self.get_component() return Screenshot.objects.filter(component=self.kwargs['component']).order() def get_context_data(self): result = super(ScreenshotList, self).get_context_data() component = self.kwargs['component'] result['object'] = component if self.request.user.has_perm('screenshot.add', component): if self._add_form is not None: result['add_form'] = self._add_form else: result['add_form'] = ScreenshotForm() return result def post(self, request, **kwargs): component = self.get_component() if not request.user.has_perm('screenshot.add', component): raise PermissionDenied() self._add_form = ScreenshotForm(request.POST, request.FILES) if self._add_form.is_valid(): obj = Screenshot.objects.create( component=component, user=request.user, **self._add_form.cleaned_data ) request.user.profile.uploaded += 1 request.user.profile.save(update_fields=['uploaded']) try_add_source(request, obj) messages.success( request, _( 'Screenshot has been uploaded, ' 'you can now assign it to source strings.' ) ) return redirect(obj) messages.error( request, _('Failed to upload screenshot, please fix errors below.') ) return self.get(request, **kwargs)
def get_detail(request, project, component, checksum): """Return source translation detail in all languages.""" component = get_component(request, project, component) try: units = Unit.objects.filter( id_hash=checksum_to_hash(checksum), translation__component=component ).order_by(*Unit.ordering) except ValueError: raise Http404('Non existing unit!') try: source = units[0].source_info except IndexError: raise Http404('Non existing unit!') check_flags = [ (CHECKS[x].ignore_string, CHECKS[x].name) for x in CHECKS ] extra_flags = [(x, EXTRA_FLAGS[x]) for x in EXTRA_FLAGS] return render( request, 'js/detail.html', { 'units': units, 'source': source, 'project': component.project, 'next': request.GET.get('next', ''), 'priority_form': PriorityForm( initial={'priority': source.priority} ), 'context_form': ContextForm( initial={'context': source.context} ), 'check_flags_form': CheckFlagsForm( initial={'flags': source.check_flags} ), 'screenshot_form': ScreenshotForm(), 'extra_flags': extra_flags, 'check_flags': check_flags, } )
def translate(request, project, component, lang): # noqa: C901 """Generic entry point for translating, suggesting and searching.""" obj, project, unit_set = parse_params(request, project, component, lang) user = request.user # Search results search_result = search(obj, project, unit_set, request) # Handle redirects if isinstance(search_result, HttpResponse): return search_result # Get numer of results num_results = len(search_result["ids"]) # Search offset offset = search_result["offset"] # Checksum unit access payload = request.GET or request.POST if payload.get("checksum"): checksum_form = ChecksumForm(unit_set, payload) if checksum_form.is_valid(): unit = checksum_form.cleaned_data["unit"] try: offset = search_result["ids"].index(unit.id) + 1 except ValueError: offset = None else: offset = None if offset is None: messages.warning(request, _("No strings found!")) return redirect(obj) else: # Check boundaries if not 0 < offset <= num_results: messages.info(request, _("The translation has come to an end.")) # Delete search del request.session[search_result["key"]] return redirect(obj) # Grab actual unit try: unit = unit_set.get(pk=search_result["ids"][offset - 1]) except Unit.DoesNotExist: # Can happen when using SID for other translation messages.error(request, _("Invalid search string!")) return redirect(obj) # Some URLs we will most likely use base_unit_url = "{}?{}&offset=".format(obj.get_translate_url(), search_result["url"]) this_unit_url = base_unit_url + str(offset) next_unit_url = base_unit_url + str(offset + 1) response = None # Any form submitted? if "skip" in request.POST: return redirect(next_unit_url) if request.method == "POST" and "merge" not in request.POST: if ("accept" in request.POST or "accept_edit" in request.POST or "delete" in request.POST or "spam" in request.POST or "upvote" in request.POST or "downvote" in request.POST): # Handle accepting/deleting suggestions response = handle_suggestions(request, unit, this_unit_url, next_unit_url) else: # Handle translation response = handle_translate(request, unit, this_unit_url, next_unit_url) # Handle translation merging elif "merge" in request.POST: response = handle_merge(unit, request, next_unit_url) # Handle reverting elif "revert" in request.GET: response = handle_revert(unit, request, this_unit_url) # Pass possible redirect further if response is not None: return response # Show secondary languages for signed in users if user.is_authenticated: secondary = unit.get_secondary_units(user) else: secondary = None # Prepare form form = TranslationForm(user, unit) sort = get_sort_name(request, obj) screenshot_form = None if user.has_perm("screenshot.add", unit.translation): screenshot_form = ScreenshotForm( unit.translation.component, initial={"translation": unit.translation}) return render( request, "translate.html", { "this_unit_url": this_unit_url, "first_unit_url": base_unit_url + "1", "last_unit_url": base_unit_url + str(num_results), "next_unit_url": next_unit_url, "prev_unit_url": base_unit_url + str(offset - 1), "object": obj, "project": project, "unit": unit, "nearby": unit.nearby(user.profile.nearby_strings), "nearby_keys": unit.nearby_keys(user.profile.nearby_strings), "others": get_other_units(unit), "search_url": search_result["url"], "search_items": search_result["items"], "search_query": search_result["query"], "offset": offset, "sort_name": sort["name"], "sort_query": sort["query"], "filter_name": search_result["name"], "filter_count": num_results, "filter_pos": offset, "form": form, "comment_form": CommentForm( project, initial={ "scope": "global" if unit.is_source else "translation" }, ), "context_form": ContextForm(instance=unit.source_unit, user=user), "search_form": search_result["form"].reset_offset(), "secondary": secondary, "locked": unit.translation.component.locked, "glossary": get_glossary_terms(unit), "addterm_form": TermForm(unit, user), "last_changes": unit.change_set.prefetch().order()[:10].preload("unit"), "screenshots": (unit.source_unit.screenshots.all() | unit.screenshots.all()).order, "last_changes_url": urlencode(unit.translation.get_reverse_url_kwargs()), "display_checks": list(get_display_checks(unit)), "machinery_services": json.dumps(list(MACHINE_TRANSLATION_SERVICES.keys())), "new_unit_form": get_new_unit_form( unit.translation, user, initial={"variant": unit.pk}), "screenshot_form": screenshot_form, }, )