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 file(self, request, **kwargs): obj = self.get_object() if request.method == 'GET': return self.download_file( obj.image.path, 'application/binary', ) if not can_change_screenshot(request.user, obj.component.project): raise PermissionDenied() serializer = ScreenshotFileSerializer(data=request.data) serializer.is_valid(raise_exception=True) obj.image.save(serializer.validated_data['image'].name, serializer.validated_data['image']) return Response(data={ 'result': True, })
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