from django.contrib.auth.forms import ReadOnlyPasswordHashField
from django.contrib.auth.signals import user_logged_in
from django.utils import timezone
-import django_evolution
+from django.contrib.contenttypes import generic
+import django_evolution
class ReadonlyTabularInline(admin.TabularInline):
can_delete = False
def has_add_permission(self, request):
return False
+class TagInline(generic.GenericTabularInline):
+ model = Tag
+ exclude = ['enacted']
+ extra = 1
+
class SliverInline(admin.TabularInline):
model = Sliver
fields = ['ip', 'instance_name', 'slice', 'numberCores', 'image', 'node', 'deploymentNetwork']
]
list_display = ('name', 'login_base','site_url', 'enabled')
filter_horizontal = ('deployments',)
- inlines = [NodeInline, UserInline, SitePrivilegeInline]
+ inlines = [TagInline, NodeInline, UserInline, SitePrivilegeInline]
search_fields = ['name']
def queryset(self, request):
class SliceAdmin(PlanetStackBaseAdmin):
fields = ['name', 'site', 'serviceClass', 'description', 'slice_url']
list_display = ('name', 'site','serviceClass', 'slice_url')
- inlines = [SliverInline, SliceMembershipInline, SliceTagInline]
+ inlines = [SliverInline, SliceMembershipInline, TagInline, SliceTagInline]
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == 'site':
class NodeAdmin(admin.ModelAdmin):
list_display = ('name', 'site', 'deployment')
list_filter = ('deployment',)
+ inlines = [TagInline]
class SliverForm(forms.ModelForm):
('Sliver', {'fields': ['ip', 'instance_name', 'slice', 'numberCores', 'image', 'key', 'node', 'deploymentNetwork']})
]
list_display = ['ip', 'instance_name', 'slice', 'numberCores', 'image', 'key', 'node', 'deploymentNetwork']
+ inlines = [TagInline]
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == 'slice':
admin.site.register(Deployment, DeploymentAdmin)
admin.site.register(Site, SiteAdmin)
admin.site.register(Slice, SliceAdmin)
-#admin.site.register(Subnet)
-
if showAll:
+ admin.site.register(Tag)
admin.site.register(Node, NodeAdmin)
admin.site.register(SliceMembership, SliceMembershipAdmin)
admin.site.register(SitePrivilege, SitePrivilegeAdmin)
from .plcorebase import PlCoreBase
from .deployment import Deployment
+from .tag import Tag
from .site import Site
from .site import SitePrivilege
from .image import Image
from core.models import PlCoreBase
from core.models import Site
from core.models import Deployment
+from core.models import Tag
+from django.contrib.contenttypes import generic
# Create your models here.
name = models.CharField(max_length=200, unique=True, help_text="Name of the Node")
site = models.ForeignKey(Site, related_name='nodes')
deployment = models.ForeignKey(Deployment, related_name='nodes')
+ tags = generic.GenericRelation(Tag)
def __unicode__(self): return u'%s' % (self.name)
from django.db import models
from core.models import PlCoreBase
from core.models import Deployment
+from core.models import Tag
+from django.contrib.contenttypes import generic
class Site(PlCoreBase):
abbreviated_name = models.CharField(max_length=80)
deployments = models.ManyToManyField(Deployment, blank=True, related_name='sites')
+ tags = generic.GenericRelation(Tag)
def __unicode__(self): return u'%s' % (self.name)
from core.models import Role
from core.models import Deployment
from core.models import ServiceClass
+from core.models import Tag
+from django.contrib.contenttypes import generic
# Create your models here.
router_id = models.CharField(null=True, blank=True, max_length=256, help_text="Quantum router id")
subnet_id = models.CharField(null=True, blank=True, max_length=256, help_text="Quantum subnet id")
+ tags = generic.GenericRelation(Tag)
+
serviceClass = models.ForeignKey(ServiceClass, related_name = "slices", null=True, default=ServiceClass.get_default)
creator = models.ForeignKey(User, related_name='slices', blank=True, null=True)
from core.models import Slice
class SliceTag(PlCoreBase):
- slice = models.ForeignKey(Slice, related_name='tags')
+ slice = models.ForeignKey(Slice, related_name='slicetags')
NAME_CHOICES = (('privatekey', 'Private Key'), ('publickey', 'Public Key'))
name = models.CharField(help_text="The name of this tag", max_length=30, choices=NAME_CHOICES)
from core.models import Site
from core.models import Deployment
from core.models import User
+from core.models import Tag
+from django.contrib.contenttypes import generic
# Create your models here.
class Sliver(PlCoreBase):
node = models.ForeignKey(Node, related_name='slivers')
deploymentNetwork = models.ForeignKey(Deployment, verbose_name='deployment', related_name='sliver_deploymentNetwork')
numberCores = models.IntegerField(verbose_name="Number of Cores", help_text="Number of cores for sliver", default=0)
-
+ tags = generic.GenericRelation(Tag)
def __unicode__(self): return u'%s' % (self.instance_name)
--- /dev/null
+import os
+from django.db import models
+from core.models import PlCoreBase
+from django.contrib.contenttypes.models import ContentType
+from django.contrib.contenttypes import generic
+
+# Create your models here.
+
+class Tag(PlCoreBase):
+
+ name = models.SlugField(help_text="The name of this tag", max_length=128)
+ value = models.CharField(help_text="The value of this tag", max_length=1024)
+
+ # The required fields to do a ObjectType lookup, and object_id assignment
+ content_type = models.ForeignKey(ContentType)
+ object_id = models.PositiveIntegerField()
+ content_object = generic.GenericForeignKey('content_type', 'object_id')
+
+ def __unicode__(self):
+ return self.name
+