Hi,

for quick development-shots, i need to execute my untouched(may i
could change "print" to "return") Python scripts(..with loops) in the
Controller.
The output should be renderd direct via http, without long-winded
setting up the view for each function.
Is that possible?

To my next concern....

On my actual Project i have simple form field with submit button on my
controller:
form = SQLFORM.factory(Field('update_url', default='http://.domain.org/
text_file.txt', requires=IS_NOT_EMPTY()))

On Submit the text file should be downloaded to Server indicated by an
Progress Bar on the Page.
Next the file should be inserted to the DB line by line(for loop with
regex) and again indicated by the same Progress Bar .....

My Code so far(... relies on clienttools example specifically on
jqueryUI-progressbar and an urllib2 +report_hook snippet i´ve found
somewhere):
_______________________________________________________________________
def chunk_report(bytes_so_far, chunk_size, total_size):
    percent = float(bytes_so_far) / total_size
    percent = round(percent*100)
    return percent


    if bytes_so_far >= total_size:
        return ('100.0')

def chunk_read(response, chunk_size=8192, report_hook=None):
    total_size = response.info().getheader('Content-Length').strip()
    total_size = int(total_size)
    bytes_so_far = 0

    while 1:
        chunk = response.read(chunk_size)
        bytes_so_far += len(chunk)

        if not chunk:
            break

        if report_hook:
            report_hook(bytes_so_far, chunk_size, total_size)

    percent = float(bytes_so_far) / total_size
    percent = round(percent*100)
    return percent #bytes_so_far


def url_progress():
    wrapper = DIV(progress,_style="width:400px;")
    jqueryui_progress()
    form = SQLFORM.factory(Field('update_url',
default='http://.domain.org/text_file.txt', requires=IS_NOT_EMPTY()))
    if form.accepts(request.vars, session):
        response.flash = "Got it!"
        try:
            import urllib2
            openurl = urllib2.urlopen(request.vars.update_url)
            chunk_read(openurl, report_hook=chunk_report)
        except Exception, e:
            session.flash = DIV(T('Unable to download from url
because:'),PRE(str(e)))
            redirect(URL(r=request))
    event.listen('submit',"form","return confirm('Are you sure?');") #
adds a confirmation to submit
    page.ready(jq("update_oui").focus()())
#    return dict(form=form)
    return dict(wrapper=wrapper, form=form)

# jQuery progress bar
progress = DIV(_id="progress")
def jqueryui_progress():
    wrapper = DIV(progress,_style="width:400px;")
    page.include("http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/
jquery-ui.min.js", download=True)
    page.include("http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/
themes/ui-darkness/jquery-ui.css", download=True)
    callback = js.call_function(get_progress)
    page.ready(jq(progress).progressbar( dict(value='0') )() )
    page.ready(js.timer(callback,2000))
    return dict(wrapper=wrapper)

def get_progress():
    return jq(progress).progressbar('option', 'value',
request.now.second)()#
________________________________________________________________


But now i stuck.... can anyone put me on the right way?
When the Page is loaded,  both elemts show up correctly.
When i do the submit:
- The Progressbar freezes(Callback dont work while downloading the
file...)
- The Download works and shows 100% when completed(but the while 1
loop, which calls the report_hook dont work at all! and i need it to
update the Progress bar... I think?)

+ I need to change the Progressbar callback source when updating DB
after downloading the file...

Anyone any suggestions?

Best regards,

Dieter Asman

- AsmanCom -
Germany

-- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web...@googlegroups.com.
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en.

Reply via email to