I can't see any dropdown list in my application with any of these
suggestions (web2py 1.50 but also tried 1.47).
Moreover I have a second problem when inserting new records in my db.
Here below you can find my db.py (model, with the original italian
names for tables and fields, sqlite database) and default.py
(controller). I've started creating my application following the T2
tutorials about puppies (I've used those views).
The second problem I mentioned above is that if I want to insert a new
'attivita' in database I can only refer attivita.tipoattivita to a
tipiattivita.code made of digits (like '2345', not 'test'), also if
the type of tipiattivita.code is 'string'. Can't find out why
#----------db.py
#########################################################################
try:
from gluon.contrib.gql import * # if running on Google App
Engine
except:
db=SQLDB('sqlite://storage3.db') # if not, use SQLite or
other DB
else:
db=GQLDB() # connect to Google
BigTable
session.connect(request,response,db=db) # and store sessions there
#session.forget() # uncomment for no session
at all
#########################################################################
# Define your tables below, for
example #
#
#
# >>> db.define_table('mytable',SQLField
('myfield','string')) #
#
#
# Fields can be
'string','text','password','integer','double','booelan' #
# 'date','time','datetime','blob','upload', 'reference
TABLENAME' #
# There is an implicit 'id integer autoincrement'
field #
# Consult manual for more options, validators,
etc. #
#
#
# More API examples for
controllers: #
#
#
# >>> db.mytable.insert
(myfield='value') #
# >>> rows=db(db.mytbale.myfield=='value).select
(db.mytable.ALL) #
# >>> for row in rows: print row.id,
row.myfield #
#########################################################################
db.define_table('contatti',
SQLField('code','string'),
SQLField('surname','string'),
SQLField('name','string'),
SQLField('category'),
SQLField('status'))
db.contatti.code.requires=IS_NOT_EMPTY()
db.contatti.status.requires=IS_IN_SET(['Cliente','Prospect'])
db.contatti.category.requires=IS_IN_SET
(['Professore','Dottore','Odontotecnico','Assistente','Ricercatore'])
db.contatti.represent=lambda row: A(row.code,'
',row.name,_href=t2.action('display_contatto',[row.id]))
db.define_table('agenti',
SQLField('code','string'),
SQLField('surname','string'),
SQLField('name','string'),
SQLField('area'))
db.agenti.code.requires=IS_NOT_EMPTY()
db.agenti.area.requires=IS_IN_SET(['nord ovest','nord
est','centro','sud'])
db.agenti.represent=lambda row: A(row.code,'
',row.name,_href=t2.action('display_agente',[row.id]))
db.define_table('tipiattivita',
SQLField('code','string'),
SQLField('description','string'), #,length=200),
SQLField('start_date','datetime'),
SQLField('end_date','datetime'))
db.tipiattivita.code.requires=IS_NOT_EMPTY()
db.define_table('attivita',
SQLField('agente',db.agenti),
SQLField('contatto',db.contatti),
SQLField('data_assegnazione','datetime'),
SQLField('eseguire_entro','datetime'),
SQLField('tipoattivita',db.tipiattivita))
db.attivita.agente.requires=[IS_NOT_EMPTY(),IS_IN_DB
(db,db.agenti.code,'db.agenti.code')]
db.attivita.contatto.requires=[IS_NOT_EMPTY(),IS_IN_DB
(db,db.contatti.code,'db.contatti.code')]
#db.attivita.tipoattivita.requires=[IS_NOT_EMPTY(),IS_IN_DB
(db,db.tipiattivita.code,'db.tipiattivita.code'),IS_IN_SET([ x for x
in db().select(db.tipiattivita.code)] )]
#db.attivita.tipoattivita.requires=[IS_NOT_EMPTY(),IS_IN_DB
(db,'tipiattivita.code','%(code)s') ]
db.attivita.tipoattivita.requires=[IS_NOT_EMPTY(),IS_IN_DB
(db,db.tipiattivita.code,'db.tipiattivita.code') ]
db.attivita.eseguire_entro.label='Eseguire entro'
db.attivita.represent=lambda row: A(row.contatto,' ',row.agente,'
',row.tipoattivita,_href=t2.action('display_attivita',[row.id]))
attivita=db.agenti.id==db.attivita.agente and
db.contatti.id==db.attivita.contatto and
db.tipiattivita.id==db.attivita.tipoattivita
from applications.init.modules.t2 import T2
t2=T2(request,response,session,cache,T,db)
#----end of db.py
#----default.py
if t2.logged_in: response.menu=[
['logout',False,t2.action('logout')],
['contatti',False,t2.action('index')],
['attività ',False,t2.action('create_attivita')],
['agenti',False,t2.action('create_agente')]]
else: response.menu=[
['login',False,t2.action('login')],
['registrazione',False,t2.action('register')]]
def register(): return dict(form=t2.register())
def login(): return dict(form=t2.login())
def logout(): t2.logout(next='login')
@t2.requires_login(next='login')
def create_contatto():
form=t2.create(db.contatti)
itemize=t2.itemize(db.contatti)
return dict(form=form,itemize=itemize)
@t2.requires_login(next='login')
def display_contatto():
contatto=t2.display(db.contatti)
search=t2.search(db.contatti)
return dict(contatto=contatto,search=search)
@t2.requires_login(next='login')
def create_agente():
form=t2.create(db.agenti)
itemize=t2.itemize(db.agenti)
return dict(form=form,itemize=itemize)
@t2.requires_login(next='login')
def display_agente():
agente=t2.display(db.agenti)
search=t2.search(db.agenti)
return dict(agente=agente,search=search)
@t2.requires_login(next='login')
def create_attivita():
response.menu=[
['logout',False,t2.action('logout')],
['contatti',False,t2.action('index')],
['tipi attività ',False,t2.action('create_tipoattivita')],
['agenti',False,t2.action('create_agente')]]
form=t2.create(db.attivita)
itemize=t2.itemize(db.attivita)
return dict(form=form,itemize=itemize)
@t2.requires_login(next='login')
def display_attivita():
response.menu=[
['logout',False,t2.action('logout')],
['contatti',False,t2.action('index')],
['tipi attività ',False,t2.action('create_tipoattivita')],
['agenti',False,t2.action('create_agente')]]
attivita=t2.display(db.attivita)
search=t2.search(db.attivita)
return dict(attivita=attivita,search=search)
@t2.requires_login(next='login')
def create_tipoattivita():
form=t2.create(db.tipiattivita)
itemize=t2.itemize(db.tipiattivita)
return dict(form=form,itemize=itemize)
@t2.requires_login(next='login')
def display_tipoattivita():
attivita=t2.display(db.tipiattivita)
search=t2.search(db.tipiattivita)
return dict(tipoattivita=attivita,search=search)
@t2.requires_login('login')
def download():
return t2.download()
[EMAIL PROTECTED](next='login')
#def download(): return t2.download()
def index(): t2.redirect('create_contatto')
#----end of default.py
On 17 Nov, 14:46, mdipierro <[EMAIL PROTECTED]> wrote:
> Correction...
>
> IS_IN_DB(db,'activitytypes.code','%(code)s')
>
> The select is web2py when the form is instantiated.
>
> Massimo
>
> On Nov 17, 2:44 am, billf <[EMAIL PROTECTED]> wrote:
>
> > IS_IN_DB(db().select(db.activitytypes.ALL),'activitytypes.code')
>
> > IS_IN_DB also creates a dropdown list
>
> > On Nov 17, 8:20 am, "marco prosperi" <[EMAIL PROTECTED]>
> > wrote:
>
> > > hello everybody, I would like to do something similar to
>
> > > db.activity.activitytype.requires=[IS_NOT_EMPTY(),IS_IN_SET([ x for x in
> > > db().select(db.activitytypes.code)] )]
>
> > > to let the user be able to choose between values defined in another table
> > > (activitytypes), not in a mymodel.py file (I will modify the query above
> > > to
> > > limit the number of values in IS_IN_SET to just the last dozen). Is it
> > > possible or am I only using the wrong syntax?
>
> > > thanks in advance
>
> > > Marco
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---