Example #1
0
    def render(self, data, accepted_media_type=None, renderer_context=None):
        view = renderer_context.get('view')
        resource_name = get_resource_name(view)

        if resource_name == False:
            return super(JSONRenderer, self).render(
                data, accepted_media_type, renderer_context)

        data = format_keys(data, 'camelize')

        try:
            content = data.pop('results')
            resource_name = format_resource_name(content, resource_name)
            data = {resource_name : content, "meta" : data}
        except (TypeError, KeyError, AttributeError) as e:

            # Default behavior
            if not resource_name == 'data':
                format_keys(data, 'camelize')
                resource_name = format_resource_name(data, resource_name)

            data = {resource_name : data}

        return super(JSONRenderer, self).render(
            data, accepted_media_type, renderer_context)
    def render(self, data, accepted_media_type=None, renderer_context=None):
        view = renderer_context.get('view')
        resource_name = get_resource_name(view)

        if isinstance(data, dict):
            for key, value in data.items():
                data[inflection.camelize(key, False)] = data.pop(key)

        elif isinstance(data, (list, tuple)):
            for obj in data:
                if hasattr(obj, 'items'):
                    for key, value in obj.items():
                        obj[inflection.camelize(key, False)] = obj.pop(key)
            resource_name = inflection.pluralize(resource_name)

        if resource_name == False:
            return super(JSONRenderer, self).render(
                data, accepted_media_type, renderer_context)

        try:
            data_copy = copy.copy(data)
            content = data_copy.pop('results')
            data = {resource_name : content, "meta" : data_copy}
        except (TypeError, KeyError, AttributeError) as e:
            data = {resource_name : data}
        return super(JSONRenderer, self).render(
            data, accepted_media_type, renderer_context)
 def parse(self, stream, media_type=None, parser_context=None):
     """
     Parses the incoming bytestream as JSON and returns the resulting data
     """
     result = super(EmberJSONParser, self).parse(stream, media_type=None,
                                                 parser_context=None)
     resource = result.get(get_resource_name(parser_context.get('view', None)))
     return format_keys(resource, 'underscore')
Example #4
0
 def parse(self, stream, media_type=None, parser_context=None):
     """
     Parses the incoming bytestream as JSON and returns the resulting data
     """
     result = super(JSONParser, self).parse(stream, media_type=media_type,
                                            parser_context=parser_context)
     resource = result.get(get_resource_name(parser_context.get('view', None)))
     return format_keys(resource, 'underscore')
    def parse(self, stream, media_type=None, parser_context=None):
        """
        Parses the incoming bytestream as JSON and returns the resulting data
        """
        result = super(EmberJSONParser, self).parse(stream,
                                                    media_type=None,
                                                    parser_context=None)

        resource_name = get_resource_name(parser_context.get('view', None))
        return result.get(resource_name)
Example #6
0
    def parse(self, stream, media_type=None, parser_context=None):
        """
        Parses the incoming bytestream as JSON and returns the resulting data
        """
        result = super(EmberJSONParser, self).parse(stream,
                                                    media_type=None,
                                                    parser_context=None)

        resource_name = get_resource_name(parser_context.get('view', None))
        data = result.get(camelize(resource_name))
        return recursive_key_map(underscore, data)
    def parse(self, stream, media_type=None, parser_context=None):
        """
        Parses the incoming bytestream as JSON and returns the resulting data
        """
        result = super(EmberJSONParser, self).parse(
            stream, media_type=None, parser_context=None)

        resource_name = get_resource_name(parser_context.get('view', None))
        data = result.get(resource_name)
        for item in data:
            data[inflection.underscore(item)] = data.pop(item)
        return data
Example #8
0
    def render(self, data, accepted_media_type=None, renderer_context=None):
        view = renderer_context.get('view')

        resource_name = get_resource_name(view)

        try:
            data_copy = copy.copy(data)
            content = data_copy.pop('results')
            data = {resource_name : content, "meta" : data_copy}
        except (TypeError, KeyError, AttributeError) as e:
            data = {resource_name : data}
        return super(JSONRenderer, self).render(
            data, accepted_media_type, renderer_context)
    def render(self, data, accepted_media_type=None, renderer_context=None):
        view = renderer_context.get('view')

        resource_name = get_resource_name(view)

        if resource_name == False:
            return super(JSONRenderer, self).render(data, accepted_media_type,
                                                    renderer_context)

        try:
            data_copy = copy.copy(data)
            content = data_copy.pop('results')
            data = {resource_name: content, "meta": data_copy}
        except (TypeError, KeyError, AttributeError) as e:
            data = {resource_name: data}
        return super(JSONRenderer, self).render(data, accepted_media_type,
                                                renderer_context)
Example #10
0
    def parse(self, stream, media_type=None, parser_context=None):

        # parse the stream
        result = super(JSONParser, self).parse(
            stream=stream,
            media_type=media_type,
            parser_context=parser_context)

        # get the resource name expected by the view
        resource_name = utils.get_resource_name(
            parser_context.get('view', None))

        # look for that resource name in the parsed result
        for key, value in result.items():
            if key.split('/')[-1] == resource_name:
                resource = result.get(key)
                break
        else:
            resource = None
        
        # underscoralize the resource keys and return
        return utils.format_keys(resource, 'underscore')