portal_properties = getToolByName(site, 'portal_properties')
fckeditor_properties = getToolByName(portal_properties,
'fckeditor_properties')
fck_menu_styles = fckeditor_properties.manage_changeProperties(
fck_menu_styles = """bla bla bla"""
)
quinta-feira, 25 de novembro de 2010
Alterar configuração do FCK editor via python
sexta-feira, 19 de novembro de 2010
Rechachear css/javascript via programação
from Products.CMFCore.utils import getToolByName css_registry = getToolByName(context, 'portal_css') css_registry.cookResources()
quarta-feira, 17 de novembro de 2010
Como remover portlets pelo python
from zope.component import getUtility
from zope.component import getMultiAdapter
from plone.portlets.interfaces import IPortletManager
from plone.portlets.interfaces import IPortletAssignmentMapping
def setupPortlets(context):
site = context.getSite()
column = getUtility(IPortletManager, name='plone.leftcolumn', context=site)
manager = getMultiAdapter((site, column,), IPortletAssignmentMapping)
del manager["Assignment2"]
del manager["Assignment3"]
sexta-feira, 12 de novembro de 2010
Adicionando indices no portal_catalog
portal_catalog = getToolByName(site,'portal_catalog')
indexes = [('getConteudo','FieldIndex'),]
class Extra:
pass
idsIndexes = portal_catalog.Indexes.objectIds()
for index in indexes:
if index[0] not in idsIndexes:
extra = None
if index[1] == 'ZCTextIndex':
extra = Extra()
extra.lexicon_id = 'plone_lexicon'
extra.index_type = 'Okapi BM25 Rank'
portal_catalog.addIndex(index[0], index[1],extra)
Adicionar Papel em Grupo
groupstool = getToolByName(portal, 'portal_groups')
objgrupo = groupstool.getGroupById(id_grupo)
rolesgrupo = objgrupo.getRoles()
if papel not in rolesgrupo:
rolesgrupo.append(papel)
groupstool.editGroup(id=id_grupo, roles=rolesgrupo)
Pegando exceções em um doctest de integração
# Logar como manager
>>> self.loginAsPortalOwner()
# Vamos criar uma pasta
>>> portal.invokeFactory('Folder','pasta')
'pasta'
# vamos tirar a permissão local de adicionar tipos de conteudo
>>> portal.pasta.setConstrainTypesMode(1)
>>> portal.pasta.setLocallyAllowedTypes((''))
# agora tentamos adicionar uma pasta e testamos se vai dar a exception esperada
>>> portal.pasta.invokeFactory('Folder','pasta-aqui-nao-pode')
Traceback (most recent call last):
...
Unauthorized: Disallowed subobject type: Folder
Upload de arquivo em um doctest funcional com testbrowser
>>> from Products.Five.testbrowser import Browser
>>> from Products.PloneTestCase.setup import portal_owner, default_password
>>> import os
>>> from Products.ATContentTypes.tests.utils import dcEdit, PACKAGE_HOME
>>> browser = Browser()
>>> portal_url = self.portal.absolute_url()
# Pegando um arquivo de imagem para usar no formulario
TEST_JPEG_FILENAME = 'canoneye.jpg'
TEST_JPEG_FILE = open(os.path.join(PACKAGE_HOME, 'input', TEST_JPEG_FILENAME), 'rb')
TEST_JPEG_FILE.seek(0)
# logar como Manager
>>> browser.open(self.portal_url+'/login_form')
>>> browser.getControl(name='__ac_name').value = usuario
>>> browser.getControl(name='__ac_password').value = senha
>>> browser.getControl(name='submit').click()
>>> "You are now logged in" in browser.contents
# Adicionar uma Imagem
>>> browser.open(portal_url + '/createObject?type_name=Image')
>>> browser.getControl(name='title').value = 'image Sample'
# Adiciona um arquivo válido no campo imagem
>>> campo_imagem = browser.getControl(name='image_file')
>>> campo_imagem.filename = TEST_JPEG_FILENAME
>>> campo_imagem.value = TEST_JPEG_FILE
>>> browser.getControl('Save').click()
>>> 'Changes saved' in browser.contents
True
quinta-feira, 11 de novembro de 2010
Consulta com operadores lógicos com advancedQuery
query=dict()
query['review_state'] = 'published'
query['portal_type'] = ['Event',]
query['sort_order'] = 'descending'
query['sort_on'] = 'start'
aq = portal_catalog.makeAdvancedQuery(query)
aq &= Ge('start',DateTime()) # Ge:maior ou igual; Le:menor ou igual
return portal_catalog.evalAdvancedQuery(aq)
Detelar objeto por id
folder.manage_delObjects(["list", "of", "ids", "to", "delete"])
Recuperar usuario
mtool = getToolByName(context,'portal_membership')
usr = mtool.searchMembers('cpf','0972813100')
> [{'username': 'admin', 'email': 'fulano@gmail.com'}]
Consulta irrestrita com portal_catalog
pc = getToolByName(context, 'portal_catalog') query = dict() query['portal_type'] = ['Document,'] query['sort_order'] = 'descending' query['sort_on'] = 'created' results = pc.unrestrictedSearchResults(query)
Consulta simples com portal_catalog
from Products.CMFCore.utils import getToolByName pc = getToolByName(context, 'portal_catalog') query = dict() query['review_state'] = 'published' query['portal_type'] = ['Document,'] query['sort_order'] = 'descending' query['sort_on'] = 'created' results = pc(query)
Adicionar propriedade em portal_properties
from Products.CMFCore.utils import getToolByName
pp = getToolByName(context, 'portal_properties')
site_properties = pp.site_properties
if not hasattr(site_properties,'nome_da_propriedade'):
site_properties.manage_addProperty('nome_da_propriedade', valor_inicial,tipo_da_propriedade)
Pegar propriedade do portal_properties
from Products.CMFCore.utils import getToolByName pp = getToolByName(context, 'portal_properties') #site_properties eh um container de properties padrão do portal_properties pp.site_properties.[nome_da_propriedade]
Pegar o objeto Plone Site
portal = getToolByName(context, 'portal_url').getPortalObject()
Subscrever:
Comentários (Atom)