[Zope] allow access to fileobject depending on role

leandros van den berg l.vandenberg at geo.uu.nl
Thu Jun 1 04:49:13 EDT 2006


 > Chris Withers wrote:
>> I'm having trouble with the precondition field of a fileobject. I've got a fileobject (a PDF-file) and its precondition field states myPrecondition, which is a DTML Method and its code is:

> This is insane...

Why is this insane? Because of using a precondition, the code of the 
method or the hole idea?

>> Note: Using the security setting and assigning roles is not an option 
>> because the fileobject is recreated every night.
> 
> 
> Rubbish. Two options:
> 
> - don't recreate the file each night, just edit its contents.

I'm thinking of manage_upload or update_data to edit the file content, 
but I can't figure out how to apply them. Hell, I can't even figure out 
how to select the file that is to be updated!
I use the following two objects for replacing the existing file.

1. External Method 'printbestand'

def printbestand():
    filename='/home/leandros/myzope/instance/Extensions/printbestand.pdf'
    f=open(filename)
    filebody=f.read()
    f.close
    return filebody

if __name__ == "__main__":
    print printbestand()

2. Script (Python) 'printbestand_upload':

try:
    context.manage_delObjects(ids='printbestand.pdf')
except:
    pass
fileobject = context.printbestand()
context.manage_addFile('printbestand.pdf',file=fileobject, 
content_type='application/pdf')
return 0

As you can see in 'printbestand_upload', the file is deleted first and 
then the new file is added. Obviously the existing file should not be 
deleted but its content updatad/edited/replaced.

My question are:
Q1: How do I select the file that is to be updated?
Q2: How do I update the content of that file with the content of the new 
file?

> - when you recreate the file, set the role to permission mapping in the 
> same lump of code.

OK, how do I do that?

> 
> cheers,
> 
> Chris
> 

Kind regards,

Leandros


More information about the Zope mailing list