[pkg-fso-commits] [SCM] FSO frameworkd Debian packaging branch, debian, updated. upstream/0.9.5.5-717-g0f98819

Sebastian Krzyszkowiak seba.dos1 at gmail.com
Sat Aug 6 08:20:12 UTC 2011


The following commit has been merged in the debian branch:
commit 5cc3ef0906e2e185f429abd6e75bf25f677f96f3
Author: Marco Trevisan (Treviño) <mail at 3v1n0.net>
Date:   Wed Nov 10 18:19:37 2010 +0100

    opimd: Added '_limit_start' query option.
    
    This query allows to set the SQL LIMIT x,y function in the proper
    way, now you can limit the results both setting the "end limit"
    (like before, using "_limit") and the start value to show (using
    the new "_start_limit" parameter).
    Useful for paginating results, reducing GUI lookups.

diff --git a/framework/subsystems/opimd/db_handler.py b/framework/subsystems/opimd/db_handler.py
index a1a5260..0622848 100644
--- a/framework/subsystems/opimd/db_handler.py
+++ b/framework/subsystems/opimd/db_handler.py
@@ -272,7 +272,7 @@ class DbHandler(object):
             #skip system fields
             if name.startswith('_'):
                 #FIXME: put this in a central place!
-                if name not in ('_at_least_one', '_sortdesc', '_sortby', '_limit', '_resolve_phonenumber', '_retrieve_full_contact'):
+                if name not in ('_at_least_one', '_sortdesc', '_sortby', '_limit', '_limit_start', '_resolve_phonenumber', '_retrieve_full_contact'):
                     raise InvalidField("Query rule '%s' does not exist." % (name, ))
                 else:
                     continue
@@ -342,9 +342,25 @@ class DbHandler(object):
             params.append(sortby)
             if '_sortdesc' in query_desc:
                 query = query + " DESC"
+
+        limit_start = 0
+        if '_limit_start' in query_desc:
+            try:
+                limit_start = int(query_desc['_limit_start'])
+            except:
+                raise InvalidField("_limit_start should be an integer value")
+
+        limit_end = -1
         if '_limit' in query_desc:
-            query = query + " LIMIT ?"
-            params.append(int(query_desc['_limit']))
+            try:
+                limit_end = int(query_desc['_limit'])
+            except:
+                raise InvalidField("_limit should be an integer value")
+
+        if (limit_start != 0 or limit_end != -1):
+            query = query + " LIMIT ?,?"
+            params.extend([limit_start, limit_end])
+
         return {'Query':query, 'Parameters':params}
 
     def build_sql_query(self, query_desc):
@@ -357,7 +373,7 @@ class DbHandler(object):
             #skip system fields
             if name.startswith('_'):
                 #FIXME: put this in a central place!
-                if name not in ('_limit', '_resolve_phonenumber', '_retrieve_full_contact'):
+                if name not in ('_limit', '_limit_start', '_resolve_phonenumber', '_retrieve_full_contact'):
                     raise InvalidField("Query rule '%s' does not exist." % (name, ))
                 else:
                     continue
@@ -367,9 +383,24 @@ class DbHandler(object):
                 else:
                     continue
 
+        limit_start = 0
+        if '_limit_start' in query_desc:
+            try:
+                limit_start = int(query_desc['_limit_start'])
+            except:
+                raise InvalidField("_limit_start should be an integer value")
+
+        limit_end = -1
         if '_limit' in query_desc:
-            query = "SELECT * FROM (" + query + ") LIMIT ?"
-            params.append(int(query_desc['_limit']))
+            try:
+                limit_end = int(query_desc['_limit'])
+            except:
+                raise InvalidField("_limit should be an integer value")
+
+        if (limit_start != 0 or limit_end != -1):
+            query = query + " LIMIT ?,?"
+            params.extend([limit_start, limit_end])
+
 
         return {'Query':query, 'Parameters':params}
 

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list