Esempio n. 1
0
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)
Esempio n. 2
0
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)