from django.core.exceptions import PermissionDenied from django.contrib.auth.mixins import LoginRequiredMixin from django.http import JsonResponse from django.shortcuts import render from django.views.generic import FormView, DetailView from .forms import FileForm from .models import File class FileUploadView(LoginRequiredMixin, FormView): model = File form_class = FileForm def form_valid(self, form): self.object = form.save(commit=False) self.object.user = self.request.user self.object.save() return JsonResponse({ 'is_valid': True, 'url': self.object.file.url, 'name': self.object.file.name, 'id': self.object.pk }) def form_invalid(self, form): return JsonResponse({'is_valid': False, 'errors': form.errors}) class FileDeleteView(LoginRequiredMixin, DetailView): model = File def get(self, request, *args, **kwargs): return self.post(request, *args, **kwargs) def post(self, request, *args, **kwargs): self.object = self.get_object() if request.user != self.object.user: raise PermissionDenied self.object.delete() return JsonResponse({ 'success': True })