--- MPIWGWeb/MPIWGProjects.py 2007/04/26 18:09:44 1.47.2.75 +++ MPIWGWeb/MPIWGProjects.py 2007/10/18 12:00:17 1.47.2.79 @@ -110,6 +110,29 @@ def sortI(x,y): except: return cmp(x[1],y[1]) + +def unicodify(str): + """decode str (utf-8 or latin-1 representation) into unicode object""" + if not str: + return "" + if type(str) is StringType: + try: + return str.decode('utf-8') + except: + return str.decode('latin-1') + else: + return str + +def utf8ify(str): + """encode unicode object or string into byte string in utf-8 representation""" + if not str: + return "" + if type(str) is StringType: + return str + else: + return str.encode('utf-8') + + class MPIWGLink(SimpleItem): """create a symbolic link to another page""" @@ -330,15 +353,22 @@ class MPIWGRoot(ZSQLExtendFolder): if not str: return "" if type(str) is StringType: - try: - return str.decode('utf-8') - except: - return str.decode('latin-1') + try: + return str.decode('utf-8') + except: + return str.decode('latin-1') else: - return str + def getat(self,array,idx=0,default=None): + """return array element idx or default (but no exception)""" + if len(array) <= idx: + return default + else: + return array[idx] + + def browserCheck(self): """check the browsers request to find out the browser type""" bt = {} @@ -837,14 +867,13 @@ class MPIWGRoot(ZSQLExtendFolder): ret+="Created %s \n"%e_mail created=True except: - msg="Cannot create new user %s (%s %s)"%(e_mail,sys.exc_info()[0],sys.exc_info()[1]) logging.error(msg) ret+=msg+"\n" created=False if created: - qstr="update personal_www set web_object_created='yes',e_mail='%s' where key=%s"%(e_mail,self.ZSQLQuote(k)) + qstr="update personal_www set web_object_created='yes',e_mail='%s@mpiwg-berlin.mpg.de' where key=%s"%(e_mail,self.ZSQLQuote(k)) self.ZSQLQuery(qstr) return ret @@ -1588,6 +1617,9 @@ class MPIWGProject(CatalogAware,Folder): meta_type='MPIWGProject' default_catalog='ProjectCatalog' + def decode(self,str): + """return unicode object""" + return unicodify(str) def sortedByPlace(self,metatype): """find metatype and sort by place""" @@ -2274,7 +2306,10 @@ class MPIWGProject(CatalogAware,Folder): if (text5=="
") or (text5=="
"): text5="" - return text5.encode('utf-8') + logging.debug("getcontent: field=%s filter=%s -> %s"%(field,filter,repr(text5))) + #return unicodify(text5) + return utf8ify(text5) # return as utf-8 byte string + def showImagesOfPage(self,imageUrl=None): """show Images of project"""