#TO DO author_semi_kolon etc. ersetzen durch Funktionen def formatBibliography(self,found): ret="" if found.id_institutsbibliographie and (not found.id_institutsbibliographie==''): ret+=formatBiblHelp(self,found,table='institutsbiblio',id=found.id_institutsbibliographie) else: ret+=formatBiblHelp(self,found,table='bibliography',id=found.id_gen_bib) return ret def CRListToSemicolon(self,listStr,showall=False): if listStr: listStr.replace(";","\n") list=listStr.split("\n") if not showall: #filter eigentuemer der hoempage for x in list: if x==self.title: # loesche den Eigentuemer der Hoempage aus der Liste del(list[list.index(x)]) if len(list)==0: # kein anderer Autor return None elif showall: return "; ".join(list) else: return "(joint with %s)"%"; ".join(list) else: return None def getBib(value): if value: return value else: return "" return ret def cleanPunctuation(teststr): """clean up punktuation""" ret="" signs="!:;.,?" for x in teststr: if x in signs: if (len(ret)>0) and (ret[-1]==' '): ret=ret[0:-1] ret+=x return ret def formatBiblHelp(self,found,table,id,foundIB=None): ret="" if not foundIB: try: foundIB=self.ZSQLInlineSearch(_table=table,id=id)[0] except: return ret if foundIB.reference_type.lower()=='journal article': if CRListToSemicolon(foundIB.author): ret+=getBib(CRListToSemicolon(foundIB.author))+". "" ret+=getBib(foundIB.title)+". " "+"%s"%getBib(foundIB.secondary_title)+" "+getBib(foundIB.volume)+" (" if not self.ZSQLisEmpty(foundIB.number): ret+=foundIB.number+" " if foundIB.year: ret+=getattr(foundIB,'year','') ret+=")" if foundIB.pages and (not foundIB.pages)=='': ret+=": "+foundIB.pages+"." elif foundIB.reference_type.lower()=='edited book': if CRListToSemicolon(self,foundIB.author): ret+=CRListToSemicolon(self,foundIB.author)+" (Editor/s). "" if foundIB.title and (not foundIB.title==""): ret+=""+foundIB.title+"." if foundIB.place_published and (not foundIB.place_published==''): ret+=foundIB.place_published+": " if foundIB.publisher and (not foundIB.publisher==''): ret+=foundIB.publisher+", " ret+=getBib(foundIB.year)+"." elif foundIB.reference_type.lower()=='book section' or foundIB.reference_type.lower()=='in book': if CRListToSemicolon(self,foundIB.author): ret+=getBib(CRListToSemicolon(self,foundIB.author))+". "" ret+=getBib(foundIB.title)+"." In: "+getBib(foundIB.secondary_title)+"" if (CRListToSemicolon(self,foundIB.secondary_author,showall=True)) and (not CRListToSemicolon(self,foundIB.secondary_author,showall=True)==''): ret+=", eds.: "+CRListToSemicolon(self,foundIB.secondary_author,showall=True) ret+=". " if foundIB.pages and (not foundIB.pages)=='': ret+=foundIB.pages+". " if foundIB.place_published and (not foundIB.place_published==''): ret+=foundIB.place_published+": " if foundIB.publisher and (not foundIB.publisher==''): ret+=foundIB.publisher+", " ret+=getBib(foundIB.year)+"." elif foundIB.reference_type.lower()=='book': if CRListToSemicolon(self,foundIB.author): ret+=getBib(CRListToSemicolon(self,foundIB.author))+". " ret+=""+getBib(foundIB.title)+". " if foundIB.pages and (not foundIB.pages==''): ret+=foundIB.pages+". " if foundIB.place_published and (not foundIB.place_published==''): ret+=foundIB.place_published+": " if foundIB.publisher and (not foundIB.publisher==''): ret+=foundIB.publisher+", " ret+=getBib(foundIB.year)+"." elif foundIB.reference_type.lower()=='newspaper article': if CRListToSemicolon(self,foundIB.author): ret+=CRListToSemicolon(self,foundIB.author)+". "" ret+=foundIB.title+"." "+foundIB.secondary_title+", " ret+=foundIB.date+"."+foundIB.year+"," if foundIB.pages and (not foundIB.pages==''): ret+=foundIB.pages+". " return cleanPunctuation(ret)