Hi,

Working with a team building a reasonably complex webapp  for an investment 
management system, and  I'm trying to learn something of the system too.

I have a module that updates data from a file (simulating an FTP drop). 
Once the module has been loaded the first time, it doesn't update for 
either changes in code or in the underlying data no matter how often I 
refresh the page. 

Is there a particular way to force web2py to reload any files each time a 
page is refreshed? Am I doing something completely wrong?

Thanks

The code is as follows:

module: *dataxl.py*

from gluon import *
import csv
import json
import os
from xlrd import open_workbook as lox




def mydata():
    filepath = os.join(current.request.folder, 'static', 'sample-data', \
                       '20-10-2014_sample-data-for-designer.xls')
    oldbook = lox(filepath)
    names = oldbook.sheet_names()
    workbook = {}
    for name in names:
        worksheet = []
        oldsheet = ws.sheet_by_name(name)
        nrows = oldsheet.nrows
        ncols = oldsheet.ncols
        colnames = [ oldsheet.cell(0,i).value for i in range(ncols) ]
        rownames = [ oldsheet.cell(i,0).value for i in range(nrows) ]
        for nrow in xrange(1,nrows):
            worksheet.append({colnames[ncol]: oldsheet.cell(nrow,ncol).value 
\
                              for ncol in xrange(ncols)})
        workbook[name] = worksheet
    return workbook

controller: *performance.py*

import dataxl


wsheet = dataxl.mydata()

attr = wsheet[ 'Performance_Attr' ]

@auth.requires_login()
def perf_multi_asset():

    clientId = set(i[ 'client' ] for i in attr.values())
    portId = [ 'All' ]
    portId.append(j for j in set(i[0] for i in attr.items() \
                                 if i[ 1 ][ 'Attribution Level' ] == 0 \
                                 or i[ 1 ][ 'Attribution Level' ] == 1))

    perform = SQLFORM.factory(
        Field('client', 'string'),requires=IS_IN_SET(clientId)),
        Field('portfolio', 'string'),requires=IS_IN_SET(portId)),
        Field('start_date', 'date'),
        Field('end_date', 'date')
    ).process()

    if perform.vars.portfolio == 'All':
        data = {i[ 0 ]:i[ 1 ] for i in attr.items() if i[ 1 ][ 'client' ] == 
perform.vars.client}
    else:
        data = {i[ 0 ]:i[ 1 ] for i in attr.items() if i[ 1 ][ 'client' ] == 
perform.vars.client \
                and i[ 0 ] == perform.vars.portfolio}

    return locals()

and view: *performance/perf_multi_asset.html*

{{left_sidebar_enabled,right_sidebar_enabled=False,('message' in globals
())}}
{{extend 'layout.html'}}

{{=STYLE(XML(".generic-widget,#no_table_start_date,#no_table_end_date 
{width:100px}"))}}

<div class="row">
    {{=perform.custom.begin}}

    <div class="span2">
        Client Name: <br>
        {{=perform.custom.widget.client}}
    </div>

    <div class="span2">
        Portfolio ID: <br>
        {{=perform.custom.widget.portfolio}}
    </div>

    <div class="span2">
        Start Date: <br>
        {{=perform.custom.widget.start_date}}
    </div>

    <div class="span2">
        End Date: <br>
        {{=perform.custom.widget.end_date}}
    </div>

    <div class="span2">
        <br>
        {{=perform.custom.submit}}
    </div>

    {{=perform.custom.end}}
    
</div>

{{=BEAUTIFY(XML(data))}}

-- 
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 the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to