cubicweb/entity.py
changeset 12880 59d4ad7e7df3
parent 12567 26744ad37953
child 12882 3ddd03309315
--- 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