rtags.py
branchtls-sprint
changeset 1769 fb91d2b8a441
parent 1752 4b0b912ff5b7
child 1849 1901fa97f521
--- a/rtags.py	Wed May 13 08:41:23 2009 +0200
+++ b/rtags.py	Wed May 13 09:09:22 2009 +0200
@@ -30,7 +30,7 @@
             self._allowed_values = allowed_values
         self._initfunc = initfunc
         register_rtag(self)
-        
+
     def __repr__(self):
         return repr(self._tagdefs)
 
@@ -52,14 +52,16 @@
                 keys.remove((rtype, tagged, stype, '*'))
         return keys
 
-    def init(self, schema):
+    def init(self, schema, check=True):
         # XXX check existing keys against schema
-        for (rtype, tagged, stype, otype), value in self._tagdefs.items():
-            for ertype in (stype, rtype, otype):
-                if ertype != '*' and not ertype in schema:
-                    self.warning('removing rtag %s: %s, %s undefined in schema',
-                                 (stype, rtype, otype, tagged), value, ertype)
-                    self.del_rtag(stype, rtype, otype, tagged)
+        if check:
+            for (rtype, tagged, stype, otype), value in self._tagdefs.items():
+                for ertype in (stype, rtype, otype):
+                    if ertype != '*' and not ertype in schema:
+                        self.warning('removing rtag %s: %s, %s undefined in schema',
+                                     (stype, rtype, otype, tagged), value, ertype)
+                        self.del_rtag(stype, rtype, otype, tagged)
+                        break
         if self._initfunc is not None:
             for eschema in schema.entities():
                 for rschema, tschemas, role in eschema.relation_definitions(True):