import json from django.shortcuts import render from django.core.urlresolvers import reverse from django.http import JsonResponse, HttpResponse from django.views.generic import ListView, DetailView, CreateView, View,\ UpdateView, DeleteView, TemplateView from projects.models import BuildingClassfication, ConstructionType from .models import WorkSell, Picture from .forms import WorkSellForm from .serialize import serialize from .response import JSONResponse, response_mimetype class PictureCreateView(CreateView): model = Picture fields = '__all__' 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 BasicCreateView(PictureCreateView): template_name = 'picture_basic_form.html' class WorkSellsView(ListView): model = WorkSell template_name = 'worksells_list.html' # paginate_by = 20 paginate_by = 1 def get_form_kwargs(self, **kwargs): kwargs = super().get_form_kwargs def get_queryset(self, **kwargs): qs = WorkSell.objects.all() # if self.request.GET: # budget_from = self.request.GET # pass return qs def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['building_classifications'] = BuildingClassfication.objects.all() context['construction_types'] = ConstructionType.objects.all() return context class WorkSellDetail(DetailView): model = WorkSell template_name = 'worksell_detail.html' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['worksell_related'] = WorkSell.objects.all()[:5] return context def work_sell_create(request): if request.is_ajax(): form = WorkSellForm(data=request.POST) if form.is_valid(): instance = form.save(commit=False) instance.save() data = {'status': 'ok'} else: data = {'status': 'no', 'form_errors': form.errors} return HttpResponse(json.dumps(data), content_type='application/json') class WorkSellCreateView(CreateView): model = WorkSell form_class = WorkSellForm template_name = 'worksell_create.html' class WorkSellUpdateView(UpdateView): model = WorkSell form_class = WorkSellForm template_name = 'worksell_edit.html' def get_success_url(self): return reverse('work_sell:list') class WorkSellDeleteView(DeleteView): model = WorkSell template_name = 'worksell_delete.html' def get_success_url(self): return reverse('work_sell:list') class UploadView(View): template_name = 'upload.html' def get(self, request, *args, **kwargs): return render(request,self.template_name) class JSONResponseMixin(object): def render_to_json_response(self, context, **response_kwargs): return JsonResponse( self.get_data(context), **response_kwargs ) def get_data(self, context): context = {'test': 'data'} return context class JSONView(JSONResponseMixin, TemplateView): def render_to_response(self, context, **response_kwargs): return self.render_to_json_response(context, **response_kwargs)