[entities] Fix backward compat of IDublinCore adapter wrt dc_long_title 3.25
authorSylvain Thénault <sylvain.thenault@logilab.fr>
Thu, 13 Apr 2017 15:04:45 +0200
branch3.25
changeset 12160 608481168432
parent 12159 8a1306c43656
child 12161 dacc5b168e29
[entities] Fix backward compat of IDublinCore adapter wrt dc_long_title `entity.dc_long_title()` used to fallback to `dc_title()`, and most entity types were relying on this, thus only implementing the later. Since introduction of the IDublinCore adapter, if one call `entity.dc_long_title()` on an entity that only implements `dc_title()`, it will retrieve the adapter which will then call its own `title()` method instead of the `dc_title()` method of the entity as expected. Fix this by calling instead `entity.dc_title()` which will eventually kick in the backward compat layer if necessary.
cubicweb/entities/adapters.py
--- a/cubicweb/entities/adapters.py	Thu Apr 13 13:57:32 2017 +0200
+++ b/cubicweb/entities/adapters.py	Thu Apr 13 15:04:45 2017 +0200
@@ -49,7 +49,9 @@
 
     def long_title(self):
         """Return a more detailled title for entity"""
-        return self.title()
+        # go through entity.dc_title for bw compat purpose: if entity define dc_title but not
+        # dc_long_title, we still want it to be considered.
+        return self.entity.dc_title()
 
     def description(self, format='text/plain'):
         """Return a suitable description for entity"""