format = '%(role)' is not valid python. a mapping is something like %(variablename)s . in this case, it gets passed to the "user" dictionary, so you should use a "variablename" that is a key of the user dict.
Il giorno martedì 6 novembre 2012 16:51:14 UTC+1, Dewes ha scritto: > > Hello, I have the following table that worked in web2py 1.99.7, but now I > upgraded to 2.2.1, and I got this error that I don't know how to solve: > > Traceback (most recent call last): > File > "/home/dewes/Dropbox/desenvolvimento/novo_web2py/web2py/gluon/restricted.py", > line 212, in restricted > exec ccode in environment > File > "/home/dewes/Dropbox/desenvolvimento/novo_web2py/web2py/applications/normas/models/db.py" > <http://localhost:8000/admin/default/edit/normas/models/db.py>, line 100, in > <module> > Field('grupo', db.auth_group, default=auth.user_group(auth.user_id), > format='%(role)'), > File > "/home/dewes/Dropbox/desenvolvimento/novo_web2py/web2py/gluon/tools.py", line > 2990, in user_group > return self.id_group(self.user_group_role(user_id)) > File > "/home/dewes/Dropbox/desenvolvimento/novo_web2py/web2py/gluon/tools.py", line > 2997, in user_group_role > return self.settings.create_user_groups % user > TypeError: format requires a mapping > > db.define_table('normas', > Field('titulo','string',label=T('Título')), > Field('ementa','text',label=T('Ementa')), > Field('tipo_norma',db.tipos,label=T('Tipo Norma')), > Field('numero_norma','integer',label=T('Número')), > Field('situacao',db.situacao,label=T('Situação')), > Field('orgao_emissor','list:reference orgaos',label=T('Órgão Emissor')), > Field('veiculo','string',label=T('Veículo de Publicação')), > Field('numero_veiculo','integer',label=T('Número do Veículo')), > Field('dt_emissao','date',label=T('Data de Emissão')), > Field('dt_publicacao','date',label=T('Data de Publicação')), > Field('conteudo','text',label=T('Conteúdo')), > Field('arquivo1','upload',uploadseparate=True), > Field('arquivo2','upload',uploadseparate=True), > Field('arquivo3','upload',uploadseparate=True), > Field('arquivo4','upload',uploadseparate=True), > Field('arquivo5','upload',uploadseparate=True), > Field('created_on', 'datetime', default=request.now), > Field('created_by', db.auth_user, default=auth.user_id), > Field('grupo', db.auth_group, default=auth.user_group(auth.user_id)), > format='%(titulo)s' > ) > > Deleting the field Field('grupo', db.auth_group, > default=auth.user_group(auth.user_id)), the error is gone, but I need this > field, as a shortcut to restrict the "normas" (normative documents) to the > group of people that created it, without going to the user that created and > after the group of that user. > > I have already tried to put in the Field something like format='%(role)s' or > format='%(description)' but to no avail. > > Thanks in advance. > > More from error: > > def user_group_role(self, user_id=None): > if user_id: > user = self.table_user()[user_id] > else: > user = self.user > return self.settings.create_user_groups % user > > --

