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