Add Bottle recipe
Bottle is a python wsgi micro-framework for developing web
applications.
diff --git a/common/recipes-devtools/python/bottle/json-format.patch b/common/recipes-devtools/python/bottle/json-format.patch
new file mode 100644
index 0000000..9e754a9
--- /dev/null
+++ b/common/recipes-devtools/python/bottle/json-format.patch
@@ -0,0 +1,31 @@
+Index: bottle-0.12.9/bottle.py
+===================================================================
+--- bottle-0.12.9.orig/bottle.py
++++ bottle-0.12.9/bottle.py
+@@ -1721,8 +1721,10 @@ class JSONPlugin(object):
+ name = 'json'
+ api = 2
+
+- def __init__(self, json_dumps=json_dumps):
++ def __init__(self, json_dumps=json_dumps, **kw):
+ self.json_dumps = json_dumps
++ self.json_kw = { x:y for x,y in kw.iteritems() \
++ if x in ['indent','sort_keys'] }
+
+ def apply(self, callback, route):
+ dumps = self.json_dumps
+@@ -1735,12 +1737,12 @@ class JSONPlugin(object):
+
+ if isinstance(rv, dict):
+ #Attempt to serialize, raises exception on failure
+- json_response = dumps(rv)
++ json_response = dumps(rv, **self.json_kw)
+ #Set content type only if serialization succesful
+ response.content_type = 'application/json'
+ return json_response
+ elif isinstance(rv, HTTPResponse) and isinstance(rv.body, dict):
+- rv.body = dumps(rv.body)
++ rv.body = dumps(rv.body, **self.json_kw)
+ rv.content_type = 'application/json'
+ return rv
+