use id as url pk
[plstackapi.git] / plstackapi / planetstack / serializers.py
1 from django.forms import widgets
2 from rest_framework import serializers
3 from plstackapi.planetstack.models import *
4
5
6 class RoleSerializer(serializers.HyperlinkedModelSerializer):
7     
8     class Meta:
9         model = Role
10         fields = ('id', 
11                   'role_id',
12                   'role_type')
13
14 class SliceSerializer(serializers.HyperlinkedModelSerializer):
15
16     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
17
18     class Meta:
19         model = Slice
20         fields = ('id',
21                   'url',
22                   'name',
23                   'instantiation',
24                   'omf_friendly',
25                   'description',
26                   'slice_url',
27                   'site',
28                   'updated',
29                   'created')
30
31 class SiteSerializer(serializers.HyperlinkedModelSerializer):
32
33     #Experimenting with whether to use ids, hyperlinks, or nested includes
34     #slices = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
35     #slices = serializers.RelatedField(many=True, read_only=True)
36     #slices = SliceSerializer(many=True)
37     slices = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='slice-detail')
38     deployment_networks = serializers.HyperlinkedRelatedField(many=True, read_only=True,view_name='sitedeploymentnetwork-detail')
39
40     class Meta:
41         model = Site
42         fields = ('id',
43                   'url',
44                   'name',
45                   'deployment_networks',
46                   'slices',
47                   'site_url',
48                   'enabled',
49                   'longitude',
50                   'latitude',
51                   'login_base',
52                   'tenant_id',
53                   'is_public',
54                   'abbreviated_name',
55                   'updated',
56                   'created')
57
58 class DeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
59
60     sites = serializers.HyperlinkedRelatedField(view_name='sitedeploymentnetwork-detail')
61     class Meta:
62         model = DeploymentNetwork
63         fields = ('id',
64                   'name',
65                   'sites'
66                  )
67
68 class SiteDeploymentNetworkSerializer(serializers.HyperlinkedModelSerializer):
69
70     site = serializers.HyperlinkedRelatedField(view_name='site-detail')
71     deploymentNetwork = serializers.HyperlinkedRelatedField(view_name='deploymentnetwork-detail')
72
73     class Meta:
74         model = SiteDeploymentNetwork
75         fields = ('url',
76                  'site',
77                  'deploymentNetwork')
78
79 class SliverSerializer(serializers.ModelSerializer):
80     slice = serializers.RelatedField(read_only=True)
81     #slice = serializers.PrimaryKeyRelatedField(read_only=True)
82
83     class Meta:
84         model = Sliver
85         fields = ('id',
86                   'slice',
87                   'name')
88
89 class NodeSerializer(serializers.ModelSerializer):
90
91     class Meta:
92         model = Node
93         fields = ('id',
94                  'name')
95
96 class ImageSerializer(serializers.ModelSerializer):
97
98     class Meta:
99         model = Image
100         fields = ('id',
101                   'image_id',
102                   'name',
103                   'disk_format',
104                   'container_format')
105
106 class FlavorSerializer(serializers.ModelSerializer):
107
108     class Meta:
109         model = Flavor
110         fields = ('id',
111                   'flavor_id',
112                   'name',
113                   'memory_mb',
114                   'disk_gb',
115                   'vcpus')
116
117 serializerLookUp = { 
118                  Role: RoleSerializer,
119                  Site: SiteSerializer,
120                  Slice: SliceSerializer,
121                  Node: NodeSerializer,
122                  Sliver: SliverSerializer,
123                  DeploymentNetwork: DeploymentNetworkSerializer,
124                  SiteDeploymentNetwork: SiteDeploymentNetworkSerializer,
125                  Image: ImageSerializer,
126                  Flavor: FlavorSerializer, 
127                  None: None,
128                 }
129