You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.1 KiB
62 lines
2.1 KiB
# encoding: utf-8
|
|
import json
|
|
|
|
from django.http import HttpResponse
|
|
from django.views.generic import CreateView, DeleteView, ListView
|
|
from .models import Picture
|
|
from .response import JSONResponse, response_mimetype
|
|
from .serialize import serialize
|
|
|
|
|
|
class PictureCreateView(CreateView):
|
|
model = Picture
|
|
fields = "__all__"
|
|
template_name = 'client/fileupload/fileupload/picture_form.html'
|
|
|
|
def form_valid(self, form):
|
|
self.object = form.save()
|
|
files = [serialize(self.object)]
|
|
data = {'files': files}
|
|
response = JSONResponse(data, mimetype=response_mimetype(self.request))
|
|
response['Content-Disposition'] = 'inline; filename=files.json'
|
|
return response
|
|
|
|
def form_invalid(self, form):
|
|
data = json.dumps(form.errors)
|
|
return HttpResponse(content=data, status=400, content_type='application/json')
|
|
|
|
class BasicVersionCreateView(PictureCreateView):
|
|
template_name = 'client/fileupload/fileupload/picture_basic_form.html'
|
|
|
|
|
|
class BasicPlusVersionCreateView(PictureCreateView):
|
|
template_name = 'client/fileupload/fileupload/picture_basicplus_form.html'
|
|
|
|
class AngularVersionCreateView(PictureCreateView):
|
|
template_name = 'client/fileupload/fileupload/picture_angular_form.html'
|
|
|
|
|
|
class jQueryVersionCreateView(PictureCreateView):
|
|
template_name = 'client/fileupload/fileupload/picture_jquery_form.html'
|
|
|
|
|
|
class PictureDeleteView(DeleteView):
|
|
model = Picture
|
|
|
|
def delete(self, request, *args, **kwargs):
|
|
self.object = self.get_object()
|
|
self.object.delete()
|
|
response = JSONResponse(True, mimetype=response_mimetype(request))
|
|
response['Content-Disposition'] = 'inline; filename=files.json'
|
|
return response
|
|
|
|
|
|
class PictureListView(ListView):
|
|
model = Picture
|
|
|
|
def render_to_response(self, context, **response_kwargs):
|
|
files = [ serialize(p) for p in self.get_queryset() ]
|
|
data = {'files': files}
|
|
response = JSONResponse(data, mimetype=response_mimetype(self.request))
|
|
response['Content-Disposition'] = 'inline; filename=files.json'
|
|
return response
|
|
|