diff -r a64f48dd5fe4 -r 9ab2b4c74baf view.py --- a/view.py Thu May 20 20:47:13 2010 +0200 +++ b/view.py Thu May 20 20:47:55 2010 +0200 @@ -520,3 +520,34 @@ # XXX a generic '%s%s' % (self.__regid__, self.__registry__.capitalize()) would probably be nicer def div_id(self): return '%sComponent' % self.__regid__ + + +class Adapter(AppObject): + """base class for adapters""" + __registry__ = 'adapters' + + +class EntityAdapter(Adapter): + """base class for entity adapters (eg adapt an entity to an interface)""" + def __init__(self, _cw, **kwargs): + try: + self.entity = kwargs.pop('entity') + except KeyError: + self.entity = kwargs['rset'].get_entity(kwargs.get('row') or 0, + kwargs.get('col') or 0) + Adapter.__init__(self, _cw, **kwargs) + + +def implements_adapter_compat(iface): + def _pre39_compat(func): + def decorated(self, *args, **kwargs): + entity = self.entity + if hasattr(entity, func.__name__): + warn('[3.9] %s method is deprecated, define it on a custom ' + '%s for %s instead' % (func.__name__, iface, + entity.__class__), + DeprecationWarning) + return getattr(entity, func.__name__)(*args, **kwargs) + return func(self, *args, **kwargs) + return decorated + return _pre39_compat