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.
 
 
 
 
 
 

129 lines
3.6 KiB

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)