From 05e73b1d5e57dd6cd62d26c40701e69c1cf0a683 Mon Sep 17 00:00:00 2001 From: Levi Date: Sun, 17 Apr 2016 19:52:19 -0500 Subject: [PATCH] Fixed ungleich urls, created model for storing VM types, created command to load VM prices and data to database --- digitalglarus/urls.py | 1 + hosting/admin.py | 4 +- hosting/management/__init__.py | 0 hosting/management/commands/__init__.py | 0 .../management/commands/create_vm_types.py | 54 +++++++++++++++++++ .../migrations/0003_virtualmachinetypes.py | 27 ++++++++++ hosting/migrations/0004_auto_20160418_0034.py | 19 +++++++ hosting/migrations/0005_auto_20160418_0038.py | 20 +++++++ hosting/models.py | 32 +++++++++++ 9 files changed, 155 insertions(+), 2 deletions(-) create mode 100644 hosting/management/__init__.py create mode 100644 hosting/management/commands/__init__.py create mode 100644 hosting/management/commands/create_vm_types.py create mode 100644 hosting/migrations/0003_virtualmachinetypes.py create mode 100644 hosting/migrations/0004_auto_20160418_0034.py create mode 100644 hosting/migrations/0005_auto_20160418_0038.py diff --git a/digitalglarus/urls.py b/digitalglarus/urls.py index defb8f66..ef929726 100644 --- a/digitalglarus/urls.py +++ b/digitalglarus/urls.py @@ -5,6 +5,7 @@ from . import views from .views import ContactView, IndexView, AboutView urlpatterns = [ + url(r'', IndexView.as_view(), name='home'), url(_(r'home/?$'), IndexView.as_view(), name='home'), url(_(r'about/?$'), AboutView.as_view(), name='about'), url(_(r'contact/?$'), ContactView.as_view(), name='contact'), diff --git a/hosting/admin.py b/hosting/admin.py index ee686d03..8d5366e5 100644 --- a/hosting/admin.py +++ b/hosting/admin.py @@ -1,4 +1,4 @@ from django.contrib import admin -from .models import RailsBetaUser +from .models import RailsBetaUser, VirtualMachineType -admin.site.register(RailsBetaUser) +admin.site.register(RailsBetaUser, VirtualMachineType) diff --git a/hosting/management/__init__.py b/hosting/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/hosting/management/commands/__init__.py b/hosting/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/hosting/management/commands/create_vm_types.py b/hosting/management/commands/create_vm_types.py new file mode 100644 index 00000000..78d9fbe3 --- /dev/null +++ b/hosting/management/commands/create_vm_types.py @@ -0,0 +1,54 @@ +from django.core.management.base import BaseCommand, CommandError +from hosting.models import VirtualMachineType + + +class Command(BaseCommand): + help = 'Create VM types' + + def get_data(self): + + hetzner = { + 'base_price': 10, + 'core_price': 10, + 'memory_price': 10, + 'disk_size_price': 10, + 'description': 'VM auf einzelner HW, Raid1, kein HA' + } + + return { + 'hetzner_nug': { + 'base_price': 5, + 'memory_price': 2, + 'core_price': 2, + 'disk_size_price': 0.5, + 'description': 'VM ohne Uptime Garantie' + }, + 'hetzner': hetzner, + 'hetzner_raid6': { + 'base_price': hetzner['base_price']*1.2, + 'core_price': hetzner['core_price']*1.2, + 'memory_price': hetzner['memory_price']*1.2, + 'disk_size_price': hetzner['disk_size_price']*1.2, + 'description': 'VM auf einzelner HW, Raid1, kein HA' + + }, + 'hetzner_glusterfs': { + 'base_price': hetzner['base_price']*1.4, + 'core_price': hetzner['core_price']*1.4, + 'memory_price': hetzner['memory_price']*1.4, + 'disk_size_price': hetzner['disk_size_price']*1.4, + 'description': 'VM auf einzelner HW, Raid1, kein HA' + }, + 'bern': { + 'base_price': 12, + 'core_price': 25, + 'memory_price': 7, + 'disk_size_price': 0.70, + 'description': "VM in Bern, HA Setup ohne HA Garantie", + } + } + + def handle(self, *args, **options): + + data = self.get_data() + [VirtualMachineType.objects.create(**data[key]) for key in data.keys()] diff --git a/hosting/migrations/0003_virtualmachinetypes.py b/hosting/migrations/0003_virtualmachinetypes.py new file mode 100644 index 00000000..0b240a75 --- /dev/null +++ b/hosting/migrations/0003_virtualmachinetypes.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.4 on 2016-04-18 00:32 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('hosting', '0002_railsbetauser'), + ] + + operations = [ + migrations.CreateModel( + name='VirtualMachineTypes', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('description', models.TextField()), + ('base_price', models.FloatField()), + ('memory_price', models.FloatField()), + ('cores_price', models.FloatField()), + ('disk_size_price', models.FloatField()), + ('hosting_company', models.CharField(choices=[('hetzner_nug', 'Hetzner No Uptime Guarantee'), ('hetzner', 'Hetzner'), ('hetzner_raid6', 'Hetzner Raid6'), ('hetzner_glusterfs', 'Hetzner Glusterfs'), ('bern', 'Bern')], max_length=10)), + ], + ), + ] diff --git a/hosting/migrations/0004_auto_20160418_0034.py b/hosting/migrations/0004_auto_20160418_0034.py new file mode 100644 index 00000000..a376a23a --- /dev/null +++ b/hosting/migrations/0004_auto_20160418_0034.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.4 on 2016-04-18 00:34 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('hosting', '0003_virtualmachinetypes'), + ] + + operations = [ + migrations.RenameModel( + old_name='VirtualMachineTypes', + new_name='VirtualMachineType', + ), + ] diff --git a/hosting/migrations/0005_auto_20160418_0038.py b/hosting/migrations/0005_auto_20160418_0038.py new file mode 100644 index 00000000..867d39b9 --- /dev/null +++ b/hosting/migrations/0005_auto_20160418_0038.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.4 on 2016-04-18 00:38 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('hosting', '0004_auto_20160418_0034'), + ] + + operations = [ + migrations.RenameField( + model_name='virtualmachinetype', + old_name='cores_price', + new_name='core_price', + ), + ] diff --git a/hosting/models.py b/hosting/models.py index 28530a09..ea9d4d35 100644 --- a/hosting/models.py +++ b/hosting/models.py @@ -1,4 +1,9 @@ from django.db import models +from django.utils.translation import ugettext_lazy as _ +from django.core import serializers + + + class RailsBetaUser(models.Model): email = models.EmailField(unique=True) @@ -6,3 +11,30 @@ class RailsBetaUser(models.Model): 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=10, choices=HOSTING_TYPES) + + def get_serialized_data(self): + return serializers("json", self)