python-oxdjango/oxdjango/shortcuts.py

39 lines
1.3 KiB
Python
Raw Normal View History

2009-10-11 14:47:39 +02:00
# -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4
2010-02-08 20:34:54 +05:30
from django.http import HttpResponse, Http404
2010-01-23 10:06:33 +11:00
try:
2010-02-08 20:34:54 +05:30
import simplejson as json
2010-01-23 10:06:33 +11:00
except ImportError:
2010-02-08 20:34:54 +05:30
from django.utils import simplejson as json
2009-10-11 14:47:39 +02:00
from django.conf import settings
2010-02-08 21:37:32 +05:30
class HttpErrorJson(Http404):
def __init__(self, response):
self.response = response
2010-02-10 18:38:51 +05:30
def json_response(data={}, status=200, text='ok'):
2010-02-10 19:28:45 +05:30
return {'status': {'code': status, 'text': text}, 'data': data}
2010-02-10 18:38:51 +05:30
2010-01-26 19:25:01 +05:30
def render_to_json_response(dictionary, content_type="text/json", status=200):
2009-10-11 14:47:39 +02:00
indent=None
if settings.DEBUG:
content_type = "text/javascript"
indent = 2
2010-01-29 16:50:24 +05:30
if settings.JSON_DEBUG:
2010-02-08 20:34:54 +05:30
print json.dumps(dictionary, indent=2)
2010-01-26 19:25:01 +05:30
if 'status' in dictionary and 'code' in dictionary['status']:
status = dictionary['status']['code']
2010-02-08 20:34:54 +05:30
return HttpResponse(json.dumps(dictionary, indent=indent),
2010-01-29 16:50:24 +05:30
content_type=content_type, status=status)
2009-10-11 14:47:39 +02:00
2010-01-29 16:50:24 +05:30
def get_object_or_404_json(klass, *args, **kwargs):
from django.shortcuts import _get_queryset
queryset = _get_queryset(klass)
try:
return queryset.get(*args, **kwargs)
except queryset.model.DoesNotExist:
response = {'status': {'code': 404,
2010-02-08 20:34:54 +05:30
'text': '%s not found' % queryset.model._meta.object_name}}
2010-02-08 21:37:32 +05:30
raise HttpErrorJson(response)
2010-02-08 20:34:54 +05:30