def get_callback_function(setting_name, default=None):
	"""
	Resolve a callback function based on a setting name.

	If the setting value isn't set, default is returned.  If the setting value
	is already a callable function, that value is used - If the setting value
	is a string, an attempt is made to import it.  Anything else will result in
	a failed import causing ImportError to be raised.

	:param setting_name: The name of the setting to resolve a callback from.
	:type setting_name: string (``str``/``unicode``)
	:param default: The default to return if setting isn't populated.
	:type default: ``bool``
	:returns: The resolved callback function (if any).
	:type: ``callable``
	"""
	func = getattr(settings, setting_name, None)
	if not func:
		return default

	if callable(func):
		return func

	if isinstance(func, str):
		func = import_string(func)

	if not callable(func):
		raise ImproperlyConfigured("{name} must be callable.".format(name=setting_name))

	return func