Hi all, My question is about this menu construction to allow to select a gene to add/edit/see/remove in database. The problem I faced is in my database Gene table has more than one gene record per gene because of different drug interactions of one gene we have them multiple times in gene column. In order to list the unique list of gene for this above drop down menu to update table for users, I tried to wrote a def unique method and passed in to requires=IS_IN_SET in field in db.py script of models as you can see in here:
db.define_table('Gene', Field('Gene', requires=IS_IN_SET(unique(db.Gene))), Field('Variants'), Field('GroupID'), Field('Types'), Field('Flags'), Field('Genotype'), Field('Functional_Phenotype'), Field('Patient_Impact'), Field('Actions', requires=IS_IN_SET(["STOP", "STOP/SLOW", "SLOW", "GO", "GO/SLOW", "DOWN", "SLOW/DOWN", "DOWN/STOP", "None"])), Field('Action_Legend'), Field('Drug'), Field('Drug_Class', requires=IS_NOT_EMPTY()), Field('Mechanism_of_Action', requires=IS_NOT_EMPTY()), Field('Therapeutic_Area', requires=IS_NOT_EMPTY()), Field('Gene_Drug_Interaction', requires=IS_NOT_EMPTY()), Field('Sources', requires=IS_NOT_EMPTY()), Field('Clinical_Utility', requires=IS_NOT_EMPTY()), auth.signature, Field("Reviewed", type='boolean', default=False), format=lambda r: r.Gene) *Unique method* def unique(list1): # insert the list to the set list_set = set(list1) # convert the set to the list unique_list = (list(list_set)) print unique_list What am I doing wrong? This type of unique method and passing into this unique gene list should be in default.py in controller instead of db.py in models using db.select() but how exactly? This is my default.py for form/menu construction of gene: def index(): """ example action using the internationalization operator T and flash rendered by views/default/index.html or views/generic.html if you need a simple wiki simply replace the two lines below with: return auth.wiki() """ form_Gene = SQLFORM.factory(Field("Gene", requires=IS_IN_DB(db, "Gene.id", db.Gene._format))) form_Drug = SQLFORM.factory(Field("Drug", requires=IS_IN_DB(db, "Drug.id", db.Drug._format))) if form_Gene.process(formname="form_g").accepted: response.flash = "search by gene" redirect(URL('Gene', args=[form_Gene.vars.Gene])) if form_Drug.process(formname="form_d").accepted: response.flash = "search by drug" redirect(URL('Drug', args=[form_Drug.vars.Drug])) return dict(form_Gene = form_Gene, form_Drug=form_Drug) def Gene(): Gene_id = request.args[0] try: Gene = db.Gene[Gene_id] except: session.flash = "Gene not found, redirect to Home page!" redirect(URL('default', 'index')) #gene = db(db.Gene.Gene==Gene_id).select(distinct=True) #genotype = db(db.Genotype.Gene==Gene_id).select() #gdR = db(db.GeneDrugR.Gene==Gene_id).select() #gdA = db(db.GeneDrugAssociation.Gene==Gene_id).select() #annoR = db(db.Annotation.Gene==Gene_id).select() return locals() Thanks in advance, Elif -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- 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 web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/a6a4fa3d-3907-4fce-a5f4-d8b08e530360n%40googlegroups.com.