from django.utils.functional import Promise
from django.utils.translation import force_unicode


def resolve_promise(o):
    if isinstance(o, dict):
        for k, v in o.items():
            o[k] = resolve_promise(v)
    elif isinstance(o, (list, tuple)):
        o = [resolve_promise(x) for x in o]
    elif isinstance(o, Promise):
        try:
            o = force_unicode(o)
        except:
            # Item could be a lazy tuple or list
            try:
                o = [resolve_promise(x) for x in o]
            except:
                raise Exception('Unable to resolve lazy object %s' % o)
    elif callable(o):
            o = o()

    return o

from django.utils.functional import Promise
from django.utils.encoding import force_unicode

def resolve_promise(o):
    if isinstance(o, dict):
        for k, v in o.items():
            o[k] = resolve_promise(v)
    elif isinstance(o, (list, tuple)):
        o = [resolve_promise(x) for x in o]
    elif isinstance(o, Promise):
        try:
            o = force_unicode(o)
        except:
            # Item could be a lazy tuple or list
            try:
                o = [resolve_promise(x) for x in o]
            except:
                raise Exception('Unable to resolve lazy object %s' % o)
    elif callable(o):
            o = o()

    return o

Update import to correct path for Django 1.4->1.6 compatibility
Update import to correct path for Django 1.4->1.6 compatibility

  from django.utils.functional import Promise
- from django.utils.translation import force_unicode
+ from django.utils.encoding import force_unicode
- 
  
  def resolve_promise(o):
      if isinstance(o, dict):
          for k, v in o.items():
              o[k] = resolve_promise(v)
      elif isinstance(o, (list, tuple)):
          o = [resolve_promise(x) for x in o]
      elif isinstance(o, Promise):
          try:
              o = force_unicode(o)
          except:
              # Item could be a lazy tuple or list
              try:
                  o = [resolve_promise(x) for x in o]
              except:
                  raise Exception('Unable to resolve lazy object %s' % o)
      elif callable(o):
              o = o()
  
      return o
  
Update import to correct path for Django 1.4->1.6 compatibility
## Code Before:
from django.utils.functional import Promise
from django.utils.translation import force_unicode


def resolve_promise(o):
    if isinstance(o, dict):
        for k, v in o.items():
            o[k] = resolve_promise(v)
    elif isinstance(o, (list, tuple)):
        o = [resolve_promise(x) for x in o]
    elif isinstance(o, Promise):
        try:
            o = force_unicode(o)
        except:
            # Item could be a lazy tuple or list
            try:
                o = [resolve_promise(x) for x in o]
            except:
                raise Exception('Unable to resolve lazy object %s' % o)
    elif callable(o):
            o = o()

    return o

## Instruction:
Update import to correct path for Django 1.4->1.6 compatibility
## Code After:
from django.utils.functional import Promise
from django.utils.encoding import force_unicode

def resolve_promise(o):
    if isinstance(o, dict):
        for k, v in o.items():
            o[k] = resolve_promise(v)
    elif isinstance(o, (list, tuple)):
        o = [resolve_promise(x) for x in o]
    elif isinstance(o, Promise):
        try:
            o = force_unicode(o)
        except:
            # Item could be a lazy tuple or list
            try:
                o = [resolve_promise(x) for x in o]
            except:
                raise Exception('Unable to resolve lazy object %s' % o)
    elif callable(o):
            o = o()

    return o
