equal
deleted
inserted
replaced
125 self.etype_class(eschema) |
125 self.etype_class(eschema) |
126 |
126 |
127 def register(self, obj, **kwargs): |
127 def register(self, obj, **kwargs): |
128 obj = related_appobject(obj) |
128 obj = related_appobject(obj) |
129 oid = kwargs.get('oid') or obj.__regid__ |
129 oid = kwargs.get('oid') or obj.__regid__ |
130 if oid != 'Any' and not oid in self.schema: |
130 if oid != 'Any' and oid not in self.schema: |
131 self.error('don\'t register %s, %s type not defined in the ' |
131 self.error('don\'t register %s, %s type not defined in the ' |
132 'schema', obj, oid) |
132 'schema', obj, oid) |
133 return |
133 return |
134 kwargs['clear'] = True |
134 kwargs['clear'] = True |
135 super(ETypeRegistry, self).register(obj, **kwargs) |
135 super(ETypeRegistry, self).register(obj, **kwargs) |
250 |
250 |
251 def possible_actions(self, req, rset=None, **kwargs): |
251 def possible_actions(self, req, rset=None, **kwargs): |
252 if rset is None: |
252 if rset is None: |
253 actions = self.poss_visible_objects(req, rset=rset, **kwargs) |
253 actions = self.poss_visible_objects(req, rset=rset, **kwargs) |
254 else: |
254 else: |
255 actions = rset.possible_actions(**kwargs) # cached implementation |
255 actions = rset.possible_actions(**kwargs) # cached implementation |
256 result = {} |
256 result = {} |
257 for action in actions: |
257 for action in actions: |
258 result.setdefault(action.category, []).append(action) |
258 result.setdefault(action.category, []).append(action) |
259 return result |
259 return result |
260 |
260 |
359 return self[regid] |
359 return self[regid] |
360 |
360 |
361 def items(self): |
361 def items(self): |
362 return [item for item in super(CWRegistryStore, self).items() |
362 return [item for item in super(CWRegistryStore, self).items() |
363 if not item[0] in ('propertydefs', 'propertyvalues')] |
363 if not item[0] in ('propertydefs', 'propertyvalues')] |
|
364 |
364 def iteritems(self): |
365 def iteritems(self): |
365 return (item for item in super(CWRegistryStore, self).items() |
366 return (item for item in super(CWRegistryStore, self).items() |
366 if not item[0] in ('propertydefs', 'propertyvalues')) |
367 if not item[0] in ('propertydefs', 'propertyvalues')) |
367 |
368 |
368 def values(self): |
369 def values(self): |
369 return [value for key, value in self.items()] |
370 return [value for key, value in self.items()] |
|
371 |
370 def itervalues(self): |
372 def itervalues(self): |
371 return (value for key, value in self.items()) |
373 return (value for key, value in self.items()) |
372 |
374 |
373 def reset(self): |
375 def reset(self): |
374 CW_EVENT_MANAGER.emit('before-registry-reset', self) |
376 CW_EVENT_MANAGER.emit('before-registry-reset', self) |
459 # if the fs code use some cubes not yet registered into the instance |
461 # if the fs code use some cubes not yet registered into the instance |
460 # we should cleanup sys.modules for those as well to avoid potential |
462 # we should cleanup sys.modules for those as well to avoid potential |
461 # bad class reference pb after reloading |
463 # bad class reference pb after reloading |
462 cfg = self.config |
464 cfg = self.config |
463 for cube in cfg.expand_cubes(cubes, with_recommends=True): |
465 for cube in cfg.expand_cubes(cubes, with_recommends=True): |
464 if not cube in cubes: |
466 if cube not in cubes: |
465 cube_modnames = cfg.appobjects_cube_modnames(cube) |
467 cube_modnames = cfg.appobjects_cube_modnames(cube) |
466 self._cleanup_sys_modules(cube_modnames) |
468 self._cleanup_sys_modules(cube_modnames) |
467 self.register_modnames(modnames) |
469 self.register_modnames(modnames) |
468 CW_EVENT_MANAGER.emit('after-registry-reload') |
470 CW_EVENT_MANAGER.emit('after-registry-reload') |
469 |
471 |
535 else: |
537 else: |
536 self.debug('unregister %s (no %s object in registry %s)', |
538 self.debug('unregister %s (no %s object in registry %s)', |
537 registry.objid(obj), ' or '.join(regids), regname) |
539 registry.objid(obj), ' or '.join(regids), regname) |
538 self.unregister(obj) |
540 self.unregister(obj) |
539 super(CWRegistryStore, self).initialization_completed() |
541 super(CWRegistryStore, self).initialization_completed() |
540 if 'uicfg' in self: # 'uicfg' is not loaded in a pure repository mode |
542 if 'uicfg' in self: # 'uicfg' is not loaded in a pure repository mode |
541 for rtags in self['uicfg'].values(): |
543 for rtags in self['uicfg'].values(): |
542 for rtag in rtags: |
544 for rtag in rtags: |
543 # don't check rtags if we don't want to cleanup_unused_appobjects |
545 # don't check rtags if we don't want to cleanup_unused_appobjects |
544 rtag.init(self.schema, check=self.config.cleanup_unused_appobjects) |
546 rtag.init(self.schema, check=self.config.cleanup_unused_appobjects) |
545 |
547 |
614 except (TypeError, ValueError): |
616 except (TypeError, ValueError): |
615 raise ValueError(_('bad value')) |
617 raise ValueError(_('bad value')) |
616 vocab = pdef['vocabulary'] |
618 vocab = pdef['vocabulary'] |
617 if vocab is not None: |
619 if vocab is not None: |
618 if callable(vocab): |
620 if callable(vocab): |
619 vocab = vocab(None) # XXX need a req object |
621 vocab = vocab(None) # XXX need a req object |
620 if not value in vocab: |
622 if value not in vocab: |
621 raise ValueError(_('unauthorized value')) |
623 raise ValueError(_('unauthorized value')) |
622 return value |
624 return value |
623 |
625 |
624 def init_properties(self, propvalues): |
626 def init_properties(self, propvalues): |
625 """init the property values registry using the given set of couple (key, value) |
627 """init the property values registry using the given set of couple (key, value) |
638 |
640 |
639 |
641 |
640 # XXX unify with yams.constraints.BASE_CONVERTERS? |
642 # XXX unify with yams.constraints.BASE_CONVERTERS? |
641 YAMS_TO_PY = BASE_CONVERTERS.copy() |
643 YAMS_TO_PY = BASE_CONVERTERS.copy() |
642 YAMS_TO_PY.update({ |
644 YAMS_TO_PY.update({ |
643 'Bytes': Binary, |
645 'Bytes': Binary, |
644 'Date': date, |
646 'Date': date, |
645 'Datetime': datetime, |
647 'Datetime': datetime, |
646 'TZDatetime': datetime, |
648 'TZDatetime': datetime, |
647 'Time': time, |
649 'Time': time, |
648 'TZTime': time, |
650 'TZTime': time, |
649 'Interval': timedelta, |
651 'Interval': timedelta, |
650 }) |
652 }) |