remove reference to Subnet
[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     class Meta:
10         model = Role
11         fields = ('id', 
12                   'role_id',
13                   'role_type')
14
15
16 class UserSerializer(serializers.HyperlinkedModelSerializer):
17     # HyperlinkedModelSerializer doesn't include the id by default
18     id = serializers.Field()
19     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
20     slice_memberships = serializers.HyperlinkedRelatedField(view_name='slice-membership-detail')
21     site_privileges = serializers.HyperlinkedRelatedField(view_name='site-privilege-detail')
22     class Meta:
23         model = PLUser
24         fields = ('id',
25                   'user_id', 
26                   'firstname', 
27                   'lastname',
28                   'email', 
29                   'password', 
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     class Meta:
56         model = Slice
57         fields = ('id',
58                   'tenant_id',
59                   'enabled',
60                   'name',
61                   'url',
62                   'omf_friendly',
63                   'description',
64                   'slice_url',
65                   'network_id',
66                   'router_id',
67                   'subnet_id',
68                   'site',
69                   'slivers',
70                   'updated',
71                   'created')
72
73 class SliceMembershipSerializer(serializers.HyperlinkedModelSerializer):
74     id = serializers.Field()
75     slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
76     user = serializers.HyperlinkedRelatedField(view_name='user-detail')
77     role = serializers.HyperlinkedRelatedField(view_name='role-detail')
78     class Meta:
79         model = SitePrivilege
80         fields = ('id',
81                   'user',
82                   'slice',
83                   'role')
84
85 class SiteSerializer(serializers.HyperlinkedModelSerializer):
86
87     #Experimenting with whether to use ids, hyperlinks, or nested includes
88     #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
89     #slices = serializers.RelatedField(many=True, read_only=True)
90     #slices = SliceSerializer(many=True)
91     # HyperlinkedModelSerializer doesn't include the id by default
92     id = serializers.Field()
93     slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
94
95     class Meta:
96         model = Site
97         fields = ('id',
98                   'url',
99                   'name',
100                   'slices',
101                   'site_url',
102                   'enabled',
103                   'longitude',
104                   'latitude',
105                   'login_base',
106                   'tenant_id',
107                   'is_public',
108                   'abbreviated_name',
109                   'updated',
110                   'created')
111
112 class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer):
113     id = serializers.Field()
114     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
115     user = serializers.HyperlinkedRelatedField(view_name='user-detail')
116     role = serializers.HyperlinkedRelatedField(view_name='role-detail')
117     class Meta:
118         model = SitePrivilege
119         fields = ('id',
120                   'user',
121                   'site',
122                   'role')
123
124 class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
125
126     # HyperlinkedModelSerializer doesn't include the id by default
127     id = serializers.Field()
128     sites = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
129     class Meta:
130         model = DeploymentNetwork
131         fields = ('id',
132                   'name',
133                   'sites'
134                  )
135
136 class SliverSerializer(serializers.HyperlinkedModelSerializer):
137     # HyperlinkedModelSerializer doesn't include the id by default
138     id = serializers.Field()
139     image = serializers.HyperlinkedRelatedField(view_name='image-detail')
140     key = serializers.HyperlinkedRelatedField(view_name='key-detail')
141     slice = serializers.HyperlinkedRelatedField(view_name='slice-detail')
142     deployment_network = serializers.HyperlinkedRelatedField(view_name='deployment_network-detail')
143     node = serializers.HyperlinkedRelatedField(view_name='node-detail')
144     
145     
146     #slice = serializers.PrimaryKeyRelatedField(read_only=True)
147
148     class Meta:
149         model = Sliver
150         fields = ('id',
151                   'instance_id',
152                   'name',
153                   'instance_name',
154                   'ip',
155                   'image',
156                   'key',
157                   'slice',
158                   'deploymentNetwork',
159                   'node')
160
161 class NodeSerializer(serializers.HyperlinkedModelSerializer):
162     # HyperlinkedModelSerializer doesn't include the id by default
163     id = serializers.Field()
164     class Meta:
165         model = Node
166         fields = ('id',
167                  'name')
168
169 class ImageSerializer(serializers.HyperlinkedModelSerializer):
170     # HyperlinkedModelSerializer doesn't include the id by default
171     id = serializers.Field()
172     class Meta:
173         model = Image
174         fields = ('id',
175                   'image_id',
176                   'name',
177                   'disk_format',
178                   'container_format')
179
180 serializerLookUp = { 
181                  Role: RoleSerializer,
182                  PLUser: UserSerializer,
183                  Key: KeySerializer,
184                  Site: SiteSerializer,
185                  SitePrivilege: SitePrivilegeSerializer,
186                  Slice: SliceSerializer,
187                  SliceMembership: SliceMembershipSerializer,
188                  Subnet: SubnetSerializer,
189                  Node: NodeSerializer,
190                  Sliver: SliverSerializer,
191                  DeploymentNetwork: DeploymentNetworkSerializer,
192                  Image: ImageSerializer,
193                  None: None,
194                 }
195