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.