From cc0308df9cb8113980cb413bb4c0fdcd9bc5e330 Mon Sep 17 00:00:00 2001 From: Paarhati Ozkasgarli Date: Thu, 1 Dec 2016 21:07:11 +0000 Subject: [PATCH] Provider and Provider Management Change-Id: I8c72bbc02ad975ee02fc282ddc894f49b5cfb254 --- dash_stack_dashboard/_i18n.py | 2 +- dash_stack_dashboard/settings.py | 1 + provider/__init__.py | 0 provider/admin.py | 13 ++++ provider/apps.py | 7 ++ provider/migrations/0001_initial.py | 35 ++++++++++ .../migrations/0002_auto_20161202_2042.py | 20 ++++++ provider/migrations/0003_type.py | 24 +++++++ provider/migrations/__init__.py | 0 provider/models.py | 62 ++++++++++++++++++ provider/tests.py | 3 + provider/views.py | 3 + .../openstack-logo-1-300x150.png | Bin 0 -> 4629 bytes .../migrations/0002_auto_20161201_2120.py | 20 ++++++ user_profile/models.py | 5 +- 15 files changed, 193 insertions(+), 2 deletions(-) create mode 100644 provider/__init__.py create mode 100644 provider/admin.py create mode 100644 provider/apps.py create mode 100644 provider/migrations/0001_initial.py create mode 100644 provider/migrations/0002_auto_20161202_2042.py create mode 100644 provider/migrations/0003_type.py create mode 100644 provider/migrations/__init__.py create mode 100644 provider/models.py create mode 100644 provider/tests.py create mode 100644 provider/views.py create mode 100644 static/provider-logo/openstack-logo-1-300x150.png create mode 100644 user_profile/migrations/0002_auto_20161201_2120.py diff --git a/dash_stack_dashboard/_i18n.py b/dash_stack_dashboard/_i18n.py index 8a3fce9..9bb519a 100644 --- a/dash_stack_dashboard/_i18n.py +++ b/dash_stack_dashboard/_i18n.py @@ -12,7 +12,7 @@ _ = _translators.primary # The contextual translation function using the name "_C" # requires oslo.i18n >=2.1.0 _C = _translators.contextual_form - +ya # The plural translation function using the name "_P" # requires oslo.i18n >=2.1.0 _P = _translators.plural_form diff --git a/dash_stack_dashboard/settings.py b/dash_stack_dashboard/settings.py index b9a0fdc..a451bfe 100644 --- a/dash_stack_dashboard/settings.py +++ b/dash_stack_dashboard/settings.py @@ -55,6 +55,7 @@ INSTALLED_APPS = [ 'security', 'server', 'user_profile', + 'provider', ] MIDDLEWARE = [ diff --git a/provider/__init__.py b/provider/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/provider/admin.py b/provider/admin.py new file mode 100644 index 0000000..62c1171 --- /dev/null +++ b/provider/admin.py @@ -0,0 +1,13 @@ +from django.contrib import admin +from .models import Provider, Type + +class ProviderAdmin(admin.ModelAdmin): + model = Provider + list_display = ['id', 'name', 'provider', 'enabled', 'validated'] + +class TypeAdmin(admin.ModelAdmin): + model = Type + list_display = ['id', 'name', 'type', 'logo'] + +admin.site.register(Provider,ProviderAdmin) +admin.site.register(Type,TypeAdmin) \ No newline at end of file diff --git a/provider/apps.py b/provider/apps.py new file mode 100644 index 0000000..6b1606b --- /dev/null +++ b/provider/apps.py @@ -0,0 +1,7 @@ +from __future__ import unicode_literals + +from django.apps import AppConfig + + +class ProviderConfig(AppConfig): + name = 'provider' diff --git a/provider/migrations/0001_initial.py b/provider/migrations/0001_initial.py new file mode 100644 index 0000000..2e3adf1 --- /dev/null +++ b/provider/migrations/0001_initial.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2016-12-02 19:51 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Provider', + fields=[ + ('id', models.IntegerField(primary_key=True, serialize=False)), + ('provider', models.CharField(max_length=64)), + ('name', models.CharField(db_index=True, max_length=255, unique=True)), + ('region', models.CharField(db_index=True, max_length=255, unique=True)), + ('project_id', models.CharField(db_index=True, max_length=255)), + ('default_role', models.CharField(max_length=255)), + ('default_domain_id', models.CharField(max_length=255)), + ('username', models.CharField(db_index=True, max_length=255, unique=True)), + ('password', models.CharField(max_length=255)), + ('api_version', models.CharField(max_length=255)), + ('url', models.TextField()), + ('created_at', models.DateField()), + ('enabled', models.BooleanField(default=True)), + ('validated', models.BooleanField(default=False)), + ], + ), + ] diff --git a/provider/migrations/0002_auto_20161202_2042.py b/provider/migrations/0002_auto_20161202_2042.py new file mode 100644 index 0000000..ed2953e --- /dev/null +++ b/provider/migrations/0002_auto_20161202_2042.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2016-12-02 20:42 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('provider', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='provider', + name='id', + field=models.AutoField(primary_key=True, serialize=False), + ), + ] diff --git a/provider/migrations/0003_type.py b/provider/migrations/0003_type.py new file mode 100644 index 0000000..961660f --- /dev/null +++ b/provider/migrations/0003_type.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2016-12-04 10:00 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('provider', '0002_auto_20161202_2042'), + ] + + operations = [ + migrations.CreateModel( + name='Type', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('name', models.CharField(db_index=True, max_length=255, unique=True)), + ('type', models.CharField(choices=[('1', 'Public Cloud Provider'), ('2', 'Private Cloud Provider'), ('3', 'Container Provider'), ('4', 'VPS Provider')], max_length=1)), + ('logo', models.FileField(upload_to='static/provider-logo/')), + ], + ), + ] diff --git a/provider/migrations/__init__.py b/provider/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/provider/models.py b/provider/models.py new file mode 100644 index 0000000..f1f1f8c --- /dev/null +++ b/provider/models.py @@ -0,0 +1,62 @@ +from __future__ import unicode_literals + +from django.db import models + + +class Provider(models.Model): + id = models.AutoField(primary_key=True) + provider = models.CharField(max_length=64) + name = models.CharField( + max_length=255, + unique=True, + db_index=True + ) + region = models.CharField( + max_length=255, + unique=True, + db_index=True + ) + project_id = models.CharField( + max_length=255, + db_index=True + ) + default_role = models.CharField(max_length=255) + default_domain_id = models.CharField(max_length=255) + username = models.CharField( + max_length=255, + unique=True, + db_index=True + ) + password = models.CharField(max_length=255) + api_version = models.CharField(max_length=255) + url = models.TextField() + created_at = models.DateField() + enabled = models.BooleanField(default=True) + validated = models.BooleanField(default=False) + + def __unicode__(self): + return self.name + + +class Type(models.Model): + types = ( + ('1', 'Public Cloud Provider'), + ('2', 'Private Cloud Provider'), + ('3', 'Container Provider'), + ('4', 'VPS Provider'), + ) + id = models.AutoField(primary_key=True) + name = models.CharField( + max_length=255, + unique=True, + db_index=True + ) + type = models.CharField( + max_length=1, + choices=types + ) + logo = models.FileField(upload_to='static/provider-logo/') + + def __unicode__(self): + return self.name + diff --git a/provider/tests.py b/provider/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/provider/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/provider/views.py b/provider/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/provider/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/static/provider-logo/openstack-logo-1-300x150.png b/static/provider-logo/openstack-logo-1-300x150.png new file mode 100644 index 0000000000000000000000000000000000000000..b6e1fb02de716d188f7938dbbaa3f752ece374f6 GIT binary patch literal 4629 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