From 41498917d55544a879ab93082b7602650b0f5cef Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sun, 16 Aug 2015 15:22:45 -0500 Subject: [PATCH] Autocomplete(...at_beginning=False) --- gluon/sqlhtml.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 3606097c..49fe24c4 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -646,13 +646,12 @@ class AutocompleteWidget(object): def __init__(self, request, field, id_field=None, db=None, orderby=None, limitby=(0, 10), distinct=False, keyword='_autocomplete_%(tablename)s_%(fieldname)s', - min_length=2, help_fields=None, help_string=None): + min_length=2, help_fields=None, help_string=None, at_beginning = True): self.help_fields = help_fields or [] self.help_string = help_string if self.help_fields and not self.help_string: - self.help_string = ' '.join('%%(%s)s' % f.name - for f in self.help_fields) + self.help_string = ' '.join('%%(%s)s' % f.name for f in self.help_fields) self.request = request self.keyword = keyword % dict(tablename=field.tablename, @@ -662,6 +661,7 @@ class AutocompleteWidget(object): self.limitby = limitby self.distinct = distinct self.min_length = min_length + self.at_beginning = at_beginning self.fields = [field] if id_field: self.is_reference = True @@ -679,8 +679,10 @@ class AutocompleteWidget(object): field = self.fields[0] if settings and settings.global_settings.web2py_runtime_gae: rows = self.db(field.__ge__(self.request.vars[self.keyword]) & field.__lt__(self.request.vars[self.keyword] + u'\ufffd')).select(orderby=self.orderby, limitby=self.limitby, *(self.fields+self.help_fields)) - else: + elif self.at_beginning: rows = self.db(field.like(self.request.vars[self.keyword] + '%', case_sensitive=False)).select(orderby=self.orderby, limitby=self.limitby, distinct=self.distinct, *(self.fields+self.help_fields)) + else: + rows = self.db(field.contains(self.request.vars[self.keyword], case_sensitive=False)).select(orderby=self.orderby, limitby=self.limitby, distinct=self.distinct, *(self.fields+self.help_fields)) if rows: if self.is_reference: id_field = self.fields[1]