fix KeyError
[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  
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 class KeySerializer(serializers.HyperlinkedModelSerializer):
38     id = serializers.Field()
39     user = serializers.HyperlinkedRelatedField(view_name='user-detail') 
40     class Meta:
41         model = Key
42         fields = ('id',
43                   'name',
44                   'key',
45                   'type',
46                   'blacklisted', 
47                   'user')
48
49
50 class SliceSerializer(serializers.HyperlinkedModelSerializer):
51     # HyperlinkedModelSerializer doesn't include the id by default
52     id = serializers.Field()
53     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
54     slivers = serializers.HyperlinkedRelatedField(view_name='sliver-detail')
55     subnets = serializers.HyperlinkedRelatedField(view_name='subnet-detail')
56     class Meta:
57         model = Slice
58         fields = ('id',
59                   'tenant_id',
60                   'enabled',
61                   'name',
62                   'url',
63                   'instantiation',
64                   'omf_friendly',
65                   'description',
66                   'slice_url',
67                   'network_id',
68                   'router_id',
69                   'site',
70                   'slivers',
71                   'subnets',
72                   'updated',
73                   'created')
74
75 class SiteSerializer(serializers.HyperlinkedModelSerializer):
76
77     #Experimenting with whether to use ids, hyperlinks, or nested includes
78     #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
79     #slices = serializers.RelatedField(many=True, read_only=True)
80     #slices = SliceSerializer(many=True)
81     # HyperlinkedModelSerializer doesn't include the id by default
82     id = serializers.Field()
83     slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
84     deployment_networks = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='sitedeploymentnetwork-detail')
85
86     class Meta:
87         model = Site
88         fields = ('id',
89                   'url',
90                   'name',
91                   'deployment_networks',
92                   'slices',
93                   'site_url',
94                   'enabled',
95                   'longitude',
96                   'latitude',
97                   'login_base',
98                   'tenant_id',
99                   'is_public',
100                   'abbreviated_name',
101                   'updated',
102                   'created')
103
104 class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
105
106     # HyperlinkedModelSerializer doesn't include the id by default
107     id = serializers.Field()
108     sites = serializers.HyperlinkedRelatedField(view_name='sitedeploymentnetwork-detail')
109     class Meta:
110         model = DeploymentNetwork
111         fields = ('id',
112                   'name',
113                   'sites'
114                  )
115
116 class SiteDeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
117     # HyperlinkedModelSerializer doesn't include the id by default
118     id = serializers.Field()
119     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
120     deploymentNetwork = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
121
122     class Meta:
123         model = SiteDeploymentNetwork
124         fields = ('id',
125                  'url',
126                  'site',
127                  'deploymentNetwork')
128
129 class SliverSerializer(serializers.HyperlinkedModelSerializer):
130     # HyperlinkedModelSerializer doesn't include the id by default
131     id = serializers.Field()
132     slice = serializers.RelatedField(read_only=True)
133     #slice = serializers.PrimaryKeyRelatedField(read_only=True)
134
135     class Meta:
136         model = Sliver
137         fields = ('id',
138                   'slice',
139                   'name')
140
141 class NodeSerializer(serializers.HyperlinkedModelSerializer):
142     # HyperlinkedModelSerializer doesn't include the id by default
143     id = serializers.Field()
144     class Meta:
145         model = Node
146         fields = ('id',
147                  'name')
148
149 class ImageSerializer(serializers.HyperlinkedModelSerializer):
150     # HyperlinkedModelSerializer doesn't include the id by default
151     id = serializers.Field()
152     class Meta:
153         model = Image
154         fields = ('id',
155                   'image_id',
156                   'name',
157                   'disk_format',
158                   'container_format')
159
160 class FlavorSerializer(serializers.HyperlinkedModelSerializer):
161     # HyperlinkedModelSerializer doesn't include the id by default
162     id = serializers.Field()
163     class Meta:
164         model = Flavor
165         fields = ('id',
166                   'flavor_id',
167                   'name',
168                   'memory_mb',
169                   'disk_gb',
170                   'vcpus')
171
172 serializerLookUp = { 
173                  Role: RoleSerializer,
174                  User: UserSerializer,
175                  Key: KeySerializer,
176                  Site: SiteSerializer,
177                  Slice: SliceSerializer,
178                  Node: NodeSerializer,
179                  Sliver: SliverSerializer,
180                  DeploymentNetwork: DeploymentNetworkSerializer,
181                  SiteDeploymentNetwork: SiteDeploymentNetworkSerializer,
182                  Image: ImageSerializer,
183                  Flavor: FlavorSerializer, 
184                  None: None,
185                 }
186