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 ImageFileForm, FileForm from .models import ImageFile, 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 ImageFileUploadView(FileUploadView): model = ImageFile form_class = ImageFileForm 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 }) class ImageFileDeleteView(FileDeleteView): model = ImageFile