From f41a41be269961143130e472984795b2d32fd5f2 Mon Sep 17 00:00:00 2001 From: Scott Baker Date: Thu, 6 Nov 2014 17:38:38 -0800 Subject: [PATCH] service composition WIP --- planetstack/servcomp/__init__.py | 0 planetstack/servcomp/admin.py | 51 ++++++++++++++++++++++++++++++++ planetstack/servcomp/models.py | 36 ++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 planetstack/servcomp/__init__.py create mode 100644 planetstack/servcomp/admin.py create mode 100644 planetstack/servcomp/models.py diff --git a/planetstack/servcomp/__init__.py b/planetstack/servcomp/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/planetstack/servcomp/admin.py b/planetstack/servcomp/admin.py new file mode 100644 index 0000000..65a646b --- /dev/null +++ b/planetstack/servcomp/admin.py @@ -0,0 +1,51 @@ +from django.contrib import admin + +from servcomp.models import * +from django import forms +from django.utils.safestring import mark_safe +from django.contrib.auth.admin import UserAdmin +from django.contrib.admin.widgets import FilteredSelectMultiple +from django.contrib.auth.forms import ReadOnlyPasswordHashField +from django.contrib.auth.signals import user_logged_in +from django.utils import timezone +from django.contrib.contenttypes import generic +from suit.widgets import LinkedSelect +from core.admin import SingletonAdmin,SliceInline,ServiceAttrAsTabInline, ReadOnlyAwareAdmin, PlStackTabularInline + +class CompositionServiceAdmin(SingletonAdmin): + model = CompositionService + verbose_name = "Composition Service" + verbose_name_plural = "Composition Service" + list_display = ("backend_status_icon", "name","enabled") + list_display_links = ('backend_status_icon', 'name', ) + fieldsets = [(None, {'fields': ['backend_status_text', 'name','enabled','versionNumber', 'description'], 'classes':['suit-tab suit-tab-general']})] + readonly_fields = ('backend_status_text', ) + inlines = [SliceInline,ServiceAttrAsTabInline] + + user_readonly_fields = ["name", "enabled", "versionNumber", "description"] + + suit_form_tabs =(('general', 'Composition Service Details'), + ('slices','Slices'), + ('serviceattrs','Additional Attributes'), + ) + +class CompositionAdmin(ReadOnlyAwareAdmin): + list_display = ('backend_status_icon', 'name' ) + list_display_links = ('backend_status_icon', 'name' ) + + fields = ('backend_status_text', 'name') + readonly_fields = ('backend_status_text', ) + user_readonly_fields = ('name',) + +class EndUserAdmin(ReadOnlyAwareAdmin): + list_display = ('backend_status_icon', 'email', 'macAddress', 'composition' ) + list_display_links = ('backend_status_icon', 'email' ) + + fields = ('backend_status_text', 'email', 'firstName', 'lastName', 'macAddress', 'composition') + readonly_fields = ('backend_status_text', ) + user_readonly_fields = ('email', 'firstName', 'lastName', 'macAddress') + +admin.site.register(CompositionService, CompositionServiceAdmin) +admin.site.register(Composition, CompositionAdmin) +admin.site.register(EndUser, EndUserAdmin) + diff --git a/planetstack/servcomp/models.py b/planetstack/servcomp/models.py new file mode 100644 index 0000000..a215409 --- /dev/null +++ b/planetstack/servcomp/models.py @@ -0,0 +1,36 @@ +from django.db import models +from core.models import User, Service, SingletonModel, PlCoreBase, DiffModelMixIn +import os +from django.db import models +from django.forms.models import model_to_dict + +class CompositionService(SingletonModel,Service): + class Meta: + app_label = "servcomp" + verbose_name = "Service Composition Service" + +class Composition(PlCoreBase): + class Meta: + app_label = "servcomp" + + name = models.CharField(max_length=255); + services = models.ManyToManyField(Service, through='CompositionServiceThrough', blank=True); + +class CompositionServiceThrough(PlCoreBase): + class Meta: + app_label = "servcomp" + + Composition = models.ForeignKey(Composition) + Service = models.ForeignKey(Service, related_name="compositions") + order = models.IntegerField(default=0) + +class EndUser(PlCoreBase): + class Meta: + app_label = "servcomp" + + email = models.CharField(max_length=255) + firstName = models.CharField(max_length=80) + lastName = models.CharField(max_length=80) + macAddress = models.CharField(max_length=80) + composition = models.ForeignKey(Composition, related_name="endUsers", blank=True, null=True) + -- 2.47.0