Prechádzať zdrojové kódy

make cursor context manager a decorator

Daniel Sheffield 1 rok pred
rodič
commit
f49b4570c8
1 zmenil súbory, kde vykonal 22 pridanie a 28 odobranie
  1. 22 28
      app/rest/pyapi.py

+ 22 - 28
app/rest/pyapi.py

@@ -62,6 +62,16 @@ def normalize(*args, **kwargs):
     
     return _normalize_decorator(*args)
 
+def cursor(func):
+    def wrap(*args, **kwargs):
+        try:
+            with conn.cursor() as cur:
+                return func(cur, *args, **kwargs)
+        finally:
+            conn.commit()
+    return wrap
+
+
 @route('/grocery/static/<filename:path>')
 def send_static(filename):
     return static_file(filename, root='app/rest/static')
@@ -88,47 +98,31 @@ def trend():
 
 @route('/grocery/groups')
 @normalize
-def groups():
-    try:
-        with conn.cursor() as cur:
-            page = get_groups(cur, request.query)
-    finally:
-        conn.commit()
+@cursor
+def groups(cur):
     response.content_type = 'application/xhtml+xml; charset=utf-8'
-    return page
+    return get_groups(cur, request.query)
 
 
 @route('/grocery/categories')
 @normalize
-def categories():
-    try:
-        with conn.cursor() as cur:
-            page = get_categories(cur, request.query)
-    finally:
-        conn.commit()
+@cursor
+def categories(cur):
     response.content_type = 'application/xhtml+xml; charset=utf-8'
-    return page
+    return get_categories(cur, request.query)
 
 @route('/grocery/products')
 @normalize
-def products():
-    try:
-        with conn.cursor() as cur:
-            page = get_products(cur, request.query)
-    finally:
-        conn.commit()
+@cursor
+def products(cur):
     response.content_type = 'application/xhtml+xml; charset=utf-8'
-    return page
+    return get_products(cur, request.query)
 
 
 @route('/grocery/tags')
 @normalize
-def tags():
-    try:
-        with conn.cursor() as cur:
-            page = get_tags(cur, request.query)
-    finally:
-        conn.commit()
+@cursor
+def tags(cur):
     response.content_type = 'application/xhtml+xml; charset=utf-8'
-    return page
+    return get_tags(cur, request.query)