cubicweb/rtags.py
changeset 11885 e93a01a69035
parent 11870 3a84a79c4ed5
child 11886 c5c041ba35b8
equal deleted inserted replaced
11884:6186cd15a46d 11885:e93a01a69035
    98     def init(self, schema, check=True):
    98     def init(self, schema, check=True):
    99         # XXX check existing keys against schema
    99         # XXX check existing keys against schema
   100         if check:
   100         if check:
   101             for (stype, rtype, otype, tagged), value in list(self._tagdefs.items()):
   101             for (stype, rtype, otype, tagged), value in list(self._tagdefs.items()):
   102                 for ertype in (stype, rtype, otype):
   102                 for ertype in (stype, rtype, otype):
   103                     if ertype != '*' and not ertype in schema:
   103                     if ertype != '*' and ertype not in schema:
   104                         self.warning('removing rtag %s: %s, %s undefined in schema',
   104                         self.warning('removing rtag %s: %s, %s undefined in schema',
   105                                      (stype, rtype, otype, tagged), value, ertype)
   105                                      (stype, rtype, otype, tagged), value, ertype)
   106                         self.del_rtag(stype, rtype, otype, tagged)
   106                         self.del_rtag(stype, rtype, otype, tagged)
   107                         break
   107                         break
   108         if self._init is not None:
   108         if self._init is not None:
   140 
   140 
   141     def tag_relation(self, key, tag):
   141     def tag_relation(self, key, tag):
   142         assert len(key) == 4, 'bad key: %s' % list(key)
   142         assert len(key) == 4, 'bad key: %s' % list(key)
   143         if self._allowed_values is not None:
   143         if self._allowed_values is not None:
   144             assert tag in self._allowed_values, \
   144             assert tag in self._allowed_values, \
   145                    '%r is not an allowed tag (should be in %s)' % (
   145                 '%r is not an allowed tag (should be in %s)' % (
   146                 tag, self._allowed_values)
   146                     tag, self._allowed_values)
   147         self._tagdefs[_ensure_str_key(key)] = tag
   147         self._tagdefs[_ensure_str_key(key)] = tag
   148         return tag
   148         return tag
   149 
   149 
   150     def _tag_etype_attr(self, etype, attr, desttype='*', *args, **kwargs):
   150     def _tag_etype_attr(self, etype, attr, desttype='*', *args, **kwargs):
   151         if isinstance(attr, string_types):
   151         if isinstance(attr, string_types):
   155         if role == 'subject':
   155         if role == 'subject':
   156             self.tag_subject_of((etype, attr, desttype), *args, **kwargs)
   156             self.tag_subject_of((etype, attr, desttype), *args, **kwargs)
   157         else:
   157         else:
   158             self.tag_object_of((desttype, attr, etype), *args, **kwargs)
   158             self.tag_object_of((desttype, attr, etype), *args, **kwargs)
   159 
   159 
   160 
       
   161     # rtag runtime api ########################################################
   160     # rtag runtime api ########################################################
   162 
   161 
   163     def del_rtag(self, *key):
   162     def del_rtag(self, *key):
   164         del self._tagdefs[key]
   163         del self._tagdefs[key]
   165 
   164 
   176             return self.get(etype, rtype, ttype, role)
   175             return self.get(etype, rtype, ttype, role)
   177         return self.get(ttype, rtype, etype, role)
   176         return self.get(ttype, rtype, etype, role)
   178 
   177 
   179     # these are overridden by set_log_methods below
   178     # these are overridden by set_log_methods below
   180     # only defining here to prevent pylint from complaining
   179     # only defining here to prevent pylint from complaining
   181     info = warning = error = critical = exception = debug = lambda msg,*a,**kw: None
   180     info = warning = error = critical = exception = debug = lambda msg, *a, **kw: None
   182 
   181 
   183 
   182 
   184 class RelationTagsSet(RelationTags):
   183 class RelationTagsSet(RelationTags):
   185     """This class associates a set of tags to each key.
   184     """This class associates a set of tags to each key.
   186     """
   185     """