81a4ba84d5ba53a404c234a4f1804a98a1993c69
[plstackapi.git] / plstackapi / planetstack / serializers.py
1 from django.forms import widgets
2 from rest_framework import serializers
3 from plstackapi.planetstack.models import *
4
5
6 class RoleSerializer(serializers.HyperlinkedModelSerializer):
7     # HyperlinkedModelSerializer doesn't include the id by default
8     id = serializers.Field()
9  
10     class Meta:
11         model = Role
12         fields = ('id', 
13                   'role_id',
14                   'role_type')
15
16
17 class UserSerializer(serializers.HyperlinkedModelSerializer):
18     # HyperlinkedModelSerializer doesn't include the id by default
19     id = serializers.Field()
20     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
21     slice_memberships = serializers.HyperlinkedRelatedField(view_name='slice-membership-detail')
22     site_privileges = serializers.HyperlinkedRelatedField(view_name='site-privilege-detail')
23     class Meta:
24         model = User
25         fields = ('id',
26                   'user_id', 
27                   'firstname', 
28                   'lastname',
29                   'email', 
30                   'phone', 
31                   'user_url',
32                   'is_admin',
33                   'site',
34                   'slice_memberships',
35                   'site_privileges')
36                     
37  
38
39 class SliceSerializer(serializers.HyperlinkedModelSerializer):
40     # HyperlinkedModelSerializer doesn't include the id by default
41     id = serializers.Field()
42     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
43
44     class Meta:
45         model = Slice
46         fields = ('id',
47                   'url',
48                   'name',
49                   'instantiation',
50                   'omf_friendly',
51                   'description',
52                   'slice_url',
53                   'site',
54                   'updated',
55                   'created')
56
57 class SiteSerializer(serializers.HyperlinkedModelSerializer):
58
59     #Experimenting with whether to use ids, hyperlinks, or nested includes
60     #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
61     #slices = serializers.RelatedField(many=True, read_only=True)
62     #slices = SliceSerializer(many=True)
63     # HyperlinkedModelSerializer doesn't include the id by default
64     id = serializers.Field()
65     slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
66     deployment_networks = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='sitedeploymentnetwork-detail')
67
68     class Meta:
69         model = Site
70         fields = ('id',
71                   'url',
72                   'name',
73                   'deployment_networks',
74                   'slices',
75                   'site_url',
76                   'enabled',
77                   'longitude',
78                   'latitude',
79                   'login_base',
80                   'tenant_id',
81                   'is_public',
82                   'abbreviated_name',
83                   'updated',
84                   'created')
85
86 class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
87
88     # HyperlinkedModelSerializer doesn't include the id by default
89     id = serializers.Field()
90     sites = serializers.HyperlinkedRelatedField(view_name='sitedeploymentnetwork-detail')
91     class Meta:
92         model = DeploymentNetwork
93         fields = ('id',
94                   'name',
95                   'sites'
96                  )
97
98 class SiteDeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
99     # HyperlinkedModelSerializer doesn't include the id by default
100     id = serializers.Field()
101     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
102     deploymentNetwork = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
103
104     class Meta:
105         model = SiteDeploymentNetwork
106         fields = ('id',
107                  'url',
108                  'site',
109                  'deploymentNetwork')
110
111 class SliverSerializer(serializers.HyperlinkedModelSerializer):
112     # HyperlinkedModelSerializer doesn't include the id by default
113     id = serializers.Field()
114     slice = serializers.RelatedField(read_only=True)
115     #slice = serializers.PrimaryKeyRelatedField(read_only=True)
116
117     class Meta:
118         model = Sliver
119         fields = ('id',
120                   'slice',
121                   'name')
122
123 class NodeSerializer(serializers.HyperlinkedModelSerializer):
124     # HyperlinkedModelSerializer doesn't include the id by default
125     id = serializers.Field()
126     class Meta:
127         model = Node
128         fields = ('id',
129                  'name')
130
131 class ImageSerializer(serializers.HyperlinkedModelSerializer):
132     # HyperlinkedModelSerializer doesn't include the id by default
133     id = serializers.Field()
134     class Meta:
135         model = Image
136         fields = ('id',
137                   'image_id',
138                   'name',
139                   'disk_format',
140                   'container_format')
141
142 class FlavorSerializer(serializers.HyperlinkedModelSerializer):
143     # HyperlinkedModelSerializer doesn't include the id by default
144     id = serializers.Field()
145     class Meta:
146         model = Flavor
147         fields = ('id',
148                   'flavor_id',
149                   'name',
150                   'memory_mb',
151                   'disk_gb',
152                   'vcpus')
153
154 serializerLookUp = { 
155                  Role: RoleSerializer,
156                  User: UserSerializer,
157                  Site: SiteSerializer,
158                  Slice: SliceSerializer,
159                  Node: NodeSerializer,
160                  Sliver: SliverSerializer,
161                  DeploymentNetwork: DeploymentNetworkSerializer,
162                  SiteDeploymentNetwork: SiteDeploymentNetworkSerializer,
163                  Image: ImageSerializer,
164                  Flavor: FlavorSerializer, 
165                  None: None,
166                 }
167