From be42fba412dba18792e3c3b1ba3f1f2e04f8ef31 Mon Sep 17 00:00:00 2001 From: Sapan Bhatia Date: Tue, 28 Jan 2014 23:53:49 -0500 Subject: [PATCH] Bug fixes involving field names. --- planetstack/apigen/api.template.py | 2 +- planetstack/apigen/modelgen | 28 +++- planetstack/apigen/simple.template.txt | 3 +- planetstack/genapi.py | 178 +++++++++++++++++++++++-- 4 files changed, 191 insertions(+), 20 deletions(-) diff --git a/planetstack/apigen/api.template.py b/planetstack/apigen/api.template.py index 5c5c914..c3e76e1 100644 --- a/planetstack/apigen/api.template.py +++ b/planetstack/apigen/api.template.py @@ -44,7 +44,7 @@ class {{ object.camel }}Serializer(serializers.HyperlinkedModelSerializer): {% endfor %} class Meta: model = {{ object.camel }} - fields = ({% for prop in object.props %}'{{ prop }}',{% endfor %}{% for ref in object.refs %}'{{ ref }}',{% endfor %}) + fields = ({% for prop in object.props %}'{{ prop }}',{% endfor %}{% for ref in object.refs %}{%if ref.multi %}'{{ ref.plural }}'{% else %}'{{ ref }}'{% endif %},{% endfor %}) {% endfor %} serializerLookUp = { diff --git a/planetstack/apigen/modelgen b/planetstack/apigen/modelgen index db9ae84..e75467e 100755 --- a/planetstack/apigen/modelgen +++ b/planetstack/apigen/modelgen @@ -43,13 +43,17 @@ class GenObj(object): self.model = m self.props = [] self.refs = [] + self.plural_name = None def plural(self): - name = str(self) - if (name.endswith('s')): - return name+'es' + if (self.plural_name): + return self.plural_name else: - return name+'s' + name = str(self) + if (name.endswith('s')): + return name+'es' + else: + return name+'s' def camel(self): name = str(self.model.__name__) @@ -70,13 +74,19 @@ class Generator(dict): def compute_links(self): for obj in self.values(): - #if (str(obj).lower()=='user'): + #if (str(obj)=='siteprivilege'): # pdb.set_trace() fields = obj.model._meta.fields for f in fields: if type(f)==ForeignKey and f.name in self.keys(): refobj = self[f.name] obj.refs.append(refobj) + related_name = f.related_query_name() + if (related_name.lower()!=str(obj).lower()): + cobj = copy.deepcopy(obj) + cobj.multi = True + cobj.plural_name = related_name + refobj.refs.append(cobj) else: obj.props.append(f.name) m2m = obj.model._meta.many_to_many @@ -92,6 +102,14 @@ class Generator(dict): cobj = copy.deepcopy(obj) cobj.multi=True refobj.refs.append(cobj) + + if (related_name.lower()!=str(obj).lower()): + cobj = copy.deepcopy(obj) + cobj.multi = True + cobj.plural_name = related_name + refobj.refs.append(obj) + + def main(): diff --git a/planetstack/apigen/simple.template.txt b/planetstack/apigen/simple.template.txt index 109927e..fb00670 100644 --- a/planetstack/apigen/simple.template.txt +++ b/planetstack/apigen/simple.template.txt @@ -1,7 +1,8 @@ {% for object in generator.all %} Object {{ object }}: Refs: -{% for ref in object.refs %}{{ ref }}{% endfor %} +{% for ref in object.refs %} +{{ ref }}{% endfor %} Props: {% for prop in object.props %}{{ prop }} {% endfor %} diff --git a/planetstack/genapi.py b/planetstack/genapi.py index 2542324..bc2967f 100644 --- a/planetstack/genapi.py +++ b/planetstack/genapi.py @@ -86,9 +86,13 @@ class ServiceAttributeSerializer(serializers.HyperlinkedModelSerializer): class ImageSerializer(serializers.HyperlinkedModelSerializer): id = serializers.Field() + + slivers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliver-detail') + + class Meta: model = Image - fields = ('id','created','updated','enacted','image_id','name','disk_format','container_format',) + fields = ('id','created','updated','enacted','image_id','name','disk_format','container_format','slivers',) class NetworkParameterSerializer(serializers.HyperlinkedModelSerializer): @@ -102,9 +106,29 @@ class NetworkParameterSerializer(serializers.HyperlinkedModelSerializer): class SiteSerializer(serializers.HyperlinkedModelSerializer): id = serializers.Field() + + slices = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail') + + + + nodes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='node-detail') + + + + users = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='user-detail') + + + + site_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='siteprivilege-detail') + + + + accounts = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='account-detail') + + class Meta: model = Site - fields = ('id','created','updated','enacted','tenant_id','name','site_url','enabled','location','longitude','latitude','login_base','is_public','abbreviated_name',) + fields = ('id','created','updated','enacted','tenant_id','name','site_url','enabled','location','longitude','latitude','login_base','is_public','abbreviated_name','slices','nodes','users','site_privileges','accounts',) class SliceRoleSerializer(serializers.HyperlinkedModelSerializer): @@ -123,6 +147,10 @@ class TagSerializer(serializers.HyperlinkedModelSerializer): + site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail') + + + service = serializers.HyperlinkedRelatedField(read_only=True, view_name='service-detail') @@ -131,16 +159,28 @@ class TagSerializer(serializers.HyperlinkedModelSerializer): + slice = serializers.HyperlinkedRelatedField(read_only=True, view_name='slice-detail') + + + slivers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliver-detail') + sliver = serializers.HyperlinkedRelatedField(read_only=True, view_name='sliver-detail') + + + nodes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='node-detail') + + node = serializers.HyperlinkedRelatedField(read_only=True, view_name='node-detail') + + class Meta: model = Tag - fields = ('id','created','updated','enacted','name','value','content_type','object_id','site','service','slice','sliver','node',) + fields = ('id','created','updated','enacted','name','value','content_type','object_id','sites','site','service','slices','slice','slivers','sliver','nodes','node',) class InvoiceSerializer(serializers.HyperlinkedModelSerializer): @@ -150,9 +190,13 @@ class InvoiceSerializer(serializers.HyperlinkedModelSerializer): account = serializers.HyperlinkedRelatedField(read_only=True, view_name='account-detail') + + charges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='charge-detail') + + class Meta: model = Invoice - fields = ('id','created','updated','enacted','date','account',) + fields = ('id','created','updated','enacted','date','account','charges',) class PlanetStackRoleSerializer(serializers.HyperlinkedModelSerializer): @@ -203,6 +247,10 @@ class SliceSerializer(serializers.HyperlinkedModelSerializer): id = serializers.Field() + slice_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliceprivilege-detail') + + + site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail') @@ -215,12 +263,36 @@ class SliceSerializer(serializers.HyperlinkedModelSerializer): + network = serializers.HyperlinkedRelatedField(read_only=True, view_name='network-detail') + + + networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail') + + network = serializers.HyperlinkedRelatedField(read_only=True, view_name='network-detail') + + + + charges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='charge-detail') + + + + slivers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliver-detail') + + + + reservations = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='reservation-detail') + + + + slicetags = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slicetag-detail') + + class Meta: model = Slice - fields = ('id','created','updated','enacted','tenant_id','name','enabled','omf_friendly','description','slice_url','network_id','router_id','subnet_id','serviceClass','creator','site','service','network','network',) + fields = ('id','created','updated','enacted','tenant_id','name','enabled','omf_friendly','description','slice_url','network_id','router_id','subnet_id','serviceClass','creator','slice_privileges','site','service','networks','network','networks','network','charges','slivers','reservations','slicetags',) class NetworkSerializer(serializers.HyperlinkedModelSerializer): @@ -231,20 +303,40 @@ class NetworkSerializer(serializers.HyperlinkedModelSerializer): + router = serializers.HyperlinkedRelatedField(read_only=True, view_name='router-detail') + + + routers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='router-detail') + + router = serializers.HyperlinkedRelatedField(read_only=True, view_name='router-detail') + + class Meta: model = Network - fields = ('id','created','updated','enacted','name','template','subnet','ports','labels','owner','guaranteedBandwidth','permitAllSlices','network_id','router_id','subnet_id','router','router',) + fields = ('id','created','updated','enacted','name','template','subnet','ports','labels','owner','guaranteedBandwidth','permitAllSlices','network_id','router_id','subnet_id','routers','router','routers','router',) class ServiceSerializer(serializers.HyperlinkedModelSerializer): id = serializers.Field() + + serviceattributes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='serviceattribute-detail') + + + + tags = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='tag-detail') + + + + service = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail') + + class Meta: model = Service - fields = ('id','created','updated','enacted','description','enabled','name','versionNumber','published',) + fields = ('id','created','updated','enacted','description','enabled','name','versionNumber','published','serviceattributes','tags','service',) class ServiceClassSerializer(serializers.HyperlinkedModelSerializer): @@ -307,6 +399,14 @@ class SliverSerializer(serializers.HyperlinkedModelSerializer): + network = serializers.HyperlinkedRelatedField(read_only=True, view_name='network-detail') + + + + serviceclass = serializers.HyperlinkedRelatedField(read_only=True, view_name='serviceclass-detail') + + + image = serializers.HyperlinkedRelatedField(read_only=True, view_name='image-detail') @@ -318,15 +418,23 @@ class SliverSerializer(serializers.HyperlinkedModelSerializer): node = serializers.HyperlinkedRelatedField(read_only=True, view_name='node-detail') + + reservedResourrces = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='reservedresource-detail') + + class Meta: model = Sliver - fields = ('id','created','updated','enacted','instance_id','name','instance_name','ip','creator','deploymentNetwork','numberCores','network','image','slice','node',) + fields = ('id','created','updated','enacted','instance_id','name','instance_name','ip','creator','deploymentNetwork','numberCores','networks','network','serviceclass','image','slice','node','reservedResourrces',) class NodeSerializer(serializers.HyperlinkedModelSerializer): id = serializers.Field() + slivers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliver-detail') + + + site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail') @@ -336,7 +444,7 @@ class NodeSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Node - fields = ('id','created','updated','enacted','name','site','deployment',) + fields = ('id','created','updated','enacted','name','slivers','site','deployment',) class ReservedResourceSerializer(serializers.HyperlinkedModelSerializer): @@ -403,12 +511,28 @@ class UserSerializer(serializers.HyperlinkedModelSerializer): id = serializers.Field() + slice_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliceprivilege-detail') + + + + planetstack_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='planetstackprivilege-detail') + + + site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail') + + site_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='siteprivilege-detail') + + + + deployment_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='deploymentprivilege-detail') + + class Meta: model = User - fields = ('id','password','last_login','email','username','kuser_id','firstname','lastname','phone','user_url','public_key','is_active','is_admin','is_staff','is_readonly','created','updated','enacted','timezone','site',) + fields = ('id','password','last_login','email','username','kuser_id','firstname','lastname','phone','user_url','public_key','is_active','is_admin','is_staff','is_readonly','created','updated','enacted','timezone','slice_privileges','planetstack_privileges','site','site_privileges','deployment_privileges',) class DeploymentSerializer(serializers.HyperlinkedModelSerializer): @@ -418,9 +542,21 @@ class DeploymentSerializer(serializers.HyperlinkedModelSerializer): sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail') + + site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail') + + + + nodes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='node-detail') + + + + deployment_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='deploymentprivilege-detail') + + class Meta: model = Deployment - fields = ('id','created','updated','enacted','name','site',) + fields = ('id','created','updated','enacted','name','sites','site','nodes','deployment_privileges',) class ReservationSerializer(serializers.HyperlinkedModelSerializer): @@ -458,21 +594,37 @@ class SitePrivilegeSerializer(serializers.HyperlinkedModelSerializer): class PlanetStackSerializer(serializers.HyperlinkedModelSerializer): id = serializers.Field() + + planetstack_privileges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='planetstackprivilege-detail') + + class Meta: model = PlanetStack - fields = ('id','created','updated','enacted','description',) + fields = ('id','created','updated','enacted','description','planetstack_privileges',) class AccountSerializer(serializers.HyperlinkedModelSerializer): id = serializers.Field() + invoices = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='invoice-detail') + + + + charges = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='charge-detail') + + + + payments = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='payment-detail') + + + site = serializers.HyperlinkedRelatedField(read_only=True, view_name='site-detail') class Meta: model = Account - fields = ('id','created','updated','enacted','site',) + fields = ('id','created','updated','enacted','invoices','charges','payments','site',) class NetworkParameterTypeSerializer(serializers.HyperlinkedModelSerializer): -- 2.43.0