|
|
| version 1.118, 2007/07/31 11:28:48 | version 1.122, 2007/11/13 20:01:23 |
|---|---|
| Line 78 def utf8ify(str): | Line 78 def utf8ify(str): |
| return str.encode('utf-8') | 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): | def sql_quote(v): |
| # quote dictionary | # quote dictionary |
| Line 350 class ZSQLExtendFolder(Folder,Persistent | Line 359 class ZSQLExtendFolder(Folder,Persistent |
| def importXMLFileFMP(self,table,dsn=None,uploadfile=None,update_fields=None,id_field=None,sync_mode=False, | 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, | lc_names=True,keep_fields=False,ascii_db=False,replace=False,backup=False, |
| debug=False,log_to_response=False, | |
| redirect_url=None,RESPONSE=None): | redirect_url=None,RESPONSE=None): |
| ''' | ''' |
| Import FileMaker XML file (FMPXMLRESULT format) into the table. | Import FileMaker XML file (FMPXMLRESULT format) into the table. |
| Line 393 class ZSQLExtendFolder(Folder,Persistent | Line 403 class ZSQLExtendFolder(Folder,Persistent |
| options.ascii_db=ascii_db | options.ascii_db=ascii_db |
| options.replace_table=replace | options.replace_table=replace |
| options.backup_table=backup | 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) | importFMPXML(options) |
| os.remove(filename) | os.remove(filename) |
| if RESPONSE and log_to_response: | |
| loghandler.flush() | |
| RESPONSE.write("\n\n DONE!") | |
| return | |
| if RESPONSE and redirect_url: | if RESPONSE and redirect_url: |
| RESPONSE.redirect(redirect_url) | RESPONSE.redirect(redirect_url) |
| Line 445 class ZSQLExtendFolder(Folder,Persistent | Line 474 class ZSQLExtendFolder(Folder,Persistent |
| """ | """ |
| return urllib.quote(txt) | return urllib.quote(txt) |
| def createIdSet(self, resultset, idField=None): | |
| """returns a (frozen)set of IDs from a SQL-resultset (using idField) or a list (if idField=None)""" | |
| if idField is None: | |
| return frozenset(resultset) | |
| else: | |
| idlist = [r[idField] for r in resultset] | |
| return frozenset(idlist) | |
| def opIdSet(self, a, b, op): | |
| """operate on sets a and b""" | |
| if (op == 'intersect'): | |
| return a.intersection(b) | |
| elif (op == 'union'): | |
| return a.union(b) | |
| elif (op == 'diff'): | |
| return a.difference(b) | |
| def searchRel(self,relStatement,statement,wherePart,classes): | def searchRel(self,relStatement,statement,wherePart,classes): |
| """suche relative haufigkeiten (experimental)""" | """suche relative haufigkeiten (experimental)""" |
| ret={} | ret={} |
| Line 499 class ZSQLExtendFolder(Folder,Persistent | Line 547 class ZSQLExtendFolder(Folder,Persistent |
| return pt() | 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""" | """change the Konfiguration""" |
| self.connection_id=connection_id | self.connection_id=connection_id |
| self.weight=weight | self.weight=weight |
| Line 1230 class ZSQLExtendFolder(Folder,Persistent | Line 1278 class ZSQLExtendFolder(Folder,Persistent |
| arg=query.split("=")[0] | arg=query.split("=")[0] |
| if arg[0]=="_": arg="-"+arg[1:] # sicherstellen, dass an Anfang stets "_" | if arg[0]=="_": arg="-"+arg[1:] # sicherstellen, dass an Anfang stets "_" |
| try: | try: |
| queryList[arg]=query.split("=")[1] | queryList[arg]=urllib.unquote_plus(query.split("=")[1]) |
| except: | except: |
| queryList[arg]='' | queryList[arg]='' |