diff -r 7347715bf0ee -r 59d4ad7e7df3 cubicweb/entity.py --- a/cubicweb/entity.py Sat Feb 15 17:08:15 2020 +0100 +++ b/cubicweb/entity.py Sat Feb 08 22:57:59 2020 +0100 @@ -1314,6 +1314,28 @@ def __set__(self, eobj, value): raise NotImplementedError +# entity adapters ############################################################# + +class Adapter(AppObject): + """base class for adapters""" + __registry__ = 'adapters' + + +class EntityAdapter(Adapter): + """base class for entity adapters (eg adapt an entity to an interface) + + An example would be: + + >>> some_entity.cw_adapt_to('IDownloadable') + """ + 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) + from logging import getLogger from cubicweb import set_log_methods