2013-04-23 18:51:17 +02:00
|
|
|
from __future__ import absolute_import
|
|
|
|
|
2013-03-21 20:15:27 +01:00
|
|
|
from django.http import HttpResponse, HttpResponseNotAllowed
|
2013-05-21 18:15:48 +02:00
|
|
|
from django.conf import settings
|
2013-05-21 18:15:07 +02:00
|
|
|
import django.shortcuts
|
2012-11-06 20:31:53 +01:00
|
|
|
import simplejson
|
|
|
|
|
2013-03-21 20:15:27 +01:00
|
|
|
class HttpResponseUnauthorized(HttpResponse):
|
|
|
|
status_code = 401
|
|
|
|
|
|
|
|
def __init__(self, realm):
|
|
|
|
HttpResponse.__init__(self)
|
|
|
|
self["WWW-Authenticate"] = 'Basic realm="%s"' % realm
|
|
|
|
|
|
|
|
def json_method_not_allowed(methods):
|
|
|
|
resp = HttpResponseNotAllowed(methods)
|
|
|
|
resp.content = simplejson.dumps({"result": "error",
|
|
|
|
"msg": "Method Not Allowed",
|
|
|
|
"allowed_methods": methods})
|
|
|
|
return resp
|
|
|
|
|
2012-11-06 20:31:53 +01:00
|
|
|
def json_response(res_type="success", msg="", data={}, status=200):
|
|
|
|
content = {"result": res_type, "msg": msg}
|
|
|
|
content.update(data)
|
|
|
|
return HttpResponse(content=simplejson.dumps(content),
|
|
|
|
mimetype='application/json', status=status)
|
|
|
|
|
|
|
|
def json_success(data={}):
|
|
|
|
return json_response(data=data)
|
|
|
|
|
|
|
|
def json_error(msg, data={}, status=400):
|
|
|
|
return json_response(res_type="error", msg=msg, data=data, status=status)
|
2013-05-21 18:15:07 +02:00
|
|
|
|
2013-05-21 18:15:48 +02:00
|
|
|
# We wrap render_to_response so that we can always add some data to
|
|
|
|
# the template context dictionary. In particular, we add the
|
|
|
|
# mixpanel token (which varies based on whether we're deployed or
|
|
|
|
# not) because the mixpanel code is included in base.html.
|
2013-05-21 18:15:07 +02:00
|
|
|
def render_to_response(template, *args, **kwargs):
|
2013-05-21 18:15:48 +02:00
|
|
|
if args:
|
|
|
|
dictionary = args[0]
|
|
|
|
else:
|
|
|
|
try:
|
|
|
|
dictionary = kwargs['dictionary']
|
|
|
|
except KeyError:
|
|
|
|
dictionary = {}
|
|
|
|
kwargs['dictionary'] = dictionary
|
|
|
|
|
|
|
|
dictionary['mixpanel_token'] = settings.MIXPANEL_TOKEN
|
2013-05-21 18:15:07 +02:00
|
|
|
return django.shortcuts.render_to_response(template, *args, **kwargs)
|