get_component should work with custom mapping types

This commit is contained in:
Samuel Sutch 2014-07-08 10:19:10 -06:00
parent b519018125
commit 4762455af3
2 changed files with 8 additions and 2 deletions

View File

@ -79,6 +79,12 @@ except ImportError:
from collections import UserDict from collections import UserDict
from collections import MutableMapping as DictMixin from collections import MutableMapping as DictMixin
# Mapping is new in python 2.6
try:
from collections import Mapping
except ImportError:
Mapping = dict
# Try to import PIL in either of the two ways it can end up installed. # Try to import PIL in either of the two ways it can end up installed.
try: try:
from PIL import Image from PIL import Image

View File

@ -24,7 +24,7 @@ from django.utils.datastructures import SortedDict
from rest_framework import ISO_8601 from rest_framework import ISO_8601
from rest_framework.compat import ( from rest_framework.compat import (
timezone, parse_date, parse_datetime, parse_time, BytesIO, six, smart_text, timezone, parse_date, parse_datetime, parse_time, BytesIO, six, smart_text,
force_text, is_non_str_iterable force_text, is_non_str_iterable, Mapping
) )
from rest_framework.settings import api_settings from rest_framework.settings import api_settings
@ -50,7 +50,7 @@ def get_component(obj, attr_name):
Given an object, and an attribute name, Given an object, and an attribute name,
return that attribute on the object. return that attribute on the object.
""" """
if isinstance(obj, dict): if isinstance(obj, Mapping):
val = obj.get(attr_name) val = obj.get(attr_name)
else: else:
val = getattr(obj, attr_name) val = getattr(obj, attr_name)