65 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from django.db import models
 | |
| from django.utils.translation import ugettext_lazy as _
 | |
| from django.core import serializers
 | |
| import json
 | |
| 
 | |
| 
 | |
| class RailsBetaUser(models.Model):
 | |
|     email = models.EmailField(unique=True)
 | |
|     received_date = models.DateTimeField('date received')
 | |
| 
 | |
|     def __str__(self):
 | |
|         return "%s - %s" % (self.email, self.received_date)
 | |
| 
 | |
| 
 | |
| class VirtualMachineType(models.Model):
 | |
| 
 | |
|     HETZNER_NUG = 'hetzner_nug'
 | |
|     HETZNER = 'hetzner'
 | |
|     HETZNER_R6 = 'hetzner_raid6'
 | |
|     HETZNER_G = 'hetzner_glusterfs'
 | |
|     BERN = 'bern'
 | |
| 
 | |
|     HOSTING_TYPES = (
 | |
|         (HETZNER_NUG, 'Hetzner No Uptime Guarantee'),
 | |
|         (HETZNER, 'Hetzner'),
 | |
|         (HETZNER_R6, 'Hetzner Raid6'),
 | |
|         (HETZNER_G, 'Hetzner Glusterfs'),
 | |
|         (BERN, 'Bern'),
 | |
|     )
 | |
| 
 | |
|     description = models.TextField()
 | |
|     base_price = models.FloatField()
 | |
|     memory_price = models.FloatField()
 | |
|     core_price = models.FloatField()
 | |
|     disk_size_price = models.FloatField()
 | |
|     hosting_company = models.CharField(max_length=30, choices=HOSTING_TYPES)
 | |
| 
 | |
|     def __str__(self):
 | |
|         return "%s" % (self.get_hosting_company_display())
 | |
| 
 | |
|     @classmethod
 | |
|     def get_serialized_vm_types(cls):
 | |
|         return [vm.get_serialized_data()
 | |
|                 for vm in cls.objects.all()]
 | |
|         # return serializers.serialize("json",)
 | |
| 
 | |
|     def defeault_price(self):
 | |
|         price = self.base_price
 | |
|         price += self.core_price
 | |
|         price += self.memory_price
 | |
|         price += self.disk_size_price * 10
 | |
|         return price
 | |
| 
 | |
|     def get_serialized_data(self):
 | |
|         return {
 | |
|             'description': self.description,
 | |
|             'base_price': self.base_price,
 | |
|             'core_price': self.core_price,
 | |
|             'disk_size_price': self.disk_size_price,
 | |
|             'memory_price': self.memory_price,
 | |
|             'hosting_company_name': self.get_hosting_company_display(),
 | |
|             'hosting_company': self.hosting_company,
 | |
|             'default_price': self.defeault_price(),
 | |
|             'id': self.id,
 | |
|         }
 |