def ordernacao_pastas(portal_setup): """ Ajusta a ordenacao das pastas da raiz do portal setando ordenação padrão Plone. Similar ao ordenacao_pastas feito no upgradeStep 5000, só que ao invés de ordenar pastas pontuais ele é executado em todas as pastas. """ plone_view = portal_setup.restrictedTraverse("@@plone_portal_state") site = plone_view.portal() for pasta_id in site.objectIds(): pasta = site[pasta_id] # Se não for diretório e já estiver com a ordenação default, não faça # nada. if not IFolder.providedBy(pasta) or isinstance(pasta.getOrdering(), DefaultOrdering): continue # Define ordenacao padrao pasta.setOrdering() ordering = pasta.getOrdering() # A ordenacao dos itens na pasta e mantida em uma # Annotation. Aqui vamos repopula-la com os dados # corretos real = [o for o in pasta.objectIds(ordered=False)] stored = [o for o in pasta.objectIds(ordered=True)] for o in stored: ordering.notifyRemoved(o) for o in real: ordering.notifyAdded(o) logger.info("Pasta %s atualizada", pasta.Title())
def search_base(self, context=None): if not context: context = self.context if not IFolder.providedBy(context): return self.search_base(context=context.aq_parent) else: return context.absolute_url()
def test_fix_interface_for_folder(self): self.obj.portal_type = 'Folder' self.catalog.reindexObject(self.obj) self.portal.restrictedTraverse('fix_base_classes')() self.assertTrue(IFolder.providedBy(self.obj))
def ordernacao_pastas(portal_setup): """ Ajusta a ordenacao das pastas da raiz do portal setando ordenação padrão Plone. Similar ao ordenacao_pastas feito no upgradeStep 5000, só que ao invés de ordenar pastas pontuais ele é executado em todas as pastas. """ plone_view = portal_setup.restrictedTraverse('@@plone_portal_state') site = plone_view.portal() for pasta_id in site.objectIds(): pasta = site[pasta_id] # Se não for diretório e já estiver com a ordenação default, não faça # nada. if (not IFolder.providedBy(pasta) or isinstance(pasta.getOrdering(), DefaultOrdering)): continue # Define ordenacao padrao pasta.setOrdering() ordering = pasta.getOrdering() # A ordenacao dos itens na pasta e mantida em uma # Annotation. Aqui vamos repopula-la com os dados # corretos real = [o for o in pasta.objectIds(ordered=False)] stored = [o for o in pasta.objectIds(ordered=True)] for o in stored: ordering.notifyRemoved(o) for o in real: ordering.notifyAdded(o) logger.info('Pasta %s atualizada', pasta.Title())
def test_factory(self): fti = queryUtility( IDexterityFTI, name='Folder' ) factory = fti.factory new_object = createObject(factory) self.assertTrue(IFolder.providedBy(new_object))
def getTargetFolder(self): target_folder = getattr(self.calendar, 'target_folder', None) if target_folder: addContext = self.portal.unrestrictedTraverse('/' + self.portal.id \ + target_folder) elif IFolder.providedBy(self.context): addContext = self.context else: addContext = aq_parent(aq_inner(self.context)) return addContext
def test_folder_is_migrated(self): from Products.ATContentTypes.content.folder import ATFolder from plone.app.contenttypes.migration.migration import FolderMigrator from plone.app.contenttypes.interfaces import IFolder at_folder = self.createATCTobject(ATFolder, 'folder') migrator = self.get_migrator(at_folder, FolderMigrator) migrator.migrate() new_folder = self.portal['folder'] self.assertTrue(IFolder.providedBy(new_folder)) self.assertTrue(at_folder is not new_folder)
def test_folder_is_migrated(self): from plone.app.contenttypes.migration.migration import FolderMigrator from plone.app.contenttypes.interfaces import IFolder self.portal.invokeFactory('Folder', 'folder') at_folder = self.portal['folder'] applyProfile(self.portal, 'plone.app.contenttypes:default') migrator = self.get_migrator(at_folder, FolderMigrator) migrator.migrate() dx_folder = self.portal['folder'] self.assertTrue(IFolder.providedBy(dx_folder)) self.assertTrue(at_folder is not dx_folder)
def _album_results(self): """Get results to display an album with subalbums. """ results = self.results() images = [] folders = [] for it in results: # TODO: potentially expensive! ob = it.getObject() if IImage.providedBy(ob): images.append(it) elif IFolder.providedBy(ob): folders.append(it) return {'images': images, 'folders': folders}
def __call__(self): if IFolder.providedBy(self.context): self.folder = self.context self.text = self.context.Description() else: self.folder = aq_parent(self.context) value = getattr(self.context, 'text', None) if value: if IRichTextValue.providedBy(value): self.text = value.output else: self.text = value else: self.text = self.context.Description() return self.index()
def test_folders_in_root_are_plone_default_ordering(self): """ Após a ordenação de pastas no upgradeStep 10600 complementando o 5000, para que todos os diretórios do root tenham a ordenação default do Plone, é preciso garantir esse comportamento em todos os diretórios. Esse teste hoje não retorna nada, é para garantir que, caso no futuro self.applyProfile(portal, 'brasil.gov.portal:initcontent') por exemplo seja utilizado em testing.py e que algum diretório criado na raiz dessa forma não tenha a ordenação padrão. """ all_ordered = all([ isinstance(self.portal[pasta_id].getOrdering(), DefaultOrdering) for pasta_id in self.portal.objectIds() if IFolder.providedBy(self.portal[pasta_id]) ]) self.assertTrue(all_ordered)
def add_interface(self): obj = self.get_canonical() if not IFolder.providedBy(obj): api.portal.show_message( message=u'Impossibile marcare il contenuto come subsite.', type='error', request=self.request) return self.request.response.redirect(obj.absolute_url()) if not IRERSubsiteEnabled.providedBy(obj): alsoProvides(obj, IRERSubsiteEnabled) obj.reindexObject(idxs=['object_provides']) api.portal.show_message(message='Cartella marcata come subsite.', type='info', request=self.request) else: api.portal.show_message( message=u'Cartella già marcata come subsite.', type='warning', request=self.request) self.request.response.redirect(obj.absolute_url())
def test_adding(self): self.portal.invokeFactory("Folder", "doc1") self.assertTrue(IFolder.providedBy(self.portal["doc1"]))
def test_adding(self): self.portal.invokeFactory( 'Folder', 'doc1' ) self.assertTrue(IFolder.providedBy(self.portal['doc1']))
def check_subsite_action_remove(self): obj = self.get_canonical() if not IFolder.providedBy(obj): return False return IRERSubsiteEnabled.providedBy(obj)