Mis saludos:<br><br>Bueno mi codigo es el siguente:<br><br>def cdr():<br>    import time<br>    import csv<br>    import os<br>    desde=time.time()<br>    hoy=time.time()<br>    desde=time.strftime(&#39;%Y-%m-%d 00:00:00&#39;,time.localtime(desde))<br>
    hasta=time.strftime(&#39;%Y-%m-%d 23:59:59&#39;,time.localtime(hoy))<br>    accountcode=db.executesql(&quot;SELECT id_accountcode FROM accountcodes order by id_accountcode&quot;)<br>    account=[]<br>    a=db.llamadas_moviles#.with_alias(&#39;a&#39;)<br>
    for ac in accountcode:<br>        account.append(ac[0])<br>    form=FORM(TABLE(TR(&quot;Desde ( Año-mes-día ):&quot;,INPUT(_type=&quot;datetime&quot;,_name=&quot;desde&quot;,_value=desde,_class=&#39;datetime&#39;,_id=&quot;datetlimite&quot;, requires=IS_DATETIME())),<br>
                    TR(&quot;Hasta ( Año-mes-día etlimite1&quot;, requires=IS_DATETIME())),):&quot;,INPUT(_type=&quot;datetime&quot;,_name=&quot;hasta&quot;,_value=hasta,_class=&#39;datetime&#39;,_id=&quot;dat<br>                    TR(&quot;Clientes&quot;,SELECT(account,_name=&quot;account&quot;,requires=IS_IN_SET(account))),<br>
                    TR(&quot;&quot;,INPUT(_type=&quot;submit&quot;,_value=&quot;Consultar&quot;))<br>                    ))<br>    rows=&#39;&#39;<br>    rows1=&#39;&#39;<br>    min=0<br>    cia=&#39;&#39;<br>    if form.accepts(request.vars,session) or request.vars.click==&#39;True&#39;:<br>
        query=((a.call_dialstatus==&#39;ANSWER&#39;) &amp; (a.id_accountcode==request.vars.account) &amp; (a.call_inicio &gt;= request.vars.desde) &amp; (a.call_inicio &lt;= request.vars.hasta))<br>        rows=db(query).select(a.call_inicio, a.call_timedura,a.call_duracion,a.call_dialstatus, a.call_num_destino, orderby=a.call_inicio)<br>
        rows1 = db(query).select(a.call_duracion.sum())<br>        minu=rows1[0]._extra[a.call_duracion.sum()]<br>        min=(int(minu))/60<br>        cia=db.executesql(&quot;SELECT llamadas_moviles.call_telco_destino, telcos.nombre_telco, sum(call_duracion) / 60 as Tot_minutos FROM llamadas_moviles join telcos on llamadas_moviles.call_telco_destino = telcos.id_telco WHERE call_inicio &gt;= &#39;%s&#39; and call_inicio &lt;= &#39;%s&#39; and id_accountcode=&#39;%s&#39; GROUP BY llamadas_moviles.call_telco_destino, telcos.nombre_telco;&quot;%(request.vars.desde,request.vars.hasta,request.vars.account))<br>
<br>        #open(&#39;/tmp/tmp.csv&#39;,&#39;w&#39;).write(str(rows))<br>        if request.vars.click == &#39;True&#39;:<br>          import cStringIO<br>          import gzip<br>          s=cStringIO.StringIO()<br>          response.headers[&#39;Content-Type&#39;]=&#39;application/csv&#39;<br>
          response.headers[&#39;Content-Disposition&#39;] = &#39;attachment; filename=CDR%s_%s.csv&#39;%(request.vars.account,request.vars.hasta)<br>          rows.export_to_csv_file(s)<br>          return s.getvalue()<br>
<br>    return dict(form=form, rows=rows, min=min, cia=cia)<br><br>Lo que necesito hacer es crear una funcion donde me genere un archivo csv a partir de rows, o sea pasar a esa funcion el rows, hasta ahi estoy bien, despues poder descargar ese archivo generado a mi computador o al computador de donde se conecte, eso no lo se, la idea que tengo es crear otro from que se puede llamar form1 que sea solo un boton para descargar, ahora mi pregunta, como le paso el rows del form al form1?<br>
<br>Ojala me puedan ayudar<br><br>el codigo anterior funciona pero no es como lo deseo hacer.<br clear="all"><br>-- <br>Atte.<br>Marcelo Martinez P.<br>Boomerang ip.<br>Chillan<br>