from desktop to web2py

101 views
Skip to first unread message

goome

unread,
May 7, 2015, 1:03:58 PM5/7/15
to web...@googlegroups.com
Hello
I am porting a desktop script to web by means of web2py.
The desktop script gets in input some file, process them,make some stuff to sqlitedb, and give as output other xls file.
I have already done similar porting for similar script, but the problem now is the in the desktop script after aquiring the input file and beginning to process them,in order  to continue the script asked (raw_input) to select a data.
Now in the controller/default.py i have a form (sqlform.factory), i wrote the first part of file input processing, but now i should ask for data choice (the data to choice from come from processing the file in input). If i redirect to another view, i suppose i will lose the (in memory) sqlite stuf...
Any suggestion to face with it? 

黄祥

unread,
May 7, 2015, 2:56:44 PM5/7/15
to web...@googlegroups.com
if you use sqlform.factory, i think you should do the insert data from sqlform.factory to the table manually.
e.g. taken from http://web2py.com/books/default/chapter/29/07/forms-and-validators#SQLFORM-factory & modified it
def form_from_factory():
    form = SQLFORM.factory(
        Field('your_name', requires=IS_NOT_EMPTY()),
        Field('your_image', 'upload'))
    if form.process().accepted:
        response.flash = 'form accepted'
        db.customer.insert(**db.customer._filter_fields(form.vars) )
    elif form.errors:
        response.flash = 'form has errors'
    return dict(form=form)

another thing, i think you can use another like sqlform, or sqlform.grid

best regards,
stifan

Marcello Console

unread,
May 7, 2015, 3:12:20 PM5/7/15
to web...@googlegroups.com
Thank you for your help Stifan.
The problem here is that i need to let the user choose among some
value gotted from the excel file he gave as input. And i should do
this meanwhile writing other files.
How can i do this?
Make all this stuff as an ajax function called after the user select
the file input?
Any easiest way?
Thanks a lot
> --
> 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 a topic in the
> Google Groups "web2py-users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/web2py/c247sPk5ALU/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> web2py+un...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

Dave S

unread,
May 7, 2015, 7:06:11 PM5/7/15
to web...@googlegroups.com


On Thursday, May 7, 2015 at 12:12:20 PM UTC-7, goome wrote:
Thank you for your help Stifan.
The problem here is that i need to let the user choose among some
value gotted from the excel file he gave as input.


Do you need to do this before adding anything from the file to the database?
For instance, only a subset of the data in the file is to be committed?

This could probably be done on the client side with javascript.  There are some javascript tools
that some of the other posters use for data management.
Joe Barnhart has this recommendation:
The jQuery Datatables library is very impressive.  It handles sorting, filtering, displaying of data in all forms.  Its really worth a look at http://datatables.net  My application is very data-centric and I use a LOT of tables, so I built some datatable factory methods to help me.
<URL:https://groups.google.com/d/msg/web2py/fj_UhjPmhK0/arM06tukVOgJ>
I don't know what you need to do to feed it client data instead of server data.

If you want to do this on the server side instead, my first thought is to [upload the file], import it via CSV import into a temporary table, and then use the data in the temporary table to create the form (SQLFORM, or its grid offspring), and when you process the form update the permanent table.

 
And i should do
this meanwhile writing other files.

I'm not sure what this means.  Do you need to have multiple outputs based on the data, or do you need to multiple threads to speed up the processing?


How can i do this?
Make all this stuff as an ajax function called after the user select
the file input?

You could use AJAX/components to provide the view into the temporary table, if you wanted it to appear on the same page as the input form for the filename.  If you preferred to redirect, then anything you weren't ready to forget from the filename form could be stored in the session, I think.
 
Any easiest way?
Thanks a lot


I say this with having done just the littlest bit with forms, and just a teeny bit more with AJAX, and not much with the new-fangled tools that javascript gurus are throwing at ^W^W offering us.

Good luck!

/dps
(to read the weak joke above, recall what CTRL-W does on the BASH command line)
 

goome

unread,
May 8, 2015, 2:38:30 PM5/8/15
to web...@googlegroups.com
Thank you for your help Dave.
I try explain myself better:
i have a form where the user upload an excel file.
I need to process that file, but only some rows of them. And i need to let the user select which rows.
Thanks a lot

黄祥

unread,
May 8, 2015, 8:15:13 PM5/8/15
to web...@googlegroups.com
just an idea, i think you need 2 form, 1 for the upload file and store the value into session, and put it on another form, using requires = IS_IN_SET()
e.g. not tested
create your 1st form and store the value of uploaded file into session
a = open(form.vars.upload_file, 'wb').write(session.upload_file)

create another form that requires IS_IN_SET from the stored session
Field('choose_excel', requires=IS_IN_SET(for id, value from session.upload_file) ),

best regards,
stifan

Marcello Console

unread,
May 9, 2015, 4:24:41 AM5/9/15
to web...@googlegroups.com
Thank you again Stifan.
I solved the poresent problem, but i suppose in a not efficiente and
even les elegant way...
The second form, should be in the the second view, am i right?
To face, i need to change the in memory db to oon disk, and working
with apache configuration for let me pass all the variables.
Thanks again

2015-05-09 2:15 GMT+02:00, 黄祥 <steve.van...@gmail.com>:
> just an idea, i think you need 2 form, 1 for the upload file and store the
> value into session, and put it on another form, using requires =
> IS_IN_SET()
> *e.g. not tested*
> *create your 1st form and store the value of uploaded file into session*
> a = open(form.vars.upload_file, 'wb').write(session.upload_file)
>
> *create another form that requires IS_IN_SET from the stored session*
> Field('choose_excel', requires=IS_IN_SET(for id, value from
> session.upload_file) ),
>
> best regards,
> stifan
>
Reply all
Reply to author
Forward
0 new messages