diff -r 5c18d82042fb -r 766359c69f2f rtags.py --- a/rtags.py Tue Jan 26 13:27:40 2010 +0100 +++ b/rtags.py Tue Jan 26 13:32:54 2010 +0100 @@ -73,14 +73,17 @@ 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): - for tschema in tschemas: - if role == 'subject': - sschema, oschema = eschema, tschema - else: - sschema, oschema = tschema, eschema - self._initfunc(self, sschema, rschema, oschema, role) + self.apply(schema, self._initfunc) + + def apply(self, schema, func): + for eschema in schema.entities(): + for rschema, tschemas, role in eschema.relation_definitions(True): + for tschema in tschemas: + if role == 'subject': + sschema, oschema = eschema, tschema + else: + sschema, oschema = tschema, eschema + func(self, sschema, rschema, oschema, role) # rtag declaration api ####################################################