--- ZSQLExtend/ZSQLExtend.py 2007/07/31 11:28:48 1.118 +++ ZSQLExtend/ZSQLExtend.py 2007/08/09 15:09:27 1.119 @@ -77,6 +77,15 @@ def utf8ify(str): else: return str.encode('utf-8') + +def setPsycopg2UseUnicode(): + """force Psycopg2DA to return unicode objects""" + try: + import psycopg2 + import psycopg2.extensions + psycopg2.extensions.register_type(psycopg2.extensions.UNICODE) + except: + logging.error("Unable to force psycopg2 to use unicode") def sql_quote(v): @@ -350,6 +359,7 @@ class ZSQLExtendFolder(Folder,Persistent def importXMLFileFMP(self,table,dsn=None,uploadfile=None,update_fields=None,id_field=None,sync_mode=False, lc_names=True,keep_fields=False,ascii_db=False,replace=False,backup=False, + debug=False,log_to_response=False, redirect_url=None,RESPONSE=None): ''' Import FileMaker XML file (FMPXMLRESULT format) into the table. @@ -393,11 +403,30 @@ class ZSQLExtendFolder(Folder,Persistent options.ascii_db=ascii_db options.replace_table=replace options.backup_table=backup + options.debug=debug + + if RESPONSE and log_to_response: + # set up logging to response as plain text + RESPONSE.setHeader("Content-Type","text/plain; charset=utf-8") + RESPONSE.write("Import FMPXML file...\n\n") + loghandler = logging.StreamHandler(RESPONSE) + if debug: + loghandler.setLevel(logging.DEBUG) + else: + loghandler.setLevel(logging.INFO) + logger = logging.getLogger('db.import.fmpxml') + logger.addHandler(loghandler) + options.use_logger_instance = logger importFMPXML(options) os.remove(filename) + if RESPONSE and log_to_response: + loghandler.flush() + RESPONSE.write("\n\n DONE!") + return + if RESPONSE and redirect_url: RESPONSE.redirect(redirect_url) @@ -499,13 +528,13 @@ class ZSQLExtendFolder(Folder,Persistent return pt() - def changeZSQLExtend(self,label,description,weight=0,REQUEST=None,connection_id=None): + def changeZSQLExtend(self,label,description,weight=0,connection_id=None,REQUEST=None,): """change the Konfiguration""" self.connection_id=connection_id self.weight=weight self.label=label self.description=description - + if REQUEST is not None: return self.manage_main(self, REQUEST)