merge Amisha's changes
[plstackapi.git] / planetstack / core / serializers.py
1 from django.forms import widgets
2 from rest_framework import serializers
3 from core.models import *
4
5
6 class DeploymentSerializer(serializers.HyperlinkedModelSerializer):
7
8     # HyperlinkedModelSerializer doesn't include the id by default
9     id = serializers.Field()
10     sites = serializers.HyperlinkedRelatedField(view_name='site-detail')
11     class Meta:
12         model = Deployment
13         fields = ('id',
14                   'url',
15                   'name',
16                   'sites'
17                  )
18
19 class ImageSerializer(serializers.HyperlinkedModelSerializer):
20     # HyperlinkedModelSerializer doesn't include the id by default
21     id = serializers.Field()
22     class Meta:
23         model = Image
24         fields = ('id',
25                   'url',
26                   'image_id',
27                   'name',
28                   'disk_format',
29                   'container_format')
30
31 class NodeSerializer(serializers.HyperlinkedModelSerializer):
32     # HyperlinkedModelSerializer doesn't include the id by default
33     id = serializers.Field()
34     class Meta:
35         model = Node
36         fields = ('id',
37                  'url',
38                  'name')
39
40 class ProjectSerializer(serializers.HyperlinkedModelSerializer):
41     # HyperlinkedModelSerializer doesn't include the id by default
42     id = serializers.Field()
43     class Meta:
44         model = Project
45         fields = ('id',
46                  'url',
47                  'name')
48
49 class ReservationSerializer(serializers.HyperlinkedModelSerializer):
50     # HyperlinkedModelSerializer doesn't include the id by default
51     id = serializers.Field()
52     class Meta:
53         model = Reservation
54         fields = ('id',
55                  'url',
56                  'startTime',
57                  'slice',
58                  'duration',
59                  'endTime',
60                  )
61
62 class RoleSerializer(serializers.HyperlinkedModelSerializer):
63     # HyperlinkedModelSerializer doesn't include the id by default
64     id = serializers.Field()
65     class Meta:
66         model = Role
67         fields = ('id', 
68                  'url',
69                  'role',
70                  'role_type')
71
72
73 class ServiceClassSerializer(serializers.HyperlinkedModelSerializer):
74     # HyperlinkedModelSerializer doesn't include the id by default
75     id = serializers.Field()
76     class Meta:
77         model = ServiceClass
78         fields = ('id',
79                  'url',
80                  'name',
81                  'description',
82                  'commitment',
83                  'membershipFee',
84                  'membershipFeeMonths',
85                  'upgradeRequiresApproval',
86                  'upgradeFrom',
87                  )
88
89 class ServiceResourceSerializer(serializers.HyperlinkedModelSerializer):
90     # HyperlinkedModelSerializer doesn't include the id by default
91     id = serializers.Field()
92     serviceClass = serializers.HyperlinkedRelatedField(view_name='serviceclass-detail')
93     class Meta:
94         model = ServiceResource
95         fields = ('id',
96                  'url',
97                  'name',
98                  'serviceClass',
99                  'maxUnitsDeployment',
100                  'maxUnitsNode',
101                  'maxDuration',
102                  'bucketInRate',
103                  'bucketMaxSize',
104                  'cost',
105                  'calendarReservable',
106                  )
107
108 class SliceSerializer(serializers.HyperlinkedModelSerializer):
109     # HyperlinkedModelSerializer doesn't include the id by default
110     id = serializers.Field()
111     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
112     slivers = serializers.HyperlinkedRelatedField(view_name='sliver-detail')
113     class Meta:
114         model = Slice
115         fields = ('id',
116                   'url',
117                   'tenant_id',
118                   'enabled',
119                   'name',
120                   'url',
121                   'omf_friendly',
122                   'description',
123                   'slice_url',
124                   'network_id',
125                   'router_id',
126                   'subnet_id',
127                   'imagePreference',
128                   'site',
129                   'slivers',
130                   'updated',
131                   'created')
132
133 class SlicePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
134     id = serializers.Field()
135     slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
136     user = serializers.HyperlinkedRelatedField(view_name='user-detail')
137     role = serializers.HyperlinkedRelatedField(view_name='role-detail')
138     class Meta:
139         model = SlicePrivilege
140         fields = ('id',
141                   'url',
142                   'user',
143                   'slice',
144                   'role')
145
146 class SiteSerializer(serializers.HyperlinkedModelSerializer):
147
148     #Experimenting with whether to use ids, hyperlinks, or nested includes
149     #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
150     #slices = serializers.RelatedField(many=True, read_only=True)
151     #slices = SliceSerializer(many=True)
152     # HyperlinkedModelSerializer doesn't include the id by default
153     id = serializers.Field()
154     slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
155
156     class Meta:
157         model = Site
158         fields = ('id',
159                   'url',
160                   'name',
161                   'slices',
162                   'site_url',
163                   'enabled',
164                   'longitude',
165                   'latitude',
166                   'login_base',
167                   'tenant_id',
168                   'is_public',
169                   'abbreviated_name',
170                   'updated',
171                   'created')
172
173 class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
174     id = serializers.Field()
175     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
176     user = serializers.HyperlinkedRelatedField(view_name='user-detail')
177     role = serializers.HyperlinkedRelatedField(view_name='role-detail')
178     class Meta:
179         model = SitePrivilege
180         fields = ('id',
181                   'url',
182                   'user',
183                   'site',
184                   'role')
185
186 class SliverSerializer(serializers.HyperlinkedModelSerializer):
187     # HyperlinkedModelSerializer doesn't include the id by default
188     id = serializers.Field()
189     image = serializers.HyperlinkedRelatedField(view_name='image-detail')
190     slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
191     deploymentNetwork = serializers.HyperlinkedRelatedField(view_name='deployment-detail')
192     node = serializers.HyperlinkedRelatedField(view_name='node-detail')
193     
194     #slice = serializers.PrimaryKeyRelatedField(read_only=True)
195
196     class Meta:
197         model = Sliver
198         fields = ('id',
199                   'url',
200                   'instance_id',
201                   'name',
202                   'instance_name',
203                   'ip',
204                   'image',
205                   'slice',
206                   'deploymentNetwork',
207                   'node')
208
209 class UserSerializer(serializers.HyperlinkedModelSerializer):
210     # HyperlinkedModelSerializer doesn't include the id by default
211     id = serializers.Field()
212     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
213     slice_privileges = serializers.HyperlinkedRelatedField(view_name='sliceprivilege-detail')
214     site_privileges = serializers.HyperlinkedRelatedField(view_name='siteprivilege-detail')
215     class Meta:
216         model = User
217         fields = ('id',
218                   'url',
219                   'kuser_id', 
220                   'firstname', 
221                   'lastname',
222                   'email', 
223                   'password',
224                   'phone',
225                   'public_key', 
226                   'user_url',
227                   'is_admin',
228                   'slice_privileges',
229                   'site_privileges')
230                     
231 class TagSerializer(serializers.HyperlinkedModelSerializer):
232     # HyperlinkedModelSerializer doesn't include the id by default
233     id = serializers.Field()
234     project = serializers.HyperlinkedRelatedField(view_name='project-detail')
235     #content_type = serializers.PrimaryKeyRelatedField(read_only=True)
236     content_type = serializers.RelatedField(source = "content_type")
237     content_object = serializers.RelatedField(source='content_object')
238     class Meta:
239         model = Tag
240         fields = ('id', 
241                   'url',
242                   'project',
243                   'value',
244                   'content_type',
245                   'object_id',
246                   'content_object',
247                   'name')
248
249 serializerLookUp = { 
250                  Deployment: DeploymentSerializer,
251                  Image: ImageSerializer,
252                  Node: NodeSerializer,
253                  Project: ProjectSerializer,
254                  Reservation: ReservationSerializer,
255                  Role: RoleSerializer,
256                  ServiceClass: ServiceClassSerializer,
257                  ServiceResource: ServiceResourceSerializer,
258                  Site: SiteSerializer,
259                  SitePrivilege: SitePrivilegeSerializer,
260                  Slice: SliceSerializer,
261                  SlicePrivilege: SlicePrivilegeSerializer,
262                  Sliver: SliverSerializer,
263                  Tag: TagSerializer,
264                  User: UserSerializer,
265                  None: None,
266                 }
267