files presented below:
controller
modules
models
and throws error
controller:
######
@auth.requires_login()
def update():
ubicacion = db.ubicacion(auth_user=auth_user_id)
db.ubicacion.ciudad_pais.widget = SQLFORM.widgets.autocomplete(
request, db.ciudad_pais.nombre, min_length=2, id_field=db.ciudad_pais.id)
if ubicacion is None:
form = crud.create(db.ubicacion, next=URL('index'))
else:
form = crud.update(db.ubicacion, record=ubicacion.id, next=URL('index'))
return dict(form=form)
######
models/a20_ciudad.py
######
# -*- coding: utf-8 -*-
from applications.welcome.modules import table_ciudad_pais
models_ciudad_pais = table_ciudad_pais.Models(db)
models_ciudad_pais.define_table()
######
models/a50_ubicacion.py
######
# -*- coding: utf-8 -*-
from applications.welcome.modules import table_ubicacion
models_ubicacion = table_ubicacion.Models(db, auth_user_id)
models_ubicacion.define_table()
######
modules/table_ciudad_pais.py
#######
# -*- coding: utf-8 -*-
from gluon.dal import Field
from gluon import current
from gluon.validators import *
from gluon.http import redirect
from gluon.html import XML, TAG, URL
from applications.welcome.modules import app_function
class Models(object):
def __init__(self, db, migrate=True):
self.request = current.request
self.session = current.session
self.dominio = current.request.env.http_host
self.m_function = app_function.App_function()
self.db = db
self.ciudad_pais = None
self.bloqueo = False
self.migrate = migrate
def define_table(self):
self.db.define_table('ciudad_pais',
Field('f_id', 'string', writable=False),
Field('nombre', 'string', writable=False),
migrate=self.migrate,
format = '%(nombre)s'
)
#label
def chequeo(self, location):
self.location = location
self.db.ciudad_pais.update_or_insert(f_id=self.location['id'],
nombre=self.location['name'])
self.ciudad_pais = self.db.ciudad_pais(f_id=self.location['id'])
return self.ciudad_pais
#########
modules/table_ubicacion.py
#######
# -*- coding: utf-8 -*-
from gluon.dal import Field
from gluon import current
from gluon.validators import *
from gluon.sqlhtml import SQLFORM
from applications.welcome.modules import app_function
from applications.welcome.modules import app_var
from applications.welcome.modules import facebook as Facebook
from datetime import time
class Models(object):
def __init__(self, db, usuario_id, migrate=True):
self.request = current.request
self.session = current.session
self.m_var = app_var.App_var()
self.m_function = app_function.App_function()
self.db = db
self.auth_user_id = usuario_id
self.migrate = migrate
self.bloqueo = None
def define_table(self):
self.db.define_table('ubicacion',
Field('ciudad_pais', self.db.ciudad_pais),
Field('zona', self.db.zona, writable=False, readable=False),
Field('tlf', 'string'),
Field('fecha_update', 'datetime',
default=self.request.now, readable=False, writable=False),
Field('auth_user', self.db.auth_user,
default=self.auth_user_id, writable=False, readable=False),
migrate=self.migrate,
# format = lambda row: ('%s') % (row.fprofile['first_name'])
)
#requires
self.db.ubicacion.ciudad_pais.requires = IS_IN_DB(self.db,
'ciudad_pais.id', self.db.ciudad_pais._format, zero=None)
self.db.ubicacion.tlf.requires = [
IS_EMPTY_OR(
IS_LENGTH(maxsize=32, minsize=10)
)
]
########
ERROR:
#######
Traceback (most recent call last):
File "/home/diazluis2007/vps/gluon/restricted.py", line 212, in restricted
exec ccode in environment
File "/home/diazluis2007/vps/applications/welcome/controllers/ubicacion.py",
line 32, in <module>
File "/home/diazluis2007/vps/gluon/globals.py", line 194, in <lambda>
self._caller = lambda f: f()
File "/home/diazluis2007/vps/gluon/tools.py", line 3022, in f
return action(*a, **b)
File "/home/diazluis2007/vps/applications/welcome/controllers/ubicacion.py",
line 22, in update
request, db.ciudad_pais.nombre, min_length=2,
id_field=db.ciudad_pais.id, help_fields=None)
File "/home/diazluis2007/vps/gluon/sqlhtml.py", line 673, in __init__
self.callback()
File "/home/diazluis2007/vps/gluon/sqlhtml.py", line 683, in callback
rows = self.db(field.like(self.request.vars[self.keyword] +
'%')).select(orderby=self.orderby, limitby=self.limitby,
distinct=self.distinct, *(self.fields+self.help_field))
AttributeError: 'AutocompleteWidget' object has no attribute 'help_field'
#####
gluon\sqlhtml.py
linea original 683
rows = self.db(field.like(self.request.vars[self.keyword] +
'%')).select(orderby=self.orderby, limitby=self.limitby,
distinct=self.distinct, *(self.fields+self.help_field))
change:
rows = self.db(field.like(self.request.vars[self.keyword] +
'%')).select(orderby=self.orderby, limitby=self.limitby,
distinct=self.distinct)
to make the change and no error occurs ..
I was temporary patch to continue working ..
reported to have someone with more knowledge explain me resolve this
or the correct way to use the widget
I'm using google translator, sorry
--
Díaz Luis
Analista Programador Facultad de Odontología UC
User Linux 532223
--
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.