ztfy/utils/traversing.py
branchZTK-1.1
changeset 88 37c6b51cef8b
parent 15 2c187bbb521f
equal deleted inserted replaced
87:689eef034b00 88:37c6b51cef8b
    35     while parent is not None:
    35     while parent is not None:
    36         if interface.providedBy(parent):
    36         if interface.providedBy(parent):
    37             return interface(parent)
    37             return interface(parent)
    38         parent = getattr(parent, '__parent__', None)
    38         parent = getattr(parent, '__parent__', None)
    39     return None
    39     return None
       
    40 
       
    41 
       
    42 # copied from fanstatic (which copied it from zope.dottedname !)
       
    43 def resolve(name, module=None):
       
    44     name = name.split('.')
       
    45     if not name[0]:
       
    46         if module is None:
       
    47             raise ValueError("relative name without base module")
       
    48         module = module.split('.')
       
    49         name.pop(0)
       
    50         while not name[0]:
       
    51             module.pop()
       
    52             name.pop(0)
       
    53         name = module + name
       
    54 
       
    55     used = name.pop(0)
       
    56     found = __import__(used)
       
    57     for n in name:
       
    58         used += '.' + n
       
    59         try:
       
    60             found = getattr(found, n)
       
    61         except AttributeError:
       
    62             __import__(used)
       
    63             found = getattr(found, n)
       
    64 
       
    65     return found