Thanks Massimo. Perfect.
On Saturday, 25 October 2014 07:52:03 UTC+8, Massimo Di Pierro wrote:
>
> Normally modules are not reloaded because they are cached by python.
> web2py can bypass this, depending on where the modules are located. If you
> kwwp in your modules in the web2py app/modules folder then you can do in
> your models/db.py
>
> DEBUG=True
> from gluon.custom_import import track_changes; track_changes(DEBUG)
>
> This will reload your modules when they change/
>
>
>
> On Friday, 24 October 2014 03:33:33 UTC-5, tahnoon pasha wrote:
>>
>> 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.