Create field for storing os_templates_to_show
This commit is contained in:
		
					parent
					
						
							
								ae911c8c21
							
						
					
				
			
			
				commit
				
					
						5748eecedb
					
				
			
		
					 1 changed files with 38 additions and 0 deletions
				
			
		|  | @ -1,5 +1,7 @@ | |||
| import logging | ||||
| 
 | ||||
| from django import forms | ||||
| from django.contrib.postgres.fields import ArrayField | ||||
| from django.db import models | ||||
| 
 | ||||
| logger = logging.getLogger(__name__) | ||||
|  | @ -32,7 +34,31 @@ class VMTemplate(models.Model): | |||
|         return vm_template | ||||
| 
 | ||||
| 
 | ||||
| class MultipleChoiceArrayField(ArrayField): | ||||
|     """ | ||||
|     A field that allows us to store an array of choices. | ||||
|     Uses Django's Postgres ArrayField | ||||
|     and a MultipleChoiceField for its formfield. | ||||
|     """ | ||||
| 
 | ||||
|     def formfield(self, **kwargs): | ||||
|         defaults = { | ||||
|             'form_class': forms.MultipleChoiceField, | ||||
|             'choices': self.base_field.choices, | ||||
|             'initial': [c[0] for c in self.base_field.choices], | ||||
|         } | ||||
|         defaults.update(kwargs) | ||||
|         # Skip our parent's formfield implementation completely as we don't | ||||
|         # care for it. | ||||
|         # pylint:disable=bad-super-call | ||||
|         return super(ArrayField, self).formfield(**defaults) | ||||
| 
 | ||||
| 
 | ||||
| class VMPricing(models.Model): | ||||
|     VMTemplateChoices = list( | ||||
|         (str(obj.opennebula_vm_template_id), obj.name) | ||||
|         for obj in VMTemplate.objects.all() | ||||
|     ) | ||||
|     name = models.CharField(max_length=255, unique=True) | ||||
|     vat_inclusive = models.BooleanField(default=True) | ||||
|     vat_percentage = models.DecimalField( | ||||
|  | @ -55,6 +81,18 @@ class VMPricing(models.Model): | |||
|         max_digits=6, decimal_places=2, default=0 | ||||
|     ) | ||||
| 
 | ||||
|     vm_templates_to_show = MultipleChoiceArrayField( | ||||
|         base_field=models.CharField( | ||||
|             blank=True, | ||||
|             max_length=256, | ||||
|             choices=VMTemplateChoices | ||||
|         ), | ||||
|         default=list, | ||||
|         blank=True, | ||||
|         help_text="Not selecting any items above will result in showing all " | ||||
|                   "templates" | ||||
|     ) | ||||
| 
 | ||||
|     def __str__(self): | ||||
|         display_str = self.name + ' => ' + ' - '.join([ | ||||
|             '{}/Core'.format(self.cores_unit_price.normalize()), | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue