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