class RenameFormAdapter(object): interface.implements(IRenameForm) adapts(IBaseObject) def __init__(self, context): self.context = context self.languages = getToolByName(context, 'portal_languages').getSupportedLanguages() self.handler = IMultilanguageURLHandler(aq_parent(aq_inner(context)), None) def __setattr__(self, name, value): if name in ('languages', 'context', 'handler',): object.__setattr__(self, name, value) elif name == 'id': self.context.setId(value) elif name == 'title': self.context.setTitle(value) elif name in self.languages: self.handler.set_translated_id(self.id, value, name) else: object.__setattr__(self, name, value) def __getattr__(self, name): if name in ('languages', 'context', 'handler',): return object.__getattr__(self, name) if name == 'id': return self.context.getId() if name == 'title': return self.context.Title() if name in self.languages: return self.handler.get_translated_id(self.id, name) return object.__getattr__(self, name)
def update_translated_ids(obj, event): if IBaseObject.providedBy(obj) and obj.isTemporary(): return handler = IMultilanguageURLHandler(event.newParent, None) old_handler = IMultilanguageURLHandler(event.oldParent, None) if handler is not None and old_handler is not None: for lang, id in old_handler.get_translated_ids(event.oldName): handler.set_translated_id(event.newName, id, lang) if not event.newParent is event.oldParent and old_handler is not None: old_handler.remove_translated_ids(event.oldName, False)