summaryrefslogtreecommitdiff
path: root/src/templates/meetingtools/multiresponse.py
diff options
context:
space:
mode:
authorLeif Johansson <leifj@sunet.se>2011-02-09 11:08:19 +0100
committerLeif Johansson <leifj@sunet.se>2011-02-09 11:08:19 +0100
commit18fb871917ea875ed8a66c017947c2678d71f5f1 (patch)
tree90fd9bbe9d3c6842a27a7dbb4dfb614c1aa9a88b /src/templates/meetingtools/multiresponse.py
parentc33af4c971f26fcf3e7eb61a6c3dd8e8af8418a6 (diff)
restructure 2
Diffstat (limited to 'src/templates/meetingtools/multiresponse.py')
-rw-r--r--src/templates/meetingtools/multiresponse.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/templates/meetingtools/multiresponse.py b/src/templates/meetingtools/multiresponse.py
new file mode 100644
index 0000000..3427a82
--- /dev/null
+++ b/src/templates/meetingtools/multiresponse.py
@@ -0,0 +1,68 @@
+import meetingtools.mimeparse as mimeparse
+import re
+import rfc822
+from django.conf import settings
+from django.shortcuts import render_to_response
+from django.http import HttpResponse, HttpResponseForbidden,\
+ HttpResponseRedirect
+from django.utils import simplejson
+from django.template import loader
+from meetingtools.settings import PREFIX_URL
+
+default_suffix_mapping = {"\.htm(l?)$": "text/html",
+ "\.json$": "application/json",
+ "\.rss$": "application/rss+xml",
+ "\.torrent$": "application/x-bittorrent"}
+
+def _accept_types(request, suffix):
+ for r in suffix.keys():
+ p = re.compile(r)
+ if p.search(request.path):
+ return suffix.get(r)
+ return None
+
+
+def timeAsrfc822 ( theTime ) :
+ return rfc822 . formatdate ( rfc822 . mktime_tz ( rfc822 . parsedate_tz ( theTime . strftime ( "%a, %d %b %Y %H:%M:%S" ) ) ) )
+
+def make_response_dict(request,d={}):
+
+ if request.user.is_authenticated():
+ d['user'] = request.user
+ d['prefix'] = PREFIX_URL
+
+ return d
+
+def json_response(data):
+ r = HttpResponse(simplejson.dumps(data),content_type='application/json')
+ r['Cache-Control'] = 'no-cache, must-revalidate'
+ r['Pragma'] = 'no-cache'
+
+ return r
+
+def render403(message="You don't seem to have enough rights for what you are trying to do....",dict={}):
+ dict['message'] = message
+ return HttpResponseForbidden(loader.render_to_string("403.html",dict))
+
+def respond_to(request, template_mapping, dict={}, suffix_mapping=default_suffix_mapping):
+ accept = _accept_types(request, suffix_mapping)
+ if accept is None:
+ accept = (request.META['HTTP_ACCEPT'].split(','))[0]
+ content_type = mimeparse.best_match(template_mapping.keys(), accept)
+ template = None
+ if template_mapping.has_key(content_type):
+ template = template_mapping[content_type]
+ else:
+ template = template_mapping["text/html"]
+ if callable(template):
+ response = template(make_response_dict(request,dict))
+ elif isinstance(template, HttpResponse):
+ response = template
+ response['Content-Type'] = "%s; charset=%s" % (content_type, settings.DEFAULT_CHARSET)
+ else:
+ response = render_to_response(template,make_response_dict(request,dict))
+ response['Content-Type'] = "%s; charset=%s" % (content_type, settings.DEFAULT_CHARSET)
+ return response
+
+def redirect_to(path):
+ return HttpResponseRedirect("%s%s" % (PREFIX_URL,path)) \ No newline at end of file