Buen dia a todos,
He creado un componente que permite adicionar una imagen a una tabla, cuando ejecuto sin hacer el llamado con load, solo el componente funciona, pero al adicionar a una vista no funciona, si alguien me puede dar una mano se los agradezco.
codigo:
Model:
db.define_table('tbl_lstpedidos',
Field('descripcion', 'string'),
Field('adicional','text'),
format ='%(descripcion)s'
)
db.define_table('tbl_estados',
Field ('estado'),
format ='%(estado)s'
)
db.define_table ('tbl_solicitud',
Field('idlstpedido', 'reference tbl_lstpedidos'),
Field('imagen','upload'),
Field('estado','reference tbl_estados'),
auth.signature
)
Componente:
Controlador (revisor.py)
def publicar():
idsolucion=request.args(0) or redirect(URL('index'))
titulos=db(
(
db.tbl_solicitud.id==idsolucion) &
(
db.tbl_lstpedidos.id==db.tbl_solicitud.idlstpedido)&
(
db.tbl_estados.id==db.tbl_solicitud.estado)
).select(db.tbl_lstpedidos.descripcion, db.tbl_lstpedidos.adicional, db.tbl_estados.estado).first().as_dict()
busqueda=db(
db.tbl_solicitud.id ==idsolucion).select().first()
db.tbl_solicitud.estado.writable=False
db.tbl_solicitud.estado.readable=False
db.tbl_solicitud.idlstpedido.writable=False
db.tbl_solicitud.idlstpedido.readable=False
formulario=SQLFORM(db.tbl_solicitud,busqueda, submit_button="Subir imagen",showid=False)
if formulario.process().accepted:
if busqueda.estado==1:
db(
db.tbl_solicitud.id==idsolucion).update(estado=2)
redirect (URL("publicar"))
response.flash = 'formulario aceptado'
elif formulario.errors:
response.flash = 'el formulario tiene errores'
return locals()
def download():
return response.download(request, db)
View: (revisor/publicar.html)
{{extend 'layout.html'}}
<div class="row">
<div class="col-md-4"><h3>{{=titulos["tbl_lstpedidos"]["descripcion"]}}</h3></div>
{{if busqueda.estado==1:}}
<div class="col-md-4">{{=formulario}}</div>
<div class="col-md-4 "><h3>
<div class="label label-info">{{=titulos["tbl_estados"]["estado"]}}</div></h3>
</div>
{{else:}}
<div class="col-md-4"> </div>
<div class="col-md-4 "><h3>
<div class="label label-primary">{{=titulos["tbl_estados"]["estado"]}}</div></h3>
</div>
{{pass}}
</div>
</div>
</div>
view (revisor/publicar.load)
{{if busqueda.estado==1:}}
<div class="panel panel-info">
{{else:}}
<div class="panel panel-primary">
{{pass}}
<div class="panel-heading">Documento requerido</div>
<div class="panel-body">
<div class="row">
<div class="col-md-4"><h3>{{=titulos["tbl_lstpedidos"]["descripcion"]}}</h3></div>
{{if busqueda.estado==1:}}
<div class="col-md-4">{{=formulario}}</div>
<div class="col-md-4 "><h3>
<div class="label label-info">{{=titulos["tbl_estados"]["estado"]}}</div></h3>
</div>
{{else:}}
<div class="col-md-4"> </div>
<div class="col-md-4 "><h3>
<div class="label label-primary">{{=titulos["tbl_estados"]["estado"]}}</div></h3>
</div>
{{pass}}
</div>
</div>
</div>
Llamado del componente:
Controller (registro.py)@auth.requires_login()
def index():
busqueda = buscarregistros()
return locals()
@auth.requires_login()
def buscarregistros():
#si no hay regsitgros en solicitud
busqueda=db(db.tbl_solicitud.created_by==auth.user_id).select()
if not(busqueda):
#Crea solicitud
#registronuevo()#Se crean los datos para el usuario nuevo
pedidos=db(db.tbl_lstpedidos).select()
for codpedido in pedidos:
db.tbl_solicitud.insert(idlstpedido=
codpedido.id,estado=1,created_by=auth.user_id)
busqueda=db(
db.tbl_solicitud.id==auth.user_id).select()
return busqueda
#return locals()
def download():
return response.download(request, db)
View(registro/index.html)
{{extend 'layout.html'}}
<h2>Control de registro Documentos</h2>
{{for debido in busqueda:}}
{{=LOAD('revisor','publicar.load',args=[
debido.id],ajax=True)}}
{{pass}}
----------------------
Muestra como lo necesito, pero no sube la imagen, si dejo el parametro ajax=False, no hace nada.
de antemano agradezco una luz para este problema, gracias.