# HG changeset patch
# User Aurelien Campeas <aurelien.campeas@logilab.fr>
# Date 1246470407 -7200
# Node ID 81130047390deabcf280a0054ca947f80b4e5188
# Parent  d9b85a7b0bdddce517268ec4fb018c3122db5381
[schema] fix Entity.add_relation(RichString(...)...)

diff -r d9b85a7b0bdd -r 81130047390d schema.py
--- a/schema.py	Wed Jul 01 16:44:37 2009 +0200
+++ b/schema.py	Wed Jul 01 19:46:47 2009 +0200
@@ -109,6 +109,16 @@
         yams_add_relation(relations, format_attrdef, name+'_format', insertidx)
     yams_add_relation(relations, rdef, name, insertidx)
 
+
+yams_EntityType_add_relation = ybo.EntityType.add_relation
+@monkeypatch(ybo.EntityType)
+def add_relation(self, rdef, name=None):
+    yams_EntityType_add_relation(self, rdef, name)
+    if isinstance(rdef, RichString) and not rdef in self._defined:
+        format_attr_name = (name or rdef.name) + '_format'
+        rdef = self.get_relations(format_attr_name).next()
+        self._ensure_relation_type(rdef)
+
 def display_name(req, key, form=''):
     """return a internationalized string for the key (schema entity or relation
     name) in a given form