Zope 2.5 on Debian w/ PostgreSQL 7.1 on i686-pc-linux-gnu, compiled by GCC 2.95.4 Found the fix thanks to Jim Penny (and a google search) Input to my Postgres DB just fine! http://mail.python.org/pipermail/zope/2001-August/098412.html # added "import string' line to /lib/python/Products/ZPoPyDA/PoPy_DA.py import string database_type='PoPy' """%s Database Connection""" % database_type from PoPy_db import DB from Shared.DC.ZRDB.Connection import * from PoPy_browser import * addPoPyConnectionForm=DTMLFile( 'dtml/PoPyconnectionAdd', globals(), default_id='%s_database_connection' % database_type, default_title='Z %s Database Connection' % database_type, database_type=database_type, ) def addPoPyConnection(self, id, title, connection_string, connected=None,attempts=10,seconds=5,REQUEST=None): """Add a Z PoPy DB connection to a folder""" if not connected is None: connected = 1 self._setObject(id, PoPyConnection(id, title, connection_string, connected, attempts, seconds)) if REQUEST is not None: return self.manage_main(self,REQUEST) class PoPyConnection(Connection): """A database connection object""" database_type=database_type id='%s_database_connection' % database_type meta_type=title='Z %s Database Connection' % database_type icon='misc_/Z%sDA/conn' % database_type _isAnSQLConnection=1 def __init__(self, id, title, connection_string, connected=None, attempts=10,seconds=5): Connection.__init__(self,id,title,connection_string,connected) self.attempts = attempts self.seconds = seconds if self._v_connected: self._v_database_connection.setAttempts(attempts,seconds) def manage_attempts (self, attempts,seconds,REQUEST): " " self.attempts = attempts self.seconds = seconds self._v_database_connection.setAttempts(attempts,seconds) return self.manage_main(self,REQUEST) manage_main=DTMLFile('dtml/PoPyconnectionStatus', globals()) manage_properties=DTMLFile('dtml/PoPyconnectionEdit', globals()) def manage_edit(self, title, connection_string, connected=None, attempts=10,seconds=5,REQUEST=None): """Change connection""" self.attempts = attempts self.seconds = seconds if self._v_connected: self._v_database_connection.setAttempts(attempts,seconds) Connection.manage_edit(self,title,connection_string,connected) manage_testForm = DTMLFile('dtml/PoPyconnectionTestForm', globals()) def factory(self): return DB def sql_quote__(self, v, escapes={ '\\': '\\\\', '\"': '\\\"', '\'': '\\\'', '\0': '\\0', '\n': '\\n', '\t': '\\t', '\r': '\\r', '\b': '\\n', }): find=string.find for c in "\\\"\'\0\n\t\r\b": if find(v,c) > -1: v=string.join(string.split(v,c),escapes[c]) return "'%s'" % v