Acessar


Esqueceu a senha?
Cadastrar
 

Gerando XML do conteúdo do portal


1. Criando um script python de busca

 Neste artigo vamos fazer um XML dos usuários cadastrados no portal. O script abaixo está todo comentado ele busca todos os usuários, anexa numa lista o id, nome e o e-mail e retorna a lista como resultado, confira:
#importa o getToolByName
from Products.CMFCore.utils import getToolByName

#cria um lista para guarda os resultados
lista = []

#acessa a tool portal_membership
portal_membership = getToolByName(context, 'portal_membership')

#lista os usuarios do metodo listMemberIds
for i in portal_membership.listMemberIds():

    #definindo as variaveis
    membro = portal_membership.getMemberById(i)
    fullname = membro.getProperty('fullname', '')
    email = membro.getProperty('email', '')

    #verifica se o usuario cadastrou o nome
    if not fullname:
        fullname = membro

    #guardando os resultados numa lista
    lista.append((i,fullname,email))

#retornando a lista quando executar este script
return lista


2. Recuperando os dados do script e montando o XML

O próximo passo é criar um page_template na ZMI do seu plone site ou no seu produto, o nome sugerido para esse exemplo é xml_users. Após cria o page_template, clique na aba Properties e mude o content_type para text/xml; charset=utf-8 e salve. Agora o seu page_template já está em formato XML. Vamos recuperar os dados do script e trata-los.

Edite o seu page_template  com o seguinte código:

<?xml version="1.0" encoding="utf-8"?>
<document xmlns:tal="http://xml.zope.org/namespaces/tal"
         tal:define="usuarios python:here.lista_users_xml()">
    <tal:block repeat="usuario usuarios">
        <member>
            <id tal:content="python:usuario[0]"/>
            <fullname tal:content="python:usuario[1]"/>
            <email tal:content="python:usuario[2]"/>
        </member>
    </tal:block>
</document>
Comentanto:

Defindo o cabeçalho do XML:

<?xml version="1.0" encoding="utf-8"?>

Definindo que vamos usar TALS, na linha abaixo estamos definindo a variável usuarios que receberá o retorno do script python:

<document xmlns:tal="http://xml.zope.org/namespaces/tal"
         tal:define="usuarios python:here.lista_users_xml()">

Definindo a repeat dos resultados:

    <tal:block repeat="usuario usuarios">

Recuperando os dados do loop, como foi gerada uma lista no script python, aonde cada item possui 3 elementos, é necessário entender de listas para entender a recuperação dos dados, como abaixo:

        <member>
            <id tal:content="python:usuario[0]"/>
            <fullname tal:content="python:usuario[1]"/>
            <email tal:content="python:usuario[2]"/>
        </member>

Fechando o bloco do repeat

    </tal:block>

Fechando o bloco dos dados

</document>

Olhe o resultado do exemplo aqui!



Plone

2.5.5

  • Python.org
  • Zope
  • Plone
  • Ubuntu
  • Debian
  • Python Brasil
  • Tchezope
  • Django Brasil