###views.py###
from django.shortcuts import render
from django.shortcuts import render_to_response
from django.core.urlresolvers import reverse
from django.views import generic
from django.template import RequestContext
from django.http import JsonResponse
from comments.models import Comment
from companies.models import Company
# Create your views here.
class IndexView(generic.ListView):
model = Comment
def get_queryset(self):
return Comment.objects.filter(company = self.kwargs['pk']).order_by('-add_date')
class AjaxableResponseMixin(object):
def form_invalid(self, form):
response = super(AjaxableResponseMixin, self).form_invalid(form)
if self.request.is_ajax():
return JsonResponse(form.errors, status = 400)
else:
return response
def form_valid(self, form):
form.instance.company = Company.objects.get(pk = self.kwargs['company'])
response = super(AjaxableResponseMixin, self).form_valid(form)
if self.request.is_ajax():
five_comments_list = Comment.objects.order_by('-add_date').filter(company = self.object.company)
data = {}
data['five_comments_list'] = five_comments_list
return render_to_response('companies/includes/_five_comments_list.html', data, context_instance=RequestContext(self.request))
else:
return response
class AddView(AjaxableResponseMixin, generic.edit.CreateView):
model = Comment
fields = ['text']
def get_success_url(self):
return reverse('companies:detail', args = (self.kwargs['company'],))