def test_isMixedIn(self): self.failUnless(isinstance(self.af, BrowserDefaultMixin), "ISelectableBrowserDefault was not mixed in to ATFolder") self.failUnless(ZopeTwoISelectableBrowserDefault.isImplementedBy(self.af), "ISelectableBrowserDefault not implemented by ATFolder instance") self.failUnless(ISelectableBrowserDefault.providedBy(self.af), "ISelectableBrowserDefault not implemented by ATFolder instance")
def __iter__(self): for item in self.previous: pathkey = self.pathkey(*item.keys())[0] if not pathkey: yield item continue layoutkey = self.layoutkey(*item.keys())[0] defaultpagekey = self.defaultpagekey(*item.keys())[0] path = item[pathkey] obj = traverse(self.context, str(path).lstrip('/'), None) if obj is None: yield item continue if not ISelectableBrowserDefault.providedBy(obj): yield item continue if layoutkey: layout = item[layoutkey] if layout: obj.setLayout(str(layout)) if defaultpagekey: defaultpage = item[defaultpagekey] if defaultpage: obj.setDefaultPage(str(defaultpage)) yield item
def __iter__(self): for item in self.previous: pathkey = self.pathkey(*item.keys())[0] if not pathkey: yield item; continue layoutkey = self.layoutkey(*item.keys())[0] defaultpagekey = self.defaultpagekey(*item.keys())[0] path = item[pathkey] obj = traverse(self.context, str(path).lstrip('/'), None) if obj is None: yield item; continue if not ISelectableBrowserDefault.providedBy(obj): yield item; continue if layoutkey: layout = item[layoutkey] if layout: obj.setLayout(layout) if defaultpagekey: defaultpage = item[defaultpagekey] if defaultpage: obj.setDefaultPage(defaultpage) yield item
def processForm(self, data=1, metadata=0, REQUEST=None, values=None): """Process the schema looking for data in the form.""" is_new_object = self.checkCreationFlag() BaseObject.processForm(self, data, metadata, REQUEST, values) if config.AUTO_NOTIFY_CANONICAL_UPDATE: if self.isCanonical(): self.invalidateTranslations() if self._at_rename_after_creation and is_new_object: new_id = self._renameAfterCreation(check_auto_id=not not self.REQUEST.form.get('id')) else: new_id = None if shasattr(self, '_lp_default_page'): delattr(self, '_lp_default_page') language = self.getLanguage() canonical = self.getCanonical() parent = aq_parent(aq_inner(self)) if ITranslatable.providedBy(parent): if not parent.hasTranslation(language): parent.addTranslation(language) translation_parent = parent.getTranslation(language) translation_parent.processForm( values=dict(title=self.Title())) translation_parent.setDescription(self.Description()) parent = translation_parent if ISelectableBrowserDefault.providedBy(parent) and new_id: parent.setDefaultPage(new_id) if shasattr(self, '_lp_outdated'): delattr(self, '_lp_outdated')
def test_isMixedIn(self): self.assertTrue(isinstance(self.af, BrowserDefaultMixin), "ISelectableBrowserDefault was not mixed in to ATFolder") self.assertTrue(ZopeTwoISelectableBrowserDefault.providedBy(self.af), "ISelectableBrowserDefault not implemented by ATFolder instance") self.assertTrue(ISelectableBrowserDefault.providedBy(self.af), "ISelectableBrowserDefault not implemented by ATFolder instance")
def processForm(self, data=1, metadata=0, REQUEST=None, values=None): """Process the schema looking for data in the form.""" is_new_object = self.checkCreationFlag() BaseObject.processForm(self, data, metadata, REQUEST, values) if config.AUTO_NOTIFY_CANONICAL_UPDATE: if self.isCanonical(): self.invalidateTranslations() if self._at_rename_after_creation and is_new_object: new_id = self._renameAfterCreation( check_auto_id=not not self.REQUEST.form.get('id')) else: new_id = None if shasattr(self, '_lp_default_page'): delattr(self, '_lp_default_page') language = self.getLanguage() canonical = self.getCanonical() parent = aq_parent(aq_inner(self)) if ITranslatable.providedBy(parent): if not parent.hasTranslation(language): parent.addTranslation(language) translation_parent = parent.getTranslation(language) translation_parent.processForm(values=dict(title=self.Title())) translation_parent.setDescription(self.Description()) parent = translation_parent if ISelectableBrowserDefault.providedBy(parent) and new_id: parent.setDefaultPage(new_id) if shasattr(self, '_lp_outdated'): delattr(self, '_lp_outdated')
def getTargetObjectLayout(self, target): """ Returns target object 'view' action page template """ if ISelectableBrowserDefault.providedBy(target): return target.getLayout() else: view = target.getTypeInfo().getActionById('view') # If view action is view, try to guess correct template if view == 'view': view = target.portal_type.lower() + '_view' return view
def processForm(self, data=1, metadata=0, REQUEST=None, values=None): """Process the schema looking for data in the form.""" is_new_object = self.checkCreationFlag() BaseObject.processForm(self, data=data, metadata=metadata, REQUEST=REQUEST, values=values) # LP specific bits if config.AUTO_NOTIFY_CANONICAL_UPDATE: if self.isCanonical(): self.invalidateTranslations() # Check if an explicit id has been passed explicit_id = False if REQUEST is None: REQUEST = getattr(self, 'REQUEST', None) if REQUEST is not None: if 'id' in REQUEST.form and REQUEST.form.get('id'): explicit_id = True if values is not None: if 'id' in values and values.get('id'): explicit_id = True if (is_new_object and not explicit_id and self._at_rename_after_creation): # Renames an object like its normalized title self._renameAfterCreation(check_auto_id=True) if shasattr(self, '_lp_default_page'): delattr(self, '_lp_default_page') language = self.Language() parent = aq_parent(aq_inner(self)) if ITranslatable.providedBy(parent) and parent.Language() != '': if not parent.hasTranslation(language): parent.addTranslation(language) translation_parent = parent.getTranslation(language) translation_parent.processForm(values=dict( title=self.Title())) translation_parent.setDescription(self.Description()) parent = translation_parent if ISelectableBrowserDefault.providedBy(parent): parent.setDefaultPage(self.getId()) if shasattr(self, '_lp_outdated'): delattr(self, '_lp_outdated')
def processForm(self, data=1, metadata=0, REQUEST=None, values=None): """Process the schema looking for data in the form.""" is_new_object = self.checkCreationFlag() BaseObject.processForm(self, data=data, metadata=metadata, REQUEST=REQUEST, values=values) # LP specific bits if config.AUTO_NOTIFY_CANONICAL_UPDATE: if self.isCanonical(): self.invalidateTranslations() # Check if an explicit id has been passed explicit_id = False if REQUEST is None: REQUEST = getattr(self, 'REQUEST', None) if REQUEST is not None: if 'id' in REQUEST.form and REQUEST.form.get('id'): explicit_id = True if values is not None: if 'id' in values and values.get('id'): explicit_id = True if (is_new_object and not explicit_id and self._at_rename_after_creation): # Renames an object like its normalized title self._renameAfterCreation(check_auto_id=True) if shasattr(self, '_lp_default_page'): delattr(self, '_lp_default_page') language = self.Language() parent = aq_parent(aq_inner(self)) if ITranslatable.providedBy(parent) and parent.Language() != '': if not parent.hasTranslation(language): parent.addTranslation(language) translation_parent = parent.getTranslation(language) translation_parent.processForm( values=dict(title=self.Title())) translation_parent.setDescription(self.Description()) parent = translation_parent if ISelectableBrowserDefault.providedBy(parent): parent.setDefaultPage(self.getId()) if shasattr(self, '_lp_outdated'): delattr(self, '_lp_outdated')
def contentBody(self): context = aq_inner(self.context) if ISelectableBrowserDefault.providedBy(context): layout = context.getLayout() else: portal_types = getMultiAdapter((context, self.request), name=u'plone_tools').types() type_info = portal_types.getTypeInfo(context) try: view_action = type_info.getActionInfo('object/view') layout = (view_action['url'].split('/')[-1] or getattr(type_info, 'default_view', 'view')) except: logger.error("No layout available for %s", context.absolute_url()) # We can't have a layout return False return context.restrictedTraverse(layout).macros.get('main', False)
def contentBody(self): context = aq_inner(self.context) if ISelectableBrowserDefault.providedBy(context): layout = context.getLayout() else: portal_types = getMultiAdapter((context, self.request), name=u'plone_tools').types() type_info = portal_types.getTypeInfo(context) try: view_action = type_info.getActionInfo('object/view') layout = (view_action['url'].split('/')[-1] or getattr(type_info, 'default_view', 'view')) except: logger.error("No layout available for %s", context.absolute_url()) # We can't have a layout return False return context.restrictedTraverse(layout).macros.get('main', False)
def targetMainMacro(self): """The macro that renders the central stuff of the body, or False if no""" target = self.getAlias() if ISelectableBrowserDefault.providedBy(target): layout = target.getLayout() else: portal_types = getMultiAdapter((self, self.REQUEST), name=u'plone_tools').types() type_info = portal_types.getTypeInfo(target) try: view_action = type_info.getActionInfo('object/view') layout = view_action['url'].split('/')[-1] or \ getattr(type_info, 'default_view', 'view') except: # We can't have a layout return False return target.restrictedTraverse(layout).macros.get('main', False)