Быстрое решение - запросить каталог, например так:
client = xmlrpclib.ServerProxy('http://user:password@blah.com/plone')
completePath = '/'.join(client.getPhysicalPath()) + '/sites/ng/path/to/folder'
if len(client.portal_catalog.searchResults(path=completePath)):
return True
Другим решением может быть обход структуры папок следующим образом:
client = xmlrpclib.ServerProxy('http://user:password@blah.com/plone')
path = '/sites/ng/path/to/folder'
subdirs = path.split('/')[1:]
dir = client
for subdir in subdirs:
if subdir in dir.objectIds():
dir = dir[subdir]
else:
return False
return True
редактировать
Я должен изменить свой ответ. Я пытался взаимодействовать с portal_catalog через xmlrpc, и на самом деле это не так просто. Мои два варианта хороши, но не для использования через xmlrpc. Итак, на примере transmogrify.ploneremote , простой вариант (не сильно отличающийся от вашей реализации) для проверки существования удаленной папки:
try:
path = 'http://user:password@blah.com/plone/sites/ng/path/to/folder'
xmlrpclib.ServerProxy(path).getPhysicalPath()
return True
except xmlrpclib.Fault, e:
return False