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.hosting_utils import get_vm_price_with_vat | ||||||
| from utils.stripe_utils import StripeUtils | from utils.stripe_utils import StripeUtils | ||||||
| from utils.tasks import send_plain_email_task | from utils.tasks import send_plain_email_task | ||||||
|  | from .cms_models import DCLCalculatorPluginModel | ||||||
| from .forms import ContactForm | from .forms import ContactForm | ||||||
| from .models import VMTemplate, VMPricing | from .models import VMTemplate, VMPricing | ||||||
| from .utils import get_cms_integration, create_vm | from .utils import get_cms_integration, create_vm | ||||||
|  | @ -82,7 +83,29 @@ class IndexView(CreateView): | ||||||
|             raise ValidationError(_('Invalid number of cores')) |             raise ValidationError(_('Invalid number of cores')) | ||||||
| 
 | 
 | ||||||
|     def validate_memory(self, value): |     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')) |             raise ValidationError(_('Invalid RAM size')) | ||||||
| 
 | 
 | ||||||
|     def validate_storage(self, value): |     def validate_storage(self, value): | ||||||
|  | @ -101,7 +124,7 @@ class IndexView(CreateView): | ||||||
|         cores = request.POST.get('cpu') |         cores = request.POST.get('cpu') | ||||||
|         cores_field = forms.IntegerField(validators=[self.validate_cores]) |         cores_field = forms.IntegerField(validators=[self.validate_cores]) | ||||||
|         memory = request.POST.get('ram') |         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 = request.POST.get('storage') | ||||||
|         storage_field = forms.IntegerField(validators=[self.validate_storage]) |         storage_field = forms.IntegerField(validators=[self.validate_storage]) | ||||||
|         template_id = int(request.POST.get('config')) |         template_id = int(request.POST.get('config')) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue