equal
deleted
inserted
replaced
103 def register(self, obj, **kwargs): |
103 def register(self, obj, **kwargs): |
104 if kwargs.get('registryname', obj.__registry__) == 'etypes': |
104 if kwargs.get('registryname', obj.__registry__) == 'etypes': |
105 kwargs['clear'] = True |
105 kwargs['clear'] = True |
106 super(CubicWebRegistry, self).register(obj, **kwargs) |
106 super(CubicWebRegistry, self).register(obj, **kwargs) |
107 # XXX bw compat |
107 # XXX bw compat |
108 ifaces = getattr(obj, 'accepts_interfaces', None) |
108 ifaces = use_interfaces(obj) |
109 if ifaces: |
109 if ifaces: |
110 self._needs_iface[obj] = frozenset(ifaces) |
110 self._needs_iface[obj] = frozenset(ifaces) |
111 |
111 |
112 def register_objects(self, path, force_reload=None): |
112 def register_objects(self, path, force_reload=None): |
113 """overriden to remove objects requiring a missing interface""" |
113 """overriden to remove objects requiring a missing interface""" |
120 return |
120 return |
121 # remove vobjects that don't support any available interface |
121 # remove vobjects that don't support any available interface |
122 interfaces = set() |
122 interfaces = set() |
123 for classes in self.get('etypes', {}).values(): |
123 for classes in self.get('etypes', {}).values(): |
124 for cls in classes: |
124 for cls in classes: |
125 interfaces.update(cls.__implements__) |
125 for iface in cls.__implements__: |
|
126 interfaces.update(expand_parent_classes(iface)) |
126 for obj, ifaces in self._needs_iface.items(): |
127 for obj, ifaces in self._needs_iface.items(): |
127 if not ifaces & interfaces: |
128 if not ifaces & interfaces: |
128 self.debug('kicking vobject %s (unsupported interface)', obj) |
129 self.debug('kicking vobject %s (unsupported interface)', obj) |
129 self.unregister(obj) |
130 self.unregister(obj) |
130 |
131 |
|
132 |
|
133 |
131 def eid_rset(self, cursor, eid, etype=None): |
134 def eid_rset(self, cursor, eid, etype=None): |
132 """return a result set for the given eid without doing actual query |
135 """return a result set for the given eid without doing actual query |
133 (we have the eid, we can suppose it exists and user has access to the |
136 (we have the eid, we can suppose it exists and user has access to the |
134 entity) |
137 entity) |
135 """ |
138 """ |