Така че имах функция в Web2py за създаване на запис в таблица в базата данни при условие, но Web2py създава записа, въпреки че това условие не е изпълнено,
ето я функцията
def buy_product():
price = price_set(db,auth,'product')
balance = limit(db,auth,'settings','account_balance')
if balance !=None:
if balance < price:
form=redirect(URL('order'))
else:
form=crud.create(db.letter)
if form.accepts(request.vars, session):
tax = float(postage(form.vars.tax_type).replace("-","."))
##########################
# I'm talking about this #
##########################
if balance < (price + tax):
response.flash='You don\'t have enough balance to buy this product'
redirect(URL('not_processed'))
else:
function_1(....)
...
...
update_field(db,auth,'settings','account_balance',-price)
response.flash='Done'
redirect(URL('products'))
pass
elif form.errors:
response.flash='Error 01'
else:
pass
###############################
else:
form=redirect(URL('settings'))
return dict(form=form)
предполага се, че когато Balance < price + tax
потребителят трябва да бъде пренасочен към not_processed
, без да създава нов запис в базата данни.
но web2py пренасочва потребителя към not_processed
и създава записа, без да изпълнява тази част с въведената информация от потребителя. така че потребителят да види, че е купил нещо, когато то не е обработено (вижте по-долу)
function_1(....)
...
...
update_field(db,auth,'settings','account_balance',-price)
response.flash='Done'
redirect(URL('products'))
pass
някаква идея ??
Благодаря ти