Select OPtion no pasan a request.vars

41 views
Skip to first unread message

Julieta Abdala

unread,
Mar 12, 2015, 9:39:08 AM3/12/15
to web2py-...@googlegroups.com
Buenas Tardes, soy nueva en web2py y tengo varias dudas aun sin resolver.,
En este momento tengo un inconveniente que detallo a continuacion

Hice un formulario por codigo de la manera siguiente

def cargaFormulario():
    if(_userFilesDir == 'Error'):
        return dict(formulario='No se encontró la ruta de acceso al archivo de configuración')
    p = ConfigParser()
    p.read(os.path.join(sitePathUserFiles ,'SiteConfig.ini'))
    nrogens = fint(p.get('SITE','GENERADORES'))
    geneadoresAlta=''
    for k in range(nrogens):
        if p.has_option('SITE','INI%d'%(k+1,)):
            s = 'INI%d'%(k+1,)
            if(geneadoresAlta==''):
                geneadoresAlta=OPTION( s +"=" + p.get('SITE',s))
            else:
                geneadoresAlta=(geneadoresAlta,OPTION(s +"=" + p.get('SITE',s)))         
    generadores = DIV(DIV(SELECT(geneadoresAlta,_multiple="",_name="slistageneradores",_id="lista",_style="width:100%"),_class="selectcontrol"), DIV(INPUT(_type="button",_value="+",_title="Agregar generador",_id="add",_class='botonespeques btn btn-primary',_style="width:31px"),BR(),INPUT(_type="button",_id="del",_title="Eliminar generador",_value="-",_class='botonespeques btn btn-primary',_style="width:31px"),_class="selectbotones"),_class="form-group")
    configuracionSitio = (DIV( DIV(LABEL('Nombre del sitio/central'),_class="col-lg-2 control-label") ,DIV(INPUT(_value=p.get('SITE','CENTRAL'),_class="cajaTexto",_name="iNombreSitio",requires=IS_NOT_EMPTY()),_class="col-lg-10 form-control"), _class="form-group" ),generadores)
    configuracionGeneral = (DIV(DIV(LABEL('Idioma'),_class="col-lg-2 control-label") ,DIV(SELECT(OPTION('ES', _value='0'), OPTION('US', _value='1'), value=p.get('GENERALCFG','LANGUAGE'),_class="controlSeleccion",_onChange='changeImage(this.value)',_name="sIdioma"),IMG(_id="imgIdioma",_src=URL('static','images/'+p.get('GENERALCFG','LANGUAGE')+'.png')),_class="form-control"), _class="contenedorControles"))
    configuracionBD =DIV(DIV(LABEL('Host', _class="col-lg-2 control-label"), DIV( INPUT(_name="iHost",_value=p.get('DATABASECFG','HOST'),requires=IS_NOT_EMPTY(),_class="form-control"),_class="col-lg-10"),_class="form-group"), DIV(LABEL('Puerto', _class="col-lg-2 control-label"), DIV( INPUT(_name="iPuerto",_value=p.get('DATABASECFG','PORT'),_class="form-control"),_class="col-lg-10"),_class="form-group"),
        DIV(LABEL('Usuario', _class="col-lg-2 control-label"), DIV( INPUT(_name="iUsuario",_value=p.get('DATABASECFG','USER'),_class="form-control"),_class="col-lg-10"),_class="form-group"), DIV(LABEL('Pass', _class="col-lg-2 control-label"), DIV( INPUT(_name="iPass",_value=p.get('DATABASECFG','PASSWD'),_class="form-control"),_class="col-lg-10"),_class="form-group"), _class="contenedorControles")
    botones= DIV(INPUT(_value='Aceptar',_type='submit', _class='btn btn-primary' ,_title='Guardar Cambios' ),INPUT(_value='Cancelar',_type='reset', _class='btn btn-primary' ,_title='Cancelar Cambios' ),_class="fila")
    campoOculto = DIV(INPUT(_type="hidden", _id="nrogen",_value=nrogens))
    form = FORM(DIV((DIV('Configuración del sitio', _class="panel-heading"),DIV(configuracionSitio,_class="panel-body configuracionSitio"),DIV('Configuración del General', _class="panel-heading"),DIV(configuracionGeneral,_class="panel-body configuracionIdioma"),DIV('Configuración de la base de datos', _class="panel-heading"),DIV(configuracionBD,_class="panel-body configuracionBD"),DIV(botones,_class="panel-footer botones")),_class="panel panel-primary" ),campoOculto,_enctype="multipart/form-data",method="post",_action="#",_class="form-horizontal")   
    return form

y un metodo que graba en un archivo .ini. Todo iba bien hasta que me di cuenta que los valores del select no pasan dentro de request.vars.
Liste y no figura.
A que se debe esto? Como puedo hacer para que pasen los valores del select?
me conviene hacer el formulario por HTML y no por codigo?
Saludos


isi_jca

unread,
Mar 16, 2015, 9:33:24 PM3/16/15
to web2py-...@googlegroups.com
Hola!!!

Te muestro un ejemplo que saque de un formulario que funciona de forma similar al tuyo, mi tabla se llama "tsolicitud" y el formulario "solicitud" y tambien llamo a una función para validar los datos "fvalidasolicitud", a esto tenes que agregarlo antes del return.  

Espero que te sea de utilidad, Saludos cordiales.

//Establece valores por defecto
    form.vars.field= 'valor'
    ...
    ...
    if form.process(session=None, formname='solicitud', onvalidation=fvalidasolicitud).accepted:
        #Actualiza los datos
        beneficiario=form.vars.beneficiario
        benefnrodoc=form.vars.benefnrodoc 
        benefdomic=form.vars.benefdomic
        ...
...
      
        #Inserta los datos obtenidos del formulario
        ll_fila =  db.tsolicitud.insert(sumatotal=lf_sumatotal,cobertura=form.vars.cobertura,
        beneficiario=form.vars.beneficiario,benefnrodoc=form.vars.benefnrodoc, benefdomic=form.vars.benefdomic)
        
        response.flash = 'Propuesta Aceptada'
    elif form.errors:
        response.flash='La propuesta tiene tiene errores'
    else: response.flash = 'Llene la propuesta'  
    return locals()


def fvalidasolicitud(form):
    if ((form.vars.tiposeguro == '') or (form.vars.tiposeguro == 'None')):
        form.errors.tiposeguro = "Debe seleccionar un tipo de seguro"

        if (form.vars.beneficiario <> "None") or (form.vars.beneficiario <> ''):
             if (isdecimal(str(form.vars.benefporc))==0):
                 if (int(form.vars.benefporc) < 0) or (int(form.vars.benefporc) > 100):
                     form.errors.benefporc = 'El valor del porcentaje debe estar entre 0 y 100'
             else:
                 form.errors.benefporc = 'El valor del porcentaje debe ser un nro.'
             if (form.vars.beneftipdoc == "None") or (form.vars.beneftipdoc == '0'):
                 form.errors.beneftipdoc = 'Debe elegir un tipo de doc.'

    if form.vars.cuit:
        if len(form.vars.cuit)< 11:
            form.errors.cuit = "El nro. de CUIT/CUIL debe tener 11 digitos"

    if ((form.vars.telefono != "None") and (form.vars.telefono != '')):
        if isphone(form.vars.telefono):
            form.errors.telefono ='El nro. de teléfono solo puede contener nros., guiones y paréntesis'




Reply all
Reply to author
Forward
0 new messages