|
|
| version 1.123, 2007/12/11 15:47:52 | version 1.130, 2009/09/23 12:30:50 |
|---|---|
| Line 127 class ZSQLExtendFolder(Folder,Persistent | Line 127 class ZSQLExtendFolder(Folder,Persistent |
| """quote str for sql""" | """quote str for sql""" |
| return sql_quote(str) | return sql_quote(str) |
| def unicodify(self, s): | |
| """return unicode object for string (utf-8 or latin1) or unicode object s""" | |
| return unicodify(s) | |
| def utf8ify(self, s): | |
| """return utf-8 encoded string object for string or unicode object s""" | |
| return utf8ify(s) | |
| def normalizeField(self,table,fieldname, newFieldName=None,mode="alter", RESPONSE=None): | def normalizeField(self,table,fieldname, newFieldName=None,mode="alter", RESPONSE=None): |
| """normalize a field, d.h. entfernt alle diakritischen Zeichen und ersetzt diese | """normalize a field, d.h. entfernt alle diakritischen Zeichen und ersetzt diese |
| Line 364 class ZSQLExtendFolder(Folder,Persistent | Line 372 class ZSQLExtendFolder(Folder,Persistent |
| ''' | ''' |
| Import FileMaker XML file (FMPXMLRESULT format) into the table. | Import FileMaker XML file (FMPXMLRESULT format) into the table. |
| @param dsn: database connection string | @param dsn: database connection string |
| @param table: name of the table the xml shall be imported into | @param table: name of the table the xml shall be imported into (may be comma-separated list) |
| @param uploadfile: xmlfile file | @param uploadfile: xmlfile file |
| @param update_fields: (optional) list of fields to update; default is to create all fields | @param update_fields: (optional) list of fields to update; default is to create all fields |
| @param id_field: (optional) field which uniquely identifies an entry for updating purposes. | @param id_field: (optional) field which uniquely identifies an entry for updating purposes. |
| Line 390 class ZSQLExtendFolder(Folder,Persistent | Line 398 class ZSQLExtendFolder(Folder,Persistent |
| if not dsn: | if not dsn: |
| dsn=self.getConnectionObj().connection_string | dsn=self.getConnectionObj().connection_string |
| tablelist=table.split(',') | |
| logging.debug("tablelist: %s" %tablelist) | |
| #table=tables | |
| for t in tablelist : | |
| logging.debug("table: %s" %table) | |
| options=Options() | options=Options() |
| options.dsn=dsn | options.dsn=dsn |
| options.table=table | options.table=t |
| options.filename=filename | options.filename=filename |
| options.update_fields=update_fields | options.update_fields=update_fields |
| options.id_field=id_field | options.id_field=id_field |
| Line 409 class ZSQLExtendFolder(Folder,Persistent | Line 423 class ZSQLExtendFolder(Folder,Persistent |
| # set up logging to response as plain text | # set up logging to response as plain text |
| RESPONSE.setHeader("Content-Type","text/plain; charset=utf-8") | RESPONSE.setHeader("Content-Type","text/plain; charset=utf-8") |
| RESPONSE.write("Import FMPXML file...\n\n") | RESPONSE.write("Import FMPXML file...\n\n") |
| RESPONSE.flush() | |
| loghandler = logging.StreamHandler(RESPONSE) | loghandler = logging.StreamHandler(RESPONSE) |
| if debug: | if debug: |
| loghandler.setLevel(logging.DEBUG) | loghandler.setLevel(logging.DEBUG) |
| Line 420 class ZSQLExtendFolder(Folder,Persistent | Line 435 class ZSQLExtendFolder(Folder,Persistent |
| importFMPXML(options) | importFMPXML(options) |
| os.remove(filename) | |
| if RESPONSE and log_to_response: | if RESPONSE and log_to_response: |
| loghandler.flush() | loghandler.flush() |
| RESPONSE.write("\n\n DONE!") | RESPONSE.write("\n\n DONE!") |
| return | |
| if RESPONSE and redirect_url: | elif RESPONSE and redirect_url: |
| RESPONSE.redirect(redirect_url) | RESPONSE.redirect(redirect_url) |
| os.remove(filename) | |
| def generateIndex(self,field,index_name,table,RESPONSE=None): | def generateIndex(self,field,index_name,table,RESPONSE=None): |
| """erzeuge ein Index Objekt einem Feld (experimental) | """erzeuge ein Index Objekt einem Feld (experimental) |
| Line 647 class ZSQLExtendFolder(Folder,Persistent | Line 663 class ZSQLExtendFolder(Folder,Persistent |
| @param _value: String der gesucht werden soll, gesucht wird nach allen Worten des Strings, die durch " "-getrennt sind. | @param _value: String der gesucht werden soll, gesucht wird nach allen Worten des Strings, die durch " "-getrennt sind. |
| @param _idField: Feld mit id fŸr die identifikation gleicher EintrŠge | @param _idField: Feld mit id fŸr die identifikation gleicher EintrŠge |
| @param _additionalStatement: (optional) Zusaetzliches SQL Statement, dass zwischen dem ersten "select from" und dem ersten "where" eingegefŸgt wird. | @param _additionalStatement: (optional) Zusaetzliches SQL Statement, dass zwischen dem ersten "select from" und dem ersten "where" eingegefŸgt wird. |
| @param _subselectAddition: (optiona) Zusaetliche SQL Statement die hinter das select statement der subselects eingefuegt werde. | |
| @param _select: (optional) Alternativer Wert fŸr den ersten SELECT Aufruf. | @param _select: (optional) Alternativer Wert fŸr den ersten SELECT Aufruf. |
| @param _storename: (optional) Name fuer die Zwischenspeicherung von Werten in der Session | @param _storename: (optional) Name fuer die Zwischenspeicherung von Werten in der Session |
| """ | """ |
| Line 1021 class ZSQLExtendFolder(Folder,Persistent | Line 1038 class ZSQLExtendFolder(Folder,Persistent |
| def ZSQLAdd(self,format=None,RESPONSE=None,args=None,**argv): | def ZSQLAdd(self,format=None,RESPONSE=None,args=None,_useRequest=True,**argv): |
| """Neuer Eintrag""" | """Neuer Eintrag""" |
| if args: | if args: |
| Line 1031 class ZSQLExtendFolder(Folder,Persistent | Line 1048 class ZSQLExtendFolder(Folder,Persistent |
| qs_temp=[] | qs_temp=[] |
| if _useRequest: | |
| for a in self.REQUEST.form.keys(): | for a in self.REQUEST.form.keys(): |
| qs_temp.append(a+"="+urllib.quote(str(self.REQUEST.form[a]))) | qs_temp.append(a+"="+urllib.quote(str(self.REQUEST.form[a]))) |
| Line 1047 class ZSQLExtendFolder(Folder,Persistent | Line 1065 class ZSQLExtendFolder(Folder,Persistent |
| addList={} | addList={} |
| for q in qs.split(","): | for q in qs.split(","): |
| if len(q.split("="))<2: | |
| continue | |
| name=re.sub("r'+'"," ",q.split("=")[0].lower()) | name=re.sub("r'+'"," ",q.split("=")[0].lower()) |
| value=q.split("=")[1] | value=q.split("=")[1] |
| value=re.sub(r'\+'," ",value) | value=re.sub(r'\+'," ",value) |
| value=urllib.unquote(value) | value=urllib.unquote(value) |
| Line 1116 class ZSQLExtendFolder(Folder,Persistent | Line 1137 class ZSQLExtendFolder(Folder,Persistent |
| table=urllib.unquote(value) | table=urllib.unquote(value) |
| elif name=="-identify": | elif name=="-identify": |
| identify=urllib.unquote(value) | identify=urllib.unquote(value) |
| identify="lower("+identify.split("=")[0]+")="+sql_quote(identify.split("=")[1].lower()) | # old code did identify with lower() which doesn't work for oids |
| #identify="lower("+identify.split("=")[0]+")="+sql_quote(identify.split("=")[1].lower()) | |
| elif name=="-format": | elif name=="-format": |
| format=urllib.unquote(value) | format=urllib.unquote(value) |
| #elif (not (name[0]=="-" or name[0]=="_")) and (not len(value)==0): | #elif (not (name[0]=="-" or name[0]=="_")) and (not len(value)==0): |
| Line 1482 class ZSQLExtendFolder(Folder,Persistent | Line 1504 class ZSQLExtendFolder(Folder,Persistent |
| elif op=="numerical": | elif op=="numerical": |
| term=analyseIntSearch(value) | term=analyseIntSearch(value) |
| tmp=(name+" "+term) | tmp=(namealt+" "+term) # take namealt without LOWER |
| elif op=="grep": | elif op=="grep": |
| tmp=(name+" ~* "+sql_quote(value)) | tmp=(name+" ~* "+sql_quote(value)) |
| elif op=="one": | elif op=="one": |
| Line 1532 class ZSQLExtendFolder(Folder,Persistent | Line 1554 class ZSQLExtendFolder(Folder,Persistent |
| elif op=="numerical": | elif op=="numerical": |
| term=analyseIntSearch(value) | term=analyseIntSearch(value) |
| tmp=(name+" "+term) | tmp=(namealt+" "+term) # take namealt without LOWER |
| elif op=="grep": | elif op=="grep": |
| tmp=(name+" ~* "+sql_quote(value)) | tmp=(name+" ~* "+sql_quote(value)) |
| elif op=="one": | elif op=="one": |