def custom_response(self, status, content, content_key='content', status_code=200): resp = HttpResponse(content_type=self.content_type) resp.status_code = status_code json.dump({ 'status': status, content_key: content }, resp) return resp
def dispatch(self, request, *args, **kwargs): result = super(JSONView, self).dispatch(request, *args, **kwargs) indent_response = 4 if request.GET.get('indent') else None if isinstance(result, HttpResponse): return result resp = HttpResponse(content_type=self.content_type) callback = '' if self.allow_jsonp and 'callback' in request.GET: callback = re.sub(r'[^a-zA-Z0-9_]', '', request.GET['callback']) resp.write(callback + '(') json.dump({'status': 'ok', 'content': result}, resp, indent=indent_response) if callback: resp.write(');') if settings.DEBUG and 'html' in request.GET: resp = HttpResponse('<html><body>' + resp.content + '</body></html>') return resp
def committee_list(request): committees = Committee.objects.filter(sessions=Session.objects.current(), parent__isnull=True, display=True) if request.GET.get('format') == 'json': # This is a one-off hack, to later be replaced by nicer general-purpose JSON code resp = HttpResponse(mimetype='application/json') json.dump(list(committees.order_by('name').values('name', 'slug')), resp) return resp recent_meetings = CommitteeMeeting.objects.order_by('-date')[:50] recent_studies = CommitteeActivity.objects.filter( study=True, committeemeeting__in=list(recent_meetings.values_list('id', flat=True)) ).distinct()[:12] return render(request, "committees/committee_list.html", { 'object_list': committees, 'title': 'House Committees', 'recent_studies': recent_studies })