hi
db.define_table('sf_contract',
Field('id','id', readable=False),
Field('sf_login_id', readable=False, writable=False, requires=IS_IN_DB(db, 
db.sf_login.id)),
        #.....  
Field('ccdata')) # this field contains a json 

in ccdata  i have to store a json {"expiration_year": "2014", 
"credit_card_type": "visa", "cvc2": "***", "credit_card_number": 
"123456789", "expiration_month": "12", "card_holder_name": "user"}
so in my controller i added some extra elements where i populate them with 
data from json
import json
 record = db(db.sf_contract.sf_login_id == auth.user.id).select().first() 
contract_form = SQLFORM(db.sf_contract, record) 
#add extra elements to from, since data for credit card is stored as json
input_credit_card_type = SELECT(_name='credit_card_type') 
input_card_holder_name = INPUT(_name='card_holder_name', type='text') 
input_credit_card_number = INPUT(_name='credit_card_number') 
input_cvc2 = INPUT(_name='cvc2') 
input_expiration_year = INPUT(_name='expiration_year') 
input_expiration_month = INPUT(_name='expiration_month') 

contract_form[0].insert(-1,[input_credit_card_type,input_card_holder_name, 
input_credit_card_number, input_cvc2, 
input_expiration_year,input_expiration_month])
 #populate form with data from ccdata field 
try:
ccdata = json.loads(record.ccdata)
except Exception, e: 
ccdata = json.loads('{"credit_card_type":"","card_holder_name":"Alex from 
controller","credit_card_number":"12346","cvc2":"","expiration_year":"","expiration_month":""}')

contract_form.vars.credit_card_type = ccdata['credit_card_type']
contract_form.vars.card_holder_name = ccdata['card_holder_name']
contract_form.vars.credit_card_number = ccdata['credit_card_number']
contract_form.vars.cvc2 = ccdata['cvc2']
contract_form.vars.expiration_year = ccdata['expiration_year']
contract_form.vars.expiration_month = ccdata['expiration_month'] 

#save data to ccdata field on submit
ccdata = json.dumps({"credit_card_type":request.vars.credit_card_type,
 "card_holder_name":request.vars.card_holder_name,
 "credit_card_number":request.vars.card_holder_name,
 "cvc2":request.vars.cvc2,
 "expiration_year":request.vars.expiration_year,
 "expiration_month":request.vars.expiration_month})

contract_form.vars.ccdata = ccdata
if contract_form.process().accepted: 
response.flash = show_alert('alert-success', 'Data saved')
elif contract_form.errors:
response.flash = show_alert('alert-warning', 'Form has errors')


return dict(contract_form=contract_form) 

form is populating with data from db but  on submit i got  'Table' object 
has no attribute 'credit_card_type'
i need to populate extra elements from json and to save them

-- 
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