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():
 | 
			
		||||
                    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'
 | 
			
		||||
                        ),
 | 
			
		||||
| 
						 | 
				
			
			@ -352,8 +382,15 @@ class PaymentOrderView(FormView):
 | 
			
		|||
                            '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"] = (
 | 
			
		||||
                        generic_payment_details
 | 
			
		||||
                        gp_details
 | 
			
		||||
                    )
 | 
			
		||||
                else:
 | 
			
		||||
                    logger.debug("Generic payment form invalid")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue