447bac4675383fdc59355062a64a47def5a4acaf
[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 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',
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                   'kuser_id', 
28                   'firstname', 
29                   'lastname',
30                   'email', 
31                   'password', 
32                   'phone', 
33                   'user_url',
34                   'is_admin',
35                   'site',
36                   'slice_memberships',
37                   'site_privileges')
38                     
39 class KeySerializer(serializers.HyperlinkedModelSerializer):
40     id = serializers.Field()
41     user = serializers.HyperlinkedRelatedField(view_name='user-detail') 
42     class Meta:
43         model = Key
44         fields = ('id',
45                   'name',
46                   'key',
47                   'type',
48                   'blacklisted', 
49                   'user')
50
51
52 class SliceSerializer(serializers.HyperlinkedModelSerializer):
53     # HyperlinkedModelSerializer doesn't include the id by default
54     id = serializers.Field()
55     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
56     slivers = serializers.HyperlinkedRelatedField(view_name='sliver-detail')
57     class Meta:
58         model = Slice
59         fields = ('id',
60                   'tenant_id',
61                   'enabled',
62                   'name',
63                   'url',
64                   'omf_friendly',
65                   'description',
66                   'slice_url',
67                   'network_id',
68                   'router_id',
69                   'subnet_id',
70                   'site',
71                   'slivers',
72                   'updated',
73                   'created')
74
75 class SliceMembershipSerializer(serializers.HyperlinkedModelSerializer):
76     id = serializers.Field()
77     slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
78     user = serializers.HyperlinkedRelatedField(view_name='user-detail')
79     role = serializers.HyperlinkedRelatedField(view_name='role-detail')
80     class Meta:
81         model = SitePrivilege
82         fields = ('id',
83                   'user',
84                   'slice',
85                   'role')
86
87 class SiteSerializer(serializers.HyperlinkedModelSerializer):
88
89     #Experimenting with whether to use ids, hyperlinks, or nested includes
90     #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
91     #slices = serializers.RelatedField(many=True, read_only=True)
92     #slices = SliceSerializer(many=True)
93     # HyperlinkedModelSerializer doesn't include the id by default
94     id = serializers.Field()
95     slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
96
97     class Meta:
98         model = Site
99         fields = ('id',
100                   'url',
101                   'name',
102                   'slices',
103                   'site_url',
104                   'enabled',
105                   'longitude',
106                   'latitude',
107                   'login_base',
108                   'tenant_id',
109                   'is_public',
110                   'abbreviated_name',
111                   'updated',
112                   'created')
113
114 class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
115     id = serializers.Field()
116     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
117     user = serializers.HyperlinkedRelatedField(view_name='user-detail')
118     role = serializers.HyperlinkedRelatedField(view_name='role-detail')
119     class Meta:
120         model = SitePrivilege
121         fields = ('id',
122                   'user',
123                   'site',
124                   'role')
125
126 class DeploymentSerializer(serializers.HyperlinkedModelSerializer):
127
128     # HyperlinkedModelSerializer doesn't include the id by default
129     id = serializers.Field()
130     sites = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
131     class Meta:
132         model = Deployment
133         fields = ('id',
134                   'name',
135                   'sites'
136                  )
137
138 class SliverSerializer(serializers.HyperlinkedModelSerializer):
139     # HyperlinkedModelSerializer doesn't include the id by default
140     id = serializers.Field()
141     image = serializers.HyperlinkedRelatedField(view_name='image-detail')
142     key = serializers.HyperlinkedRelatedField(view_name='key-detail')
143     slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
144     deployment_network = serializers.HyperlinkedRelatedField(view_name='deployment_network-detail')
145     node = serializers.HyperlinkedRelatedField(view_name='node-detail')
146     
147     
148     #slice = serializers.PrimaryKeyRelatedField(read_only=True)
149
150     class Meta:
151         model = Sliver
152         fields = ('id',
153                   'instance_id',
154                   'name',
155                   'instance_name',
156                   'ip',
157                   'image',
158                   'key',
159                   'slice',
160                   'deploymentNetwork',
161                   'node')
162
163 class NodeSerializer(serializers.HyperlinkedModelSerializer):
164     # HyperlinkedModelSerializer doesn't include the id by default
165     id = serializers.Field()
166     class Meta:
167         model = Node
168         fields = ('id',
169                  'name')
170
171 class ImageSerializer(serializers.HyperlinkedModelSerializer):
172     # HyperlinkedModelSerializer doesn't include the id by default
173     id = serializers.Field()
174     class Meta:
175         model = Image
176         fields = ('id',
177                   'image_id',
178                   'name',
179                   'disk_format',
180                   'container_format')
181
182 serializerLookUp = { 
183                  Role: RoleSerializer,
184                  User: UserSerializer,
185                  Key: KeySerializer,
186                  Site: SiteSerializer,
187                  SitePrivilege: SitePrivilegeSerializer,
188                  Slice: SliceSerializer,
189                  SliceMembership: SliceMembershipSerializer,
190                  Node: NodeSerializer,
191                  Sliver: SliverSerializer,
192                  Deployment: DeploymentSerializer,
193                  Image: ImageSerializer,
194                  None: None,
195                 }
196