fixed limitby in sqlhtml grid, thanks Paolo

This commit is contained in:
mdipierro
2018-08-12 10:56:58 -07:00
parent 285013a64a
commit 63972386c2
+12 -10
View File
@@ -699,18 +699,20 @@ class AutocompleteWidget(object):
if isinstance(field, Field.Virtual): if isinstance(field, Field.Virtual):
records = [] records = []
table_rows = self.db(self.db[field.tablename]).select(orderby=self.orderby) table_rows = self.db(self.db[field.tablename]).select(orderby=self.orderby)
count = 0 count = self.limitby[1] if self.limitby else -1
for row in table_rows: for row in table_rows:
if self.at_beginning: if self.at_beginning:
if row[field.name].lower().startswith(kword): if row[field.name].lower().startswith(kword):
count += 1 count -= 1
records.append(row) records.append(row)
else: else:
if kword in row[field.name].lower(): if kword in row[field.name].lower():
count += 1 count -= 1
records.append(row) records.append(row)
if count == 10: if count == 0:
break break
if self.limitby and self.limitby[0]:
records = records[self.limitby[0]:]
rows = Rows(self.db, records, table_rows.colnames, rows = Rows(self.db, records, table_rows.colnames,
compact=table_rows.compact) compact=table_rows.compact)
elif settings and settings.global_settings.web2py_runtime_gae: elif settings and settings.global_settings.web2py_runtime_gae:
@@ -1090,7 +1092,7 @@ def formstyle_bootstrap3_inline_factory(col_label_size=3):
# bootstrap 4 # bootstrap 4
def formstyle_bootstrap4_stacked(form, fields): def formstyle_bootstrap4_stacked(form, fields):
""" bootstrap 3 format form layout """ bootstrap 4 format form layout
Note: Note:
Experimental! Experimental!
@@ -1139,7 +1141,7 @@ def formstyle_bootstrap4_stacked(form, fields):
def formstyle_bootstrap4_inline_factory(col_label_size=3): def formstyle_bootstrap4_inline_factory(col_label_size=3):
""" bootstrap 3 horizontal form layout """ bootstrap 4 horizontal form layout
Note: Note:
Experimental! Experimental!
@@ -2855,9 +2857,9 @@ class SQLFORM(FORM):
if paginate and dbset._db._adapter.dbengine == 'google:datastore' and use_cursor: if paginate and dbset._db._adapter.dbengine == 'google:datastore' and use_cursor:
cursor = request.vars.cursor or True cursor = request.vars.cursor or True
limitby = (0, paginate) limitby = (0, paginate)
page = safe_int(request.vars.page, 1) - 1 page = safe_int(request.vars.page or 1, 1) - 1
elif paginate and paginate < nrows: elif paginate and paginate < nrows:
page = safe_int(request.vars.page, 1) - 1 page = safe_int(request.vars.page or 1, 1) - 1
limitby = (paginate * page, paginate * (page + 1)) limitby = (paginate * page, paginate * (page + 1))
else: else:
limitby = None limitby = None
@@ -2899,7 +2901,7 @@ class SQLFORM(FORM):
paginator = UL() paginator = UL()
if paginate and dbset._db._adapter.dbengine == 'google:datastore' and use_cursor: if paginate and dbset._db._adapter.dbengine == 'google:datastore' and use_cursor:
# this means we may have a large table with an unknown number of rows. # this means we may have a large table with an unknown number of rows.
page = safe_int(request.vars.page, 1) - 1 page = safe_int(request.vars.page or 1, 1) - 1
paginator.append(LI('page %s' % (page + 1))) paginator.append(LI('page %s' % (page + 1)))
if next_cursor: if next_cursor:
d = dict(page=page + 2, cursor=next_cursor) d = dict(page=page + 2, cursor=next_cursor)
@@ -2918,7 +2920,7 @@ class SQLFORM(FORM):
npages, reminder = divmod(nrows, paginate) npages, reminder = divmod(nrows, paginate)
if reminder: if reminder:
npages += 1 npages += 1
page = safe_int(request.vars.page, 1) - 1 page = safe_int(request.vars.page or 1, 1) - 1
def self_link(name, p): def self_link(name, p):
d = dict(page=p + 1) d = dict(page=p + 1)