--- 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