remove reference to Subnet
[plstackapi.git] / plstackapi / core / serializers.py
index 2973ab4..b6a9e7d 100644 (file)
@@ -3,91 +3,193 @@ from rest_framework import serializers
 from plstackapi.core.models import *
 
 
-class SliceSerializer(serializers.HyperlinkedModelSerializer):
+class RoleSerializer(serializers.HyperlinkedModelSerializer):
+    # HyperlinkedModelSerializer doesn't include the id by default
+    id = serializers.Field()
+    class Meta:
+        model = Role
+        fields = ('id', 
+                  'role_id',
+                  'role_type')
+
 
+class UserSerializer(serializers.HyperlinkedModelSerializer):
+    # HyperlinkedModelSerializer doesn't include the id by default
+    id = serializers.Field()
     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
+    slice_memberships = serializers.HyperlinkedRelatedField(view_name='slice-membership-detail')
+    site_privileges = serializers.HyperlinkedRelatedField(view_name='site-privilege-detail')
+    class Meta:
+        model = PLUser
+        fields = ('id',
+                  'user_id', 
+                  'firstname', 
+                  'lastname',
+                  'email', 
+                  'password', 
+                  'phone', 
+                  'user_url',
+                  'is_admin',
+                  'site',
+                  'slice_memberships',
+                  'site_privileges')
+                    
+class KeySerializer(serializers.HyperlinkedModelSerializer):
+    id = serializers.Field()
+    user = serializers.HyperlinkedRelatedField(view_name='user-detail') 
+    class Meta:
+        model = Key
+        fields = ('id',
+                  'name',
+                  'key',
+                  'type',
+                  'blacklisted', 
+                  'user')
+
 
+class SliceSerializer(serializers.HyperlinkedModelSerializer):
+    # HyperlinkedModelSerializer doesn't include the id by default
+    id = serializers.Field()
+    site = serializers.HyperlinkedRelatedField(view_name='site-detail')
+    slivers = serializers.HyperlinkedRelatedField(view_name='sliver-detail')
     class Meta:
         model = Slice
-        fields = ('url',
+        fields = ('id',
+                  'tenant_id',
+                  'enabled',
                   'name',
-                  'instantiation',
+                  'url',
                   'omf_friendly',
                   'description',
                   'slice_url',
+                  'network_id',
+                  'router_id',
+                  'subnet_id',
                   'site',
+                  'slivers',
                   'updated',
                   'created')
 
+class SliceMembershipSerializer(serializers.HyperlinkedModelSerializer):
+    id = serializers.Field()
+    slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
+    user = serializers.HyperlinkedRelatedField(view_name='user-detail')
+    role = serializers.HyperlinkedRelatedField(view_name='role-detail')
+    class Meta:
+        model = SitePrivilege
+        fields = ('id',
+                  'user',
+                  'slice',
+                  'role')
+
 class SiteSerializer(serializers.HyperlinkedModelSerializer):
 
     #Experimenting with whether to use ids, hyperlinks, or nested includes
     #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
     #slices = serializers.RelatedField(many=True, read_only=True)
     #slices = SliceSerializer(many=True)
+    # HyperlinkedModelSerializer doesn't include the id by default
+    id = serializers.Field()
     slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
-    deploymentNetworks = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='sitedeploymentnetwork-detail')
 
     class Meta:
         model = Site
-        fields = ('url',
+        fields = ('id',
+                  'url',
                   'name',
-                  'deploymentNetworks',
                   'slices',
                   'site_url',
                   'enabled',
                   'longitude',
                   'latitude',
                   'login_base',
+                  'tenant_id',
                   'is_public',
                   'abbreviated_name',
                   'updated',
                   'created')
 
+class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
+    id = serializers.Field()
+    site = serializers.HyperlinkedRelatedField(view_name='site-detail')
+    user = serializers.HyperlinkedRelatedField(view_name='user-detail')
+    role = serializers.HyperlinkedRelatedField(view_name='role-detail')
+    class Meta:
+        model = SitePrivilege
+        fields = ('id',
+                  'user',
+                  'site',
+                  'role')
+
 class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
 
-    sites = serializers.HyperlinkedRelatedField(view_name='sitedeploymentnetwork-detail')
+    # HyperlinkedModelSerializer doesn't include the id by default
+    id = serializers.Field()
+    sites = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
     class Meta:
         model = DeploymentNetwork
-        fields = ('url',
+        fields = ('id',
                   'name',
                   'sites'
                  )
 
-class SiteDeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
-
-    site = serializers.HyperlinkedRelatedField(view_name='site-detail')
-    deploymentNetwork = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
-
-    class Meta:
-        model = SiteDeploymentNetwork
-        fields = ('url',
-                 'site',
-                 'deploymentNetwork')
-
-class SliverSerializer(serializers.ModelSerializer):
-    slice = serializers.RelatedField(read_only=True)
+class SliverSerializer(serializers.HyperlinkedModelSerializer):
+    # HyperlinkedModelSerializer doesn't include the id by default
+    id = serializers.Field()
+    image = serializers.HyperlinkedRelatedField(view_name='image-detail')
+    key = serializers.HyperlinkedRelatedField(view_name='key-detail')
+    slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
+    deployment_network = serializers.HyperlinkedRelatedField(view_name='deployment_network-detail')
+    node = serializers.HyperlinkedRelatedField(view_name='node-detail')
+    
+    
     #slice = serializers.PrimaryKeyRelatedField(read_only=True)
 
     class Meta:
         model = Sliver
         fields = ('id',
+                  'instance_id',
+                  'name',
+                  'instance_name',
+                  'ip',
+                  'image',
+                  'key',
                   'slice',
-                 'name')
-
-class NodeSerializer(serializers.ModelSerializer):
+                  'deploymentNetwork',
+                  'node')
 
+class NodeSerializer(serializers.HyperlinkedModelSerializer):
+    # HyperlinkedModelSerializer doesn't include the id by default
+    id = serializers.Field()
     class Meta:
         model = Node
         fields = ('id',
                  'name')
 
-
-serializerLookUp = { Site: SiteSerializer,
+class ImageSerializer(serializers.HyperlinkedModelSerializer):
+    # HyperlinkedModelSerializer doesn't include the id by default
+    id = serializers.Field()
+    class Meta:
+        model = Image
+        fields = ('id',
+                  'image_id',
+                  'name',
+                  'disk_format',
+                  'container_format')
+
+serializerLookUp = { 
+                 Role: RoleSerializer,
+                 PLUser: UserSerializer,
+                 Key: KeySerializer,
+                 Site: SiteSerializer,
+                 SitePrivilege: SitePrivilegeSerializer,
                  Slice: SliceSerializer,
+                 SliceMembership: SliceMembershipSerializer,
+                 Subnet: SubnetSerializer,
                  Node: NodeSerializer,
                  Sliver: SliverSerializer,
                  DeploymentNetwork: DeploymentNetworkSerializer,
-                 SiteDeploymentNetwork: SiteDeploymentNetworkSerializer,
+                 Image: ImageSerializer,
                  None: None,
                 }
+