On Jun 21, 4:26 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
> my guess is that currently do not change often so I would use cache
> the mapping:
>
> currencies=cache.ram('currencies',lambda: dict([(row.code,row.name)
> for row in db(db.currency.id>0).select()]), 5000)
> db.cache_account.currency.represent=lambda id: currencies[id]

Nice but with needs a few adjustments:

# you want id and code fields
currencies=cache.ram('currencies',lambda: dict([(row.id,row.code) for
row in db(db.currency.id>0).select()]), 5000)
# Francois is not using FORM or SQLFORM
# so represent is of no use here
cash_acc_code=lambda id: currencies[id]

so now the controller reads:

def list_banks_and_accounts():
    currencies=cache.ram('currencies',lambda: dict([(row.id,row.code)
for row in db(db.currency.id>0).select()]), 5000)
    cash_acc_code=lambda id: currencies[id]
    banks=db().select(db.bank.ALL,orderby=db.bank.name)
    return dict(banks=banks,cash_acc_code=cash_acc_code)

and in the view where it says

   {{=cash_account.currency}}

change to

   {{=cash_acc_code(cash_account.currency)}}

I would also add these to the model:

db.bank.name.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(db,'bank.name')]
db.cash_account.bank.requires=IS_IN_DB(db,'bank.id','%(name)s')
db.cash_account.currency.requires=IS_IN_DB(db,'currency.id','%(code)
s')
db.cash_account.name.requires=IS_NOT_IN_DB(db
((db.cash_account.bank==request.vars.bank)&
(db.cash_account.currency==request.vars.currency)),'cash_account.name')

Denes.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@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