File:  [Repository] / MPIWGWeb / bibliography.py
Revision 1.7.2.7: download - view: text, annotated - select for diffs - revision graph
Thu Sep 7 11:06:41 2006 UTC (17 years, 8 months ago) by dwinter
Branches: r2
new formatting for bibliography

#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)+". &quot; "+"<i>%s</i>"%getBib(foundIB.secondary_title)+" "+getBib(foundIB.volume)+" ("
        if not self.ZSQLisEmpty(foundIB.number):
            ret+=foundIB.number+"&nbsp;"

        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). &quot;" 
        if foundIB.title and (not foundIB.title==""):
            ret+="<i>"+foundIB.title+"</i>."
        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))+". &quot;"
	ret+=getBib(foundIB.title)+".&quot; In: <i>"+getBib(foundIB.secondary_title)+"</i>"
        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+="<i>"+getBib(foundIB.title)+"</i>. "
        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)+". &quot;"
	ret+=foundIB.title+".&quot; <i>"+foundIB.secondary_title+"</i>, "
        ret+=foundIB.date+"."+foundIB.year+","
        if foundIB.pages and (not foundIB.pages==''):
            ret+=foundIB.pages+". "


            
            
    return cleanPunctuation(ret)

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>