Server side validation of the POSTed product
This commit is contained in:
parent
1988020006
commit
ed7ffb355f
1 changed files with 39 additions and 2 deletions
|
@ -341,7 +341,37 @@ class PaymentOrderView(FormView):
|
||||||
)
|
)
|
||||||
if generic_payment_form.is_valid():
|
if generic_payment_form.is_valid():
|
||||||
logger.debug("Generic payment form is valid.")
|
logger.debug("Generic payment form is valid.")
|
||||||
generic_payment_details = {
|
product = None
|
||||||
|
try:
|
||||||
|
product = GenericProduct.objects.get(
|
||||||
|
product_name=
|
||||||
|
request.POST['generic_payment_form-product_name']
|
||||||
|
)
|
||||||
|
except GenericProduct.DoesNotExist as dne:
|
||||||
|
err_msg = _(
|
||||||
|
"The requested product '{}' does not exist".format(
|
||||||
|
request.POST[
|
||||||
|
'generic_payment_form-product_name']
|
||||||
|
)
|
||||||
|
)
|
||||||
|
logger.error(err_msg)
|
||||||
|
raise ValidationError(err_msg)
|
||||||
|
except GenericProduct.MultipleObjectsReturned as mpe:
|
||||||
|
logger.error(
|
||||||
|
"There seem to be more than one product with "
|
||||||
|
"the name {}".format(
|
||||||
|
request.POST[
|
||||||
|
'generic_payment_form-product_name']
|
||||||
|
)
|
||||||
|
)
|
||||||
|
product = GenericProduct.objects.all(
|
||||||
|
product_name=
|
||||||
|
request.POST['generic_payment_form-product_name']
|
||||||
|
).first()
|
||||||
|
gp_details = {
|
||||||
|
"product_name": generic_payment_form.cleaned_data.get(
|
||||||
|
'product_name'
|
||||||
|
),
|
||||||
"amount": generic_payment_form.cleaned_data.get(
|
"amount": generic_payment_form.cleaned_data.get(
|
||||||
'amount'
|
'amount'
|
||||||
),
|
),
|
||||||
|
@ -352,8 +382,15 @@ class PaymentOrderView(FormView):
|
||||||
'description'
|
'description'
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
if (product.get_actual_price() != gp_details['amount'] or
|
||||||
|
product.isSubscription !=
|
||||||
|
(True if gp_details["recurring"] else False)):
|
||||||
|
raise ValidationError(
|
||||||
|
_("Product parameters do not match")
|
||||||
|
)
|
||||||
|
gp_details['product_id'] = product.id
|
||||||
request.session["generic_payment_details"] = (
|
request.session["generic_payment_details"] = (
|
||||||
generic_payment_details
|
gp_details
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
logger.debug("Generic payment form invalid")
|
logger.debug("Generic payment form invalid")
|
||||||
|
|
Loading…
Reference in a new issue