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