Consegui fazer um método para rodar pela ZMI mesmo:

def valor(v):
 n = []
 v=str(v)
 vl=v.split('.')
 if not vl: return v
 v=vl[0]
 del vl[0]
 if vl: s=','+','.join(vl)
 else: s=''
 print s
 if len(s)==2: s+='0'
 print s
 tam = len(v)
 cont = 0
 while abs(cont) < tam:
   if cont==0:
     n.append('.' + str(v[cont-3:]))
   else:
     n.append('.' + str(v[cont-3:cont]))
   cont = cont-3
 n.reverse()
 n[0] = n[0][1:]
 n.append(s)
 return ''.join(n)


não é bonito mas funciona :P

--
Paul Eipper

Em 04/04/07, José Henrique <[EMAIL PROTECTED]> escreveu:

  Há mais de uma forma de fazer isso, mas todas elas implicam em ter
acesso ao filesystem:

1. Seguindo a receita descrita em
Zope\lib\python\Products\PythonScripts\README.txt;
2. Utilizando um External Method;
3. Desenvolvendo um produto.

Zénrique.

Em 04/04/07, Joao Paulo Carusi <[EMAIL PROTECTED]> escreveu:
>
>  Fala Paul,
>
> Estou estou com a mesma dificuldade que vc...
> Pedi uma dica para um cara que manja muito de Zope e ele disse:
>
> "JP, se importar o modulo no Zope (atraves de python scripts) da erro de
>
> permissão, crie um External Method."
>
> Nao tive tempo de ver isso  ainda, espero que te ajude...
>
> Abracos,
> JP
>
> On 4/4/07, Paul Eipper < [EMAIL PROTECTED]> wrote:
> >
> > Parece que não vou poder fazer isso, pois o módulo re de expressões
> > regulares não está disponível no contexto de Scripts Python da ZMI.
> >
> > Alguém sabe alguma maneira de resolver isso? (e sim, tem que ser via
> > Scripts Python da ZMI) :/
> >
> > --
> > Paul Eipper
> >
> >
> > Em 03/04/07, Paul Eipper < [EMAIL PROTECTED]> escreveu:
> > >
> > > Obrigado Zénrique
> > > Vou então reimplementar a função em um Python Script e chamar
> > > diretamente da page template.
> > >
> > > --
> > > Paul Eipper
> > >
> > >
> > > Em 03/04/07, José Henrique <[EMAIL PROTECTED]> escreveu:
> > > >
> > > > Paul,
> > > >
> > > > Observando o código-fonte de thousands_commas, nota-se que a
> > > > inserção de pontos e vírgulas está inscrita no próprio código.  Dessa 
forma,
> > > > creio que não há como alterar o resultado através de configuração do 
Zope.
> > > >
> > > > Zénrique.
> > > >
> > > > def thousands_commas(v, name='(Unknown name)', md={},
> > > >                      thou=re.compile(
> > > >
> > > > r"([0-9])([0-9][0-9][0-9]([,.]|$))").search):
> > > >     v=str(v)
> > > >     vl=v.split('.')
> > > >     if not vl: return v
> > > >     v=vl[0]
> > > >     del vl[0]
> > > >     if vl: s='.'+'.'.join(vl)
> > > >     else: s=''
> > > >     mo=thou(v)
> > > >     while mo is not None:
> > > >         l = mo.start(0)
> > > >         v=v[:l+1]+','+v[l+1:]
> > > >         mo=thou(v)
> > > >     return v+s
> > > >
> > > >
> > > > Em 03/04/07, Paul Eipper< [EMAIL PROTECTED]> escreveu:
> > > >
> > > > > Olá lista,
> > > > >
> > > > > Estou precisando formatar um número que recebo via sql em um
> > > > page
> > > > > template para ser visualizado como moeda.
> > > > >
> > > > > Tentei usando este método:
> > > > > tal:replace="python:pss.thousands_commas(valor_numerico)"
> > > > >
> > > > > Mas ele converte para o padrão americano, com a vírgula
> > > > separando a
> > > > > casa de milhar. Existe alguma maneira de dizer qual o locale ele
> > > > deve
> > > > > seguir? Como posso resolver isso?
> > > > >
> > > > > Tentei fazer um script python próprio (na ZMI), mas recebo erro
> > > > de
> > > > > permissão ao tentar importar o módulo locale do python. [1]
> > > > >
> > > > > Agradeço a atenção
> > > > >
> > > > > [1] http://www.pythonbrasil.com.br/moin.cgi/FormatarNumeros
> > > >
> > > >
> > >
> >
>

Responder a