X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/02a98d2af6f1fabf567b575c5f2d818688af1594..1b8ab1430082a145a3e4807de837dcc1568178a3:/apps/wiki/helpers.py diff --git a/apps/wiki/helpers.py b/apps/wiki/helpers.py new file mode 100644 index 00000000..7ed97b41 --- /dev/null +++ b/apps/wiki/helpers.py @@ -0,0 +1,41 @@ +from django import http +from django.utils import simplejson as json +from django.utils.functional import Promise +from django.template.loader import render_to_string +from datetime import datetime + +class ExtendedEncoder(json.JSONEncoder): + + def default(self, obj): + if isinstance(obj, Promise): + return unicode(obj) + + if isinstance(obj, datetime): + return datetime.ctime(obj) + " " + (datetime.tzname(obj) or 'GMT') + + return json.JSONEncoder.default(self, obj) + +# shortcut for JSON reponses +class JSONResponse(http.HttpResponse): + + def __init__(self, data = {}, **kwargs): + # get rid of mimetype + kwargs.pop('mimetype', None) + + super(JSONResponse, self).__init__( + json.dumps(data, cls=ExtendedEncoder), + mimetype = "application/json", **kwargs) + + +# return errors +class JSONFormInvalid(JSONResponse): + def __init__(self, form): + super(JSONFormInvalid, self).__init__(form.errors, status = 400) + +class JSONServerError(JSONResponse): + def __init__(self, *args, **kwargs): + kwargs['status'] = 500 + super(JSONServerError, self).__init__(*args, **kwargs) + + + \ No newline at end of file