Update views.py to include 512mb ram case
RAM server side validation is as follows: - pid is a mandatory parameter for a valid RAM, otherwise a validation error is raised - check if enable_512mb_ram is enabled. In this case, validate if the input ram is either a whole number or 0.5 and in the range 0.5 <= value <= 200 - otherwise check ram is a whole number in the range 1 <= value <= 200
This commit is contained in:
		
					parent
					
						
							
								f85ef714ab
							
						
					
				
			
			
				commit
				
					
						c2dbbf0424
					
				
			
		
					 1 changed files with 25 additions and 2 deletions
				
			
		|  | @ -20,6 +20,7 @@ from utils.forms import BillingAddressForm, BillingAddressFormSignup | |||
| from utils.hosting_utils import get_vm_price_with_vat | ||||
| from utils.stripe_utils import StripeUtils | ||||
| from utils.tasks import send_plain_email_task | ||||
| from .cms_models import DCLCalculatorPluginModel | ||||
| from .forms import ContactForm | ||||
| from .models import VMTemplate, VMPricing | ||||
| from .utils import get_cms_integration, create_vm | ||||
|  | @ -82,7 +83,29 @@ class IndexView(CreateView): | |||
|             raise ValidationError(_('Invalid number of cores')) | ||||
| 
 | ||||
|     def validate_memory(self, value): | ||||
|         if (value > 200) or (value < 1): | ||||
|         if 'pid' in self.request.POST: | ||||
|             try: | ||||
|                 plugin = DCLCalculatorPluginModel.objects.get( | ||||
|                              id=self.request.POST['pid'] | ||||
|                          ) | ||||
|             except DCLCalculatorPluginModel.DoesNotExist as dne: | ||||
|                 logger.error( | ||||
|                     str(dne) + " plugin_id: " + self.request.POST['pid'] | ||||
|                 ) | ||||
|                 raise ValidationError(_('Invalid calculator properties')) | ||||
|             if plugin.enable_512mb_ram: | ||||
|                 if value % 1 == 0 or value == 0.5: | ||||
|                     logger.debug( | ||||
|                         "Given ram {value} is either 0.5 or a" | ||||
|                         " whole number".format(value=value) | ||||
|                     ) | ||||
|                     if (value > 200) or (value < 0.5): | ||||
|                         raise ValidationError(_('Invalid RAM size')) | ||||
|                 else: | ||||
|                     raise ValidationError(_('Invalid RAM size')) | ||||
|             elif (value > 200) or (value < 1) or (value % 1 != 0): | ||||
|                 raise ValidationError(_('Invalid RAM size')) | ||||
|         else: | ||||
|             raise ValidationError(_('Invalid RAM size')) | ||||
| 
 | ||||
|     def validate_storage(self, value): | ||||
|  | @ -101,7 +124,7 @@ class IndexView(CreateView): | |||
|         cores = request.POST.get('cpu') | ||||
|         cores_field = forms.IntegerField(validators=[self.validate_cores]) | ||||
|         memory = request.POST.get('ram') | ||||
|         memory_field = forms.IntegerField(validators=[self.validate_memory]) | ||||
|         memory_field = forms.FloatField(validators=[self.validate_memory]) | ||||
|         storage = request.POST.get('storage') | ||||
|         storage_field = forms.IntegerField(validators=[self.validate_storage]) | ||||
|         template_id = int(request.POST.get('config')) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue