ojuso-map/apps/files/views.py
2018-09-26 15:09:35 +01:00

57 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
})
class ImageFileDeleteView(FileDeleteView):
model = ImageFile