[plonegov-br] Dúvida Correios.

Idg Serpro idg em serpro.gov.br
Segunda Abril 18 16:53:24 BRT 2016


Você pode tentar utilizar o plone.api:

http://docs.plone.org/develop/plone.api/docs/portal.html#show-notification-message

-- 
Wesley Barroso Lopes

Analista de Desenvolvimento
SERPRO/SUPDE/DEDES/DECVF

Tel: 31 3311 6838



Em 18/04/2016 16:26:50, Tarcísio Ribeiro Freire Junior escreveu:
> 


> 
> Pessoal, boa tarde!> 
>  > 
> Tenho um tipo de conteúdo chamado destaque que, devido a necessidade do requisito, só deve ter um por pasta. Deste modo, o código completo mais abaixo, além de criar
 elementos necessários ao funcionamento da instância do tipo, controla uma adição secundária deste. E, ao término do processo, tenta apresentar uma mensagem para o usuário, ponto que estou enfrentando o problema.
> 
>  > 
> Já olhei a documentação
> http://docs.plone.org/develop/plone/sessions/statusmessages.html> , mas não foi muito esclarecedora quanto ao erro que estou inserindo no código.> 
>  > 
> Estou com um dúvida nesta linha, creio:> 
> item[1].plone_utils.addPortalMessage(_(u'Não é possível cadastrar mais de um destaque em uma pasta. Por favor, volte até a pasta /Destaques
 e adicione o item pretendido.'), 'error')> 
>  > 
> **O que está sendo curioso em todo esse processo de tentativa e erro é que já consegui apresentar a mensagem quando estava dando um erro de permissão de adição de
 itens. Creio que meu código esteja se perdendo com o contexto.> 
>  > 
> ***Desculpem pela qualidade do código, pois já fiz tantas tentativas que acabei bagunçado por demais. Pretendo organizá-lo ao final, após descobrir o que está ocorrendo.> 
>  > 
>  > 
> Antecipadamente, agradeço o apoio.> 
> Obrigado!> 
>  > 
> ####################################
> 
Código completo> 
> ####################################> 
>  > 
>  > 
> # -*- coding: utf-8 -*-> 
> """Definition of the Destaque content type> 
> """> 
> from Acquisition import aq_inner, aq_parent> 
> from zope.interface import implements> 
> from zope.component import getUtility> 
> HAS_LINGUAPLONE = True> 
> try:> 
>     from Products.LinguaPlone.I18NBaseBTreeFolder import I18NOnlyBaseBTreeFolder> 
>     from Products.LinguaPlone import public as atapi> 
> except ImportError:> 
>     HAS_LINGUAPLONE = False> 
>     from Products.Archetypes import atapi> 
>  > 
> from plone.app.folder.folder import ATFolder> 
> from plone.i18n.normalizer.interfaces import IIDNormalizer> 
>  > 
> from Products.CMFCore.utils import getToolByName> 
> from Products.ATContentTypes.content.document import ATDocument, ATDocumentSchema> 
> from Products.ATContentTypes.content import schemata> 
> from Products.ATContentTypes.configuration import zconf> 
> from Products.ATContentTypes.lib import constraintypes> 
>  > 
> # -*- Message Factory Imported Here -*-> 
> from pci.conteudo import conteudoMessageFactory as _> 
> from pci.conteudo.interfaces import IDestaque> 
> from pci.conteudo.config import PROJECTNAME, SUFIXO_DESTAQUE> 
> import logging> 
> from pci.policy import config> 
> logger = logging.getLogger(config.PROJECTNAME)> 
>  > 
> def configuraDestaque(destaque,event):> 
>     """configuracoes do Destaque"""> 
>    
> 
>     > import pdb; pdb.set_trace();> 
>  > 
>    
> catalog = getToolByName(destaque,'portal_catalog') 
> 
>     # cria pasta com mesmo id e titulo do destaque para conter todo seu conteudo> 
>     id = > destaque.id> 
>     titulo = destaque.Title()> 
>     pastaPai = aq_parent(aq_inner(destaque))> 
>     objetoPreExistente = destaqueExistente(destaque)> 
>  > 
>     if not objetoPreExistente:> 
>        
> pastaPai.manage_renameObject(id, id + '-pagina')> 
>        
> destaque.setTitle(titulo + SUFIXO_DESTAQUE)> 
>        
> pastaPai.invokeFactory("Folder",id,title=titulo)> 
>        
> pastaDestaque = pastaPai[id]   
> 
>         #habilita restricoes de tipos> 
>        
> addable_types = ["Destaque","Image"]   
> 
>         pastaDestaque.setConstrainTypesMode(constraintypes.ENABLED)> 
>         pastaDestaque.setLocallyAllowedTypes(addable_types)> 
>         pastaDestaque.setImmediatelyAddableTypes(addable_types)      
> 
>         # Will finish Archetypes content item creation process,> 
>         # rename-after-creation and such> 
>         pastaDestaque.unmarkCreationFlag()> 
>  > 
>         objetosDoDestaque = catalog(path = { "query" : "/".join(pastaPai.getPhysicalPath()), "depth" : 1},> 
>                                 portal_type = addable_types)> 
>  > 
>        
> for objeto in objetosDoDestaque:> 
>             pastaDestaque.manage_pasteObjects(pastaPai.manage_cutObjects(> objeto.id> ))> 
>             if objeto.portal_type == 'Destaque':> 
>                 pastaDestaque.default_page = > objeto.id> 
>     else:> 
>         pastaPai.manage_delObjects([id])> 
>  > 
> def destaqueExistente(destaque):> 
>     """Verifica se já há desataques na pasta pai. Se houver lança execeção e aborta a criação."""> 
>     pastaPai = aq_parent(aq_inner(destaque))> 
>    
> itens = pastaPai.items()> 
>     # import pdb; pdb.set_trace();> 
>    
> for item in itens:> 
>         # item é uma lista filha da lista itens: (título do objeto , objeto)   
> 
>         > if IDestaque.providedBy(item[1]) and item[0] != destaque.Title():> 
>            
> 
>             > logger.warn(destaque)> 
>             logger.warn(pastaPai)> 
>             logger.warn(item[1])> 
>  > 
>            
> item[1].plone_utils.addPortalMessage(_(u'Não é possível cadastrar mais de um destaque em uma pasta. Por favor, volte até a pasta /Destaques e adicione o item pretendido.'), 'error')> 
>            
> return item[1]> 
>            
> 
>  > 
>  > 
> DestaqueSchema = ATDocumentSchema.copy() + atapi.Schema((> 
>  > 
>     # -*- Your Archetypes field definitions here ... -*-> 
>  > 
> ))> 
>  > 
> # Set storage on fields copied from ATFolderSchema, making sure> 
> # they work well with the python bridge properties.> 
>  > 
> DestaqueSchema['title'].storage = atapi.AnnotationStorage()> 
> DestaqueSchema['description'].storage = atapi.AnnotationStorage()> 
>  > 
> schemata.finalizeATCTSchema(> 
>     DestaqueSchema,> 
>     folderish=False,> 
>    
> moveDiscussion=False> 
> )> 
>  > 
> class Destaque(ATDocument):> 
>     """Unidade Destaque dos Correios"""> 
>    
> 
>     implements(IDestaque)> 
>     meta_type = "Destaque"> 
>    
> schema = DestaqueSchema> 
>  > 
>     _at_rename_after_creation = True> 
>  > 
>  > 
>     title = atapi.ATFieldProperty('title')> 
>     description = atapi.ATFieldProperty('description')> 
>     # -*- Your ATSchema to Python Property Bridges Here ... -*-> 
>  > 
> atapi.registerType(Destaque, PROJECTNAME)> 
>  > 
> 
> 
>  > 
> Tarcísio Ribeiro Freire Junior
> Analista de Correios / ANALISTA IX> 
> 
> 
>  > 
> 
> 
> AC/VICOR/DECOR/GSSU
> tarcisiofreire em correios.com.br
> (61) 3207-1775> 
> 
> 
> 
> 
>  > 

> > 


> 
AVISO LEGAL
> 
> 
“Esta mensagem é destinada exclusivamente para a(s) pessoa(s) a quem é dirigida, podendo conter informação confidencial e/ou legalmente privilegiada. Se você não for destinatário desta mensagem, desde já fica notificado de abster-se a divulgar, copiar, distribuir,
 examinar ou, de qualquer forma, utilizar a informação contida nesta mensagem, por ser ilegal. Caso você tenha recebido esta mensagem por engano, peço que me retorne este e-mail, promovendo, desde logo, a eliminação do seu conteúdo em sua base de dados, registros
 ou sistema de controle. Fica desprovida de eficácia e validade a mensagem que contiver opiniões particulares e vínculos obrigacionais, expedida por quem não detenha poderes de representação por parte da ECT.”
> 
> 
"This message is intended only for the person to whom it is addressed and may contain confidential and/or legally privileged. If you are not a recipient of this message, it is now notified of refraining to disclose; copy; distribute; examine; or in any way
 use the information contained in this message because it is illegal. If you have received this message in error, please I ask to return this email, promoting as soon as possible the elimination of its content in database, records or system control. It is devoid
 of effective and valid message that contains the private opinions and dividend bonds, issued by those not holding powers of attorney by the ECT."
> 


> -- 
Comunidade Plone no Governo
Site: > http://www.softwarelivre.gov.br/plone> 
Wiki: > http://colab.interlegis.leg.br/wiki/PloneGovBr> 
Histórico: > http://colab.interlegis.leg.br/search/?type=thread&order=latest&list=plonegov-br> 
Lista: > https://listas.interlegis.gov.br/mailman/listinfo/plonegov-br


-


"Esta mensagem do SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO), empresa pública federal regida pelo disposto na Lei Federal nº 5.615, é enviada exclusivamente a seu destinatário e pode conter informações confidenciais, protegidas por sigilo profissional. Sua utilização desautorizada é ilegal e sujeita o infrator às penas da lei. Se você a recebeu indevidamente, queira, por gentileza, reenviá-la ao emitente, esclarecendo o equívoco."

"This message from SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO) -- a government company established under Brazilian law (5.615/70) -- is directed exclusively to its addressee and may contain confidential data, protected under professional secrecy rules. Its unauthorized use is illegal and may subject the transgressor to the law's penalties. If you're not the addressee, please send it back, elucidating the failure."
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.interlegis.gov.br/pipermail/plonegov-br/attachments/20160418/167f9594/attachment.html>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: image001.jpg
Tipo: image/jpeg
Tamanho: 13693 bytes
Descrição: não disponível
URL: <http://listas.interlegis.gov.br/pipermail/plonegov-br/attachments/20160418/167f9594/attachment.jpg>


Mais detalhes sobre a lista de discussão PloneGov-BR