Итак, я создаю функцию в 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
любая идея ??
спасибо