From a9f947f305fa4c0a59aa64be028cccc7f070bc8b Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 12 Aug 2011 10:56:44 +0530 Subject: [PATCH] fixed issue for utf-8 --- cgi-bin/webnotes/db.py | 26 +++++++++++++++++++++++--- cgi-bin/webnotes/handler.py | 9 +++------ cgi-bin/webnotes/utils/__init__.py | 16 +++++----------- js/form.compressed.js | 2 +- js/utils/handler.js | 2 +- js/widgets/form/clientscriptAPI.js | 3 +-- js/wnf.compressed.js | 2 +- 7 files changed, 35 insertions(+), 25 deletions(-) diff --git a/cgi-bin/webnotes/db.py b/cgi-bin/webnotes/db.py index aae4d5b02d..8d175e317e 100644 --- a/cgi-bin/webnotes/db.py +++ b/cgi-bin/webnotes/db.py @@ -15,9 +15,6 @@ class Database: self.host = host or 'localhost' self.user = user or getattr(defs, 'default_db_name', '') - # password can be empty string - self.password = password==None and getattr(defs, 'db_password', '') or password - if ac_name: self.user = self.get_db_login(ac_name) or defs.default_db_name @@ -28,6 +25,8 @@ class Database: self.in_transaction = 0 self.transaction_writes = 0 self.testing_tables = [] + + self.password = self.get_db_password(ac_name, password) self.connect() if self.user != 'root': @@ -36,6 +35,27 @@ class Database: if webnotes.logger: webnotes.logger.debug('Database object initialized for:%s',self.user) + def get_db_password(self, db_name, password): + """ + Return db password. order of importance: + + 1. password + 2. defs.get_db_password() + 3. defs.db_password + """ + # password can be empty string + if password: + return password + + if hasattr(defs, 'get_db_password'): + return defs.get_db_password(db_name) + + if hasattr(defs, 'db_password'): + return defs.db_password + + else: + return '' + def get_db_login(self, ac_name): return getattr(defs,'db_name_map').get(ac_name, getattr(defs,'default_db_name')) diff --git a/cgi-bin/webnotes/handler.py b/cgi-bin/webnotes/handler.py index 760a96e8e4..f432c91ff8 100755 --- a/cgi-bin/webnotes/handler.py +++ b/cgi-bin/webnotes/handler.py @@ -410,17 +410,14 @@ else: except: # python 2.4 import simplejson as json - try: - str_out = json.dumps(webnotes.response) - except: - str_out = str(webnotes.response).replace(', None', ', ""') + str_out = json.dumps(webnotes.response) - if acceptsGzip and len(str_out)>512: + if acceptsGzip and 1 and len(str_out)>512: out_buf = compressBuf(str_out) print "Content-Encoding: gzip" print "Content-Length: %d" % (len(out_buf)) - print "Content-Type: text/html; Charset: ISO-8859-1" + print "Content-Type: text/html; charset: utf-8" # if there ar additional cookies defined during the request, add them here if webnotes.cookies or webnotes.add_cookies: diff --git a/cgi-bin/webnotes/utils/__init__.py b/cgi-bin/webnotes/utils/__init__.py index f8156046c2..1376ed7d41 100644 --- a/cgi-bin/webnotes/utils/__init__.py +++ b/cgi-bin/webnotes/utils/__init__.py @@ -287,19 +287,13 @@ def cstr(s): """ Convert to string """ - if s==None: + if type(s) in (str, unicode): + return s + elif s==None: return '' else: - if hasattr(s, 'encode'): - try: - s = s.encode('utf-8', 'ignore') - except: - pass - try: - return unicode(s) - except UnicodeDecodeError: - return unicode(s, 'utf-8') - + return str(s) + def str_esc_quote(s): """ Escape quotes diff --git a/js/form.compressed.js b/js/form.compressed.js index b46b5a7095..64ea3993ac 100644 --- a/js/form.compressed.js +++ b/js/form.compressed.js @@ -428,7 +428,7 @@ $c_get_values=function(args,doc,dt,dn,user_callback){var call_back=function(r,rt refresh_field(fl[i],dn,args.table_field);else refresh_field(fl[i]);}} $c('webnotes.widgets.form.get_fields',args,call_back);} -get_server_fields=function(method,arg,table_field,doc,dt,dn,allow_edit,call_back){if(!allow_edit)freeze('Fetching Data...');$c('runserverobj',args={'method':method,'docs':compress_doclist([doc]),'arg':arg},function(r,rt){if(r.message){var d=locals[dt][dn];var field_dict=eval('var a='+r.message+';a');for(var key in field_dict){d[key]=field_dict[key];if(table_field)refresh_field(key,d.name,table_field);else refresh_field(key);}} +get_server_fields=function(method,arg,table_field,doc,dt,dn,allow_edit,call_back){if(!allow_edit)freeze('Fetching Data...');$c('runserverobj',args={'method':method,'docs':compress_doclist([doc]),'arg':arg},function(r,rt){if(r.message){var d=locals[dt][dn];var field_dict=r.message;for(var key in field_dict){d[key]=field_dict[key];if(table_field)refresh_field(key,d.name,table_field);else refresh_field(key);}} if(call_back){doc=locals[doc.doctype][doc.name];call_back(doc,dt,dn);} if(!allow_edit)unfreeze();});} set_multiple=function(dt,dn,dict,table_field){var d=locals[dt][dn];for(var key in dict){d[key]=dict[key];if(table_field)refresh_field(key,d.name,table_field);else refresh_field(key);}} diff --git a/js/utils/handler.js b/js/utils/handler.js index f92bd70403..50a93a626b 100644 --- a/js/utils/handler.js +++ b/js/utils/handler.js @@ -42,7 +42,7 @@ function $c(command, args, fn, on_timeout, no_spinner, freeze_msg) { var rtxt = req.responseText; try { - var r = eval("var a="+rtxt+";a"); + var r = JSON.parse(rtxt); } catch(e) { alert('Handler Exception:' + rtxt); return; diff --git a/js/widgets/form/clientscriptAPI.js b/js/widgets/form/clientscriptAPI.js index ccf64c58c4..f8f37ab06a 100644 --- a/js/widgets/form/clientscriptAPI.js +++ b/js/widgets/form/clientscriptAPI.js @@ -24,8 +24,7 @@ get_server_fields = function(method, arg, table_field, doc, dt, dn, allow_edit, function(r, rt) { if (r.message) { var d = locals[dt][dn]; - var field_dict = eval('var a='+r.message+';a'); - + var field_dict = r.message; for(var key in field_dict) { d[key] = field_dict[key]; if (table_field) refresh_field(key, d.name, table_field); diff --git a/js/wnf.compressed.js b/js/wnf.compressed.js index 11c20e1ccf..95ecd051a4 100644 --- a/js/wnf.compressed.js +++ b/js/wnf.compressed.js @@ -250,7 +250,7 @@ unfreeze();return false;}} var pending_req=0;function newHttpReq(){if(!isIE) var r=new XMLHttpRequest();else if(window.ActiveXObject) var r=new ActiveXObject("Microsoft.XMLHTTP");return r;} -function $c(command,args,fn,on_timeout,no_spinner,freeze_msg){var req=newHttpReq();ret_fn=function(){if(checkResponse(req,on_timeout,no_spinner,freeze_msg)){if(!no_spinner)hide_loading();var rtxt=req.responseText;try{var r=eval("var a="+rtxt+";a");}catch(e){alert('Handler Exception:'+rtxt);return;} +function $c(command,args,fn,on_timeout,no_spinner,freeze_msg){var req=newHttpReq();ret_fn=function(){if(checkResponse(req,on_timeout,no_spinner,freeze_msg)){if(!no_spinner)hide_loading();var rtxt=req.responseText;try{var r=JSON.parse(rtxt);}catch(e){alert('Handler Exception:'+rtxt);return;} if(freeze_msg)unfreeze();if(!validate_session(r,rtxt))return;if(r.exc){errprint(r.exc);};if(r.server_messages){msgprint(r.server_messages);};if(r.docs){LocalDB.sync(r.docs);} saveAllowed=true;if(fn)fn(r,rtxt);}} req.onreadystatechange=ret_fn;req.open("POST",outUrl,true);req.setRequestHeader("ENCTYPE","multipart/form-data");req.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");args['cmd']=command;req.send(makeArgString(args));if(!no_spinner)set_loading();if(freeze_msg)freeze(freeze_msg,1);}