From 9a27092424dc11c9b4ddd93fd9a0b261946e7426 Mon Sep 17 00:00:00 2001 From: Scott Baker Date: Thu, 3 Jul 2014 18:01:30 -0700 Subject: [PATCH] add no_hyperlinks option to REST api framework --- planetstack/apigen/api.template.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/planetstack/apigen/api.template.py b/planetstack/apigen/api.template.py index 6638808..ef9884c 100644 --- a/planetstack/apigen/api.template.py +++ b/planetstack/apigen/api.template.py @@ -45,6 +45,21 @@ class {{ object.camel }}Serializer(serializers.HyperlinkedModelSerializer): class Meta: model = {{ object.camel }} fields = ({% for prop in object.props %}'{{ prop }}',{% endfor %}{% for ref in object.refs %}{%if ref.multi %}'{{ ref.plural }}'{% else %}'{{ ref }}'{% endif %},{% endfor %}) + +class {{ object.camel }}IdSerializer(serializers.ModelSerializer): + id = serializers.Field() + {% for ref in object.refs %} + {% if ref.multi %} + {{ ref.plural }} = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='{{ ref }}-detail') + {% else %} + {{ ref }} = serializers.HyperlinkedRelatedField(read_only=True, view_name='{{ ref }}-detail') + {% endif %} + {% endfor %} + class Meta: + model = {{ object.camel }} + fields = ({% for prop in object.props %}'{{ prop }}',{% endfor %}{% for ref in object.refs %}{%if ref.multi %}'{{ ref.plural }}'{% else %}'{{ ref }}'{% endif %},{% endfor %}) + + {% endfor %} serializerLookUp = { @@ -60,6 +75,15 @@ serializerLookUp = { class {{ object.camel }}List(generics.ListCreateAPIView): queryset = {{ object.camel }}.objects.select_related().all() serializer_class = {{ object.camel }}Serializer + id_serializer_class = {{ object.camel }}IdSerializer + + def get_serializer_class(self): + no_hyperlinks = self.request.QUERY_PARAMS.get('no_hyperlinks', False) + if (no_hyperlinks): + return self.id_serializer_class + else: + return self.serializer_class + def get_queryset(self): return {{ object.camel }}.select_by_user(self.request.user) -- 2.47.0