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 from .forms import WorkSellForm class WorkSellsView(ListView): model = WorkSell template_name = 'worksells_list.html' paginate_by = 20 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)