Here is my goal. I have  multiple drop down forms populated with the
unique values available per field.  I want to add a default ALL value
to them.
I then want to be able to take those values from the form and do a
selection based off those variables.  I can't seem to be able to
select all values per given field oddly using the == query.  i have to
use the db.field.All selection.  I get there by using if statements,
if the variable is equal to ALL.  I have come up with some workable
code but it is very ugly and uses multiple if statements and the
manual addition of an 'ALL' value in the sets.   I know there has to
be a better way.

So how do I add default ALL selections to drop downs, and how can I
do a multiple db selection using those variables.  Here is example
code.
##model
db.define_table('aa', Field('name'),
Field( 'color','string',label ='color'),
Field('weight','integer')
)
##controller
def searchdbanddisplay():
    var1 = request.vars.col
    var2 = request.vars.weight
    ra = db(db.aa.color==var1).select()
    wa = db(db.aa.weight==var2).select()
####I want to insert one call to db here instead of the top 2 lines to
search for both variables, I am presuming using AND and also
incorporate the ALL variable if it is selected?
    return dict(message=T('Hello World'),var1 = var1,var2 =
var2,ra=ra,wa=wa)
def formtry():

    from sets import Set
    ra = db().select(db.aa.color, distinct=True)
    SA = Set()
    for row in ra:
        SA.add(row.color)
    ##ra = db().select(db.aa.color, distinct=True)
    wa = db().select(db.aa.weight, distinct =True)
    WA = Set()
    for row in wa:
        WA.add(row.weight)

    ##form = SQLFORM.factory(SQLField('color', label='Select a
service'), requires=IS_IN_DB(db,'aa.color'))
    form = SQLFORM.factory(
    Field('color', requires=IS_IN_SET(SA)),
    Field('weight',requires=IS_IN_SET(WA))
    )
    if form.accepts(request.vars, session):
        response.flash = 'form accepted'
        redirect(URL('index',vars
={'col' :request.vars.color,'weight' :request.vars.weight}))
    return dict(form = form,vabla = session.vars)

Reply via email to