updated Role admin
[plstackapi.git] / plstackapi / core / serializers.py
1 from django.forms import widgets
2 from rest_framework import serializers
3 from plstackapi.core.models import *
4
5
6 class RoleSerializer(serializers.HyperlinkedModelSerializer):
7     # HyperlinkedModelSerializer doesn't include the id by default
8     id = serializers.Field()
9     class Meta:
10         model = Role
11         fields = ('id', 
12                   'role_id',
13                   'role_type')
14
15
16 class UserSerializer(serializers.HyperlinkedModelSerializer):
17     # HyperlinkedModelSerializer doesn't include the id by default
18     id = serializers.Field()
19     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
20     slice_memberships = serializers.HyperlinkedRelatedField(view_name='slice-membership-detail')
21     site_privileges = serializers.HyperlinkedRelatedField(view_name='site-privilege-detail')
22     class Meta:
23         model = User
24         fields = ('id',
25                   'user_id', 
26                   'firstname', 
27                   'lastname',
28                   'email', 
29                   'phone', 
30                   'user_url',
31                   'is_admin',
32                   'site',
33                   'slice_memberships',
34                   'site_privileges')
35                     
36 class KeySerializer(serializers.HyperlinkedModelSerializer):
37     id = serializers.Field()
38     user = serializers.HyperlinkedRelatedField(view_name='user-detail') 
39     class Meta:
40         model = Key
41         fields = ('id',
42                   'name',
43                   'key',
44                   'type',
45                   'blacklisted', 
46                   'user')
47
48
49 class SliceSerializer(serializers.HyperlinkedModelSerializer):
50     # HyperlinkedModelSerializer doesn't include the id by default
51     id = serializers.Field()
52     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
53     slivers = serializers.HyperlinkedRelatedField(view_name='sliver-detail')
54     subnet= serializers.HyperlinkedRelatedField(view_name='subnet-detail')
55     class Meta:
56         model = Slice
57         fields = ('id',
58                   'tenant_id',
59                   'enabled',
60                   'name',
61                   'url',
62                   'instantiation',
63                   'omf_friendly',
64                   'description',
65                   'slice_url',
66                   'network_id',
67                   'router_id',
68                   'site',
69                   'slivers',
70                   'subnet',
71                   'updated',
72                   'created')
73
74 class SliceMembershipSerializer(serializers.HyperlinkedModelSerializer):
75     id = serializers.Field()
76     slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
77     user = serializers.HyperlinkedRelatedField(view_name='user-detail')
78     role = serializers.HyperlinkedRelatedField(view_name='role-detail')
79     class Meta:
80         model = SitePrivilege
81         fields = ('id',
82                   'user',
83                   'slice',
84                   'role')
85
86 class SubnetSerializer(serializers.HyperlinkedModelSerializer):
87     id = serializers.Field()
88     slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
89     class Meta:
90         model = Subnet
91         fields = ('id',
92                   'subnet_id',
93                   'cidr',
94                   'ip_version',
95                   'start',
96                   'end',
97                   'slice')  
98
99 class SiteSerializer(serializers.HyperlinkedModelSerializer):
100
101     #Experimenting with whether to use ids, hyperlinks, or nested includes
102     #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
103     #slices = serializers.RelatedField(many=True, read_only=True)
104     #slices = SliceSerializer(many=True)
105     # HyperlinkedModelSerializer doesn't include the id by default
106     id = serializers.Field()
107     slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
108
109     class Meta:
110         model = Site
111         fields = ('id',
112                   'url',
113                   'name',
114                   'slices',
115                   'site_url',
116                   'enabled',
117                   'longitude',
118                   'latitude',
119                   'login_base',
120                   'tenant_id',
121                   'is_public',
122                   'abbreviated_name',
123                   'updated',
124                   'created')
125
126 class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
127     id = serializers.Field()
128     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
129     user = serializers.HyperlinkedRelatedField(view_name='user-detail')
130     role = serializers.HyperlinkedRelatedField(view_name='role-detail')
131     class Meta:
132         model = SitePrivilege
133         fields = ('id',
134                   'user',
135                   'site',
136                   'role')
137
138 class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
139
140     # HyperlinkedModelSerializer doesn't include the id by default
141     id = serializers.Field()
142     sites = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
143     class Meta:
144         model = DeploymentNetwork
145         fields = ('id',
146                   'name',
147                   'sites'
148                  )
149
150 class SliverSerializer(serializers.HyperlinkedModelSerializer):
151     # HyperlinkedModelSerializer doesn't include the id by default
152     id = serializers.Field()
153     flavor = serializers.HyperlinkedRelatedField(view_name='flavor-detail')
154     image = serializers.HyperlinkedRelatedField(view_name='image-detail')
155     key = serializers.HyperlinkedRelatedField(view_name='key-detail')
156     slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
157     deployment_network = serializers.HyperlinkedRelatedField(view_name='deployment_network-detail')
158     node = serializers.HyperlinkedRelatedField(view_name='node-detail')
159     
160     
161     #slice = serializers.PrimaryKeyRelatedField(read_only=True)
162
163     class Meta:
164         model = Sliver
165         fields = ('id',
166                   'instance_id',
167                   'name',
168                   'flavor',
169                   'image',
170                   'key',
171                   'slice',
172                   'deploymentNetwork',
173                   'node')
174
175 class NodeSerializer(serializers.HyperlinkedModelSerializer):
176     # HyperlinkedModelSerializer doesn't include the id by default
177     id = serializers.Field()
178     class Meta:
179         model = Node
180         fields = ('id',
181                  'name')
182
183 class ImageSerializer(serializers.HyperlinkedModelSerializer):
184     # HyperlinkedModelSerializer doesn't include the id by default
185     id = serializers.Field()
186     class Meta:
187         model = Image
188         fields = ('id',
189                   'image_id',
190                   'name',
191                   'disk_format',
192                   'container_format')
193
194 class FlavorSerializer(serializers.HyperlinkedModelSerializer):
195     # HyperlinkedModelSerializer doesn't include the id by default
196     id = serializers.Field()
197     class Meta:
198         model = Flavor
199         fields = ('id',
200                   'flavor_id',
201                   'name',
202                   'memory_mb',
203                   'disk_gb',
204                   'vcpus')
205
206 serializerLookUp = { 
207                  Role: RoleSerializer,
208                  User: UserSerializer,
209                  Key: KeySerializer,
210                  Site: SiteSerializer,
211                  SitePrivilege: SitePrivilegeSerializer,
212                  Slice: SliceSerializer,
213                  SliceMembership: SliceMembershipSerializer,
214                  Subnet: SubnetSerializer,
215                  Node: NodeSerializer,
216                  Sliver: SliverSerializer,
217                  DeploymentNetwork: DeploymentNetworkSerializer,
218                  Image: ImageSerializer,
219                  Flavor: FlavorSerializer, 
220                  None: None,
221                 }
222