Ae cara, segue o código que você pediu em outro tópico. Qualquer coisa é só 
perguntar...
Abraço.
Ps:. o yahoomail não coopera, logo o código segue sem identação.
### Name: save_file.py
### Author: Pedro Vítor L. Rodrigues
### Date: 06-02-2008

from Products.PythonScripts.standard import html_quote
from Products.CMFCore.utils import getToolByName
from DateTime import DateTime
#import datetime

#padrão
request = container.REQUEST
RESPONSE = request.RESPONSE

#pega dados da data atual para montar nome do arquivo
data = DateTime()
mes = str(data.month())
dia = str(data.day())
ano = str(data.year())

#pega arquivo e nome do arquivo a ser gravado
#'file' é o nome do input file do form
file = request.get('file',None)
filename = "BI-" + ano + "-" + mes + "-" + dia + ".pdf"

#pega contexto inicial
portal = context.portal_url.getPortalObject()


#pega contexto da pasta 'publicações', dentro da pasta raíz
folder = getattr(portal, 'publicacoes')

#pega contexto da pasta 'bi', dentro da pasta publicações
folder = getattr(folder, 'bi')


#se o tipo de arquivo for PDF, salva
if filename[-3:].lower() in ['pdf']:
#se ainda não existir uma pasta com o nome ano, cria
if not hasattr(folder, ano):
novaPasta={'type_name':'Folder',
'id':ano,
'title':'B.I.s do ano ' + ano,
'description':'Pasta com os B.I.s deste ano'}

folder.invokeFactory(**novaPasta)

#pega referência à novaPasta criada anteriormente
objeto = getattr(folder, novaPasta['id'])
#publica o objeto
objeto.content_status_modify(workflow_action='publish')

#pega contexto da pasta do ano atual 
folder = getattr(folder, ano)

#se não existir uma pasta do mês atual dentro da pasta do ano, cria
if not hasattr(folder, mes):
novaPastaMes={'type_name':'Folder',
'id':mes,
'title':'B.I.s do mes ' + mes,
'description':'Pasta com os B.I.s deste mes'}
folder.invokeFactory(**novaPastaMes)
objeto = getattr(folder, novaPastaMes['id'])
objeto.content_status_modify(workflow_action='publish')

#faz o mesmo com o mês
folder = getattr(folder, mês)

#cria o arquivo no servidor, caso este não exista ainda na pasta mês
if hasattr(folder, filename):
folder.manage_delObjects(filename)

novoArquivo={'type_name':'File',
'id':filename,
'title': filename,
'file': file}

folder.invokeFactory(**novoArquivo)
objeto = getattr(folder, novoArquivo['id'])
objeto.content_status_modify(workflow_action='publish')

folder = getattr(portal, 'publicacoes')

id="bi-do-dia"


#Sempre que um BI for adicionado, quero que a URL estática do portal
#aponte para esse BI. Quero sempre a URL relacionada ao BI mais atual.
#Assim, sempre que criar um arquivo, faço uma cópia com um id 'bi-do-dia', e 
#ao criar a url mando esta apontar para um objeto com este id. Veja que o id não
#muda, quando um arquivo novo é carregado deleto o antigo com esse id e 
adiciono uma
#cópia do novo com ele.
if hasattr(folder, id):
folder.manage_delObjects(id)

url = {'type_name':'Link',
'id':id,
'title':'B.I do Dia',
'remote_url':'./bi/' + ano + '/' + mes + '/' + filename}
folder.invokeFactory(**url)
objeto = getattr(folder, id)
objeto.content_status_modify(workflow_action='publish')


#se o arquivo não for pdf...
else:
print 'Arquivo não suportado.' + filename[-3].lower()
RESPONSE.redirect("./erro-upload?erro='2'")

return printed




----- Mensagem original ----
De: illidam <[EMAIL PROTECTED]>
Para: zope-pt@yahoogrupos.com.br
Enviadas: Segunda-feira, 16 de Junho de 2008 11:21:46
Assunto: [zope-pt] Re: Ajuda com 'Privilégios Insuficientes'


--- Em [EMAIL PROTECTED] .com.br, Jorge Guimarães <[EMAIL PROTECTED] .> escreveu
>
> 
> O script não tem privilégios suficientes para manipular a pasta do
contexto. Porque não tenta colocar esse script como um outro papel,
tipo "manager"?
> 
> Att,
> 
> Jorge
> 
opa jorge , tudo bom ne!?

Cara eu ja fiz isso e mesmo assim o danado não roda!!

Alguma outra dica!!?
=D
valeu ae...

att.
Guilherme

 


      Abra sua conta no Yahoo! Mail, o único sem limite de espaço para 
armazenamento!
http://br.mail.yahoo.com/

Responder a