def test_extract_attributes(): fields = { 'id': serializers.Field(), 'username': serializers.Field(), 'deleted': serializers.ReadOnlyField(), } resource = {'id': 1, 'deleted': None, 'username': '******'} expected = { 'username': '******', 'deleted': None } assert sorted(JSONRenderer.extract_attributes(fields, resource)) == sorted(expected), 'Regular fields should be extracted' assert sorted(JSONRenderer.extract_attributes(fields, {})) == sorted( {'username': ''}), 'Should not extract read_only fields on empty serializer'
def test_extract_attributes(): fields = { 'id': serializers.Field(), 'username': serializers.Field(), 'deleted': serializers.ReadOnlyField(), } resource = {'id': 1, 'deleted': None, 'username': '******'} expected = {'username': '******', 'deleted': None} assert sorted(JSONRenderer.extract_attributes( fields, resource)) == sorted(expected), 'Regular fields should be extracted' assert sorted(JSONRenderer.extract_attributes(fields, {})) == sorted( {'username': ''}), 'Should not extract read_only fields on empty serializer'
def test_extract_attributes(): fields = { "id": serializers.Field(), "username": serializers.Field(), "deleted": serializers.ReadOnlyField(), } resource = {"id": 1, "deleted": None, "username": "******"} expected = {"username": "******", "deleted": None} assert sorted(JSONRenderer.extract_attributes( fields, resource)) == sorted(expected), "Regular fields should be extracted" assert sorted(JSONRenderer.extract_attributes(fields, {})) == sorted( {"username": ""}), "Should not extract read_only fields on empty serializer"
def build_json_resource_obj(fields, resource, resource_instance, resource_name): resource_data = [ ('type', resource_name), ('id', encoding.force_text(resource_instance.pk) if resource_instance else None), ('attributes', JSONRenderer.extract_attributes(fields, resource)), ] # Use CustomJSONRenderer.extract_relationships, which removes embedded data relationships = CustomJSONRenderer.extract_relationships( fields, resource, resource_instance) if relationships: resource_data.append(('relationships', relationships)) # Add 'self' link if field is present and valid if api_settings.URL_FIELD_NAME in resource and \ isinstance(fields[api_settings.URL_FIELD_NAME], relations.RelatedField): resource_data.append(('links', { 'self': resource[api_settings.URL_FIELD_NAME] })) return OrderedDict(resource_data)