ojuso-map/apps/files/views.py
Anna Sidwell a900a146e2 Tweak failing test
I've worked out this test is failing when FileDeleteView::post() calls
self.get_object() - that's when the 404 is being sent.  I can't work out
why though, because everything else looks fine.
2018-09-26 15:09:35 +01:00

53 lines
1.4 KiB
Python

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
})