Re: [Zope] change properties in external methods (was get properties ....)
Hi Ausum, ok I'll get more into detail even if some problems are already solved. I want to upload object's with properties of different meta_types from a local Zope to a remote Zope just via HTTP (no zexp etc. cause I have no access and cannot add any Products to the remote Zope) :-( I will do it with an external method based on uploadfile.py @ zope-cookbook by pieterb 1. problem: I managed to upload files, folder, ... with title just python scripts don't work (I'll show the code later...) 2. problem: I cannot add other properties upto now Can anybody give some hints? -- many thanks for your replies, Elena the relevant codesnippets: import urllib ..... # use authentication and set the user agent urllib._urlopener = MyUrlOpener() ..... if objectType != 'Folder': objectSource = object.read() ### I get the script-body with bindings and params if objectType == 'Script (Python)': params = urllib.urlencode({'id': objectId, 'file':objectSource}) ##### this doesn't work else: params = urllib.urlencode({'id': objectId, 'title':objectTitle, 'file':objectSource}) ##### this works nicely myAction = actionDict[objectType] callURL = '/'.join([myHost, objPath, myAction]) ## if objectType == 'Script (Python)' myAction is 'manage_addPythonScript' # send the file to zope f=urllib.urlopen(callURL, params) ##### this works nicely exept for 'Script (Python)' type # add properties callURL = '/'.join([myHost, objPath, 'manage_addProperty']) for prop in object.propertyIds(): if prop != 'title' or objectType != 'Script (Python)': ### title exists already, scripts don't have properties propValue = object.getProperty(prop) propType = object.getPropertyType(prop) ### up to here it works #### but the upload of the properties does not work params = urllib.urlencode({'id': prop, 'value':propValue, 'type':propType}) #urllib._urlopener = MyUrlOpener() ### I tried to set the opener again, but no change f=urllib.urlopen(callURL, params)
Elena Schulz writes:
... 1. problem: I managed to upload files, folder, ... with title just python scripts don't work (I'll show the code later...) Again: be precise for "don't work"!
2. problem: I cannot add other properties upto now Why not? What happens?
import urllib You may consider using "ZPublisher.Client". It is way simpler than "urllib".
Dieter
You may want to try the ZSyncer product: http://www.zope.org/Members/andym/ZSyncer Anyhow, here you have some hints for your current purpose:
myAction is 'manage_addPythonScript'
myAction should be 'manage_addProduct/PythonScripts/manage_addPythonScript' . PythonScripts need to be created this way, when using an URL.
#### but the upload of the properties does not work params = urllib.urlencode({'id': prop, 'value':propValue,'type':propType})
That should work fine, for string properties. Nonetheless, try to add the type to the 'id' key: (untested) params = urllib.urlencode({'id': '%s:%s' % (prop, propType), 'value':propValue,'type':propType}) Ausum ----- Original Message ----- From: "Elena Schulz" <elena.schulz@gmx.net> To: "Ausum Studio" <ausum_studio@hotmail.com>; <zope@zope.org> Sent: Friday, November 22, 2002 11:10 AM Subject: Re: [Zope] change properties in external methods (was get properties ....)
Hi Ausum,
ok I'll get more into detail even if some problems are already solved. I want to upload object's with properties of different meta_types from a local Zope to a remote Zope just via HTTP (no zexp etc. cause I have no access and cannot add any Products to the remote Zope) :-(
I will do it with an external method based on uploadfile.py @ zope-cookbook by pieterb
1. problem: I managed to upload files, folder, ... with title just python scripts don't work (I'll show the code later...) 2. problem: I cannot add other properties upto now
Can anybody give some hints?
-- many thanks for your replies, Elena
the relevant codesnippets:
import urllib
.....
# use authentication and set the user agent urllib._urlopener = MyUrlOpener()
.....
if objectType != 'Folder': objectSource = object.read() ### I get the script-body with bindings and params
if objectType == 'Script (Python)': params = urllib.urlencode({'id': objectId, 'file':objectSource}) ##### this doesn't work else: params = urllib.urlencode({'id': objectId, 'title':objectTitle, 'file':objectSource}) ##### this works nicely
myAction = actionDict[objectType] callURL = '/'.join([myHost, objPath, myAction]) ## if objectType == 'Script (Python)' myAction is 'manage_addPythonScript'
# send the file to zope f=urllib.urlopen(callURL, params) ##### this works nicely exept for 'Script (Python)' type
# add properties callURL = '/'.join([myHost, objPath, 'manage_addProperty']) for prop in object.propertyIds(): if prop != 'title' or objectType != 'Script (Python)': ### title exists already, scripts don't have properties propValue = object.getProperty(prop) propType = object.getPropertyType(prop) ### up to here it works
#### but the upload of the properties does not work params = urllib.urlencode({'id': prop, 'value':propValue, 'type':propType})
#urllib._urlopener = MyUrlOpener() ### I tried to set the opener again, but no change f=urllib.urlopen(callURL, params)
participants (3)
-
Ausum Studio -
Dieter Maurer -
Elena Schulz