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