--- ECHO_content/ECHO_collection.py 2004/08/17 15:24:38 1.164 +++ ECHO_content/ECHO_collection.py 2004/08/27 22:57:57 1.165 @@ -270,6 +270,13 @@ def getText(nodelist): rc = rc + node.data return rc +def getTextFromNode(nodename): + nodelist=nodename.childNodes + rc = "" + for node in nodelist: + if node.nodeType == node.TEXT_NODE: + rc = rc + node.data + return rc def sendFile(self, filename, type): """sends an object or a local file (in the product) as response""" @@ -666,7 +673,7 @@ class ECHO_fullText(ZopePageTemplate): # 3 handler functions def start_element(name, attrs): global retLex - print name + retLex+=createTag(name,attrs) def end_element(name): global retLex @@ -689,7 +696,7 @@ class ECHO_fullText(ZopePageTemplate): p.CharacterDataHandler = char_data p.Parse(lemmatized.encode('utf-8'),1) - print repr(lemmatized.encode('utf-8')) + #print repr(lemmatized.encode('utf-8')) return retLex @@ -797,7 +804,7 @@ class ECHO_resource(Folder,Persistent): """showrdf""" self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') ret="""\n\n""" - ret+=self.getRDF(urn="echo:collectionroot")+"\n" + ret+=self.getRDF(urn="echo:colllectionroot")+"\n" ret+="""""" return ret @@ -2934,13 +2941,214 @@ def manage_addECHO_userFolderForm(self): """add a user folder form""" return manage_addECHO_userFolder(self) +def getEdges(seqs,urn): + """edges""" + ret=[] + #print urn,seqs + for seqsList in seqs[urn]: + + try: + for seq in seqsList: + ret+=seq.getElementsByTagName("RDF:li") + except: + ret+=seqsList.getElementsByTagName("RDF:li") + return ret + +def createSubs(self,seqs,descrs,urn): + """create subs""" + for edge in getEdges(seqs,urn): + cn=createNode(self,descrs[edge.getAttribute('RDF:resource')]) + if cn[0]=="CDLI_group": + #print "HHHHHH",cn[1],seqs,descrs,cn[2] + createSubs(cn[1],seqs,descrs,cn[2]) +def getEdges2(seqs,urn): + """edges""" + ret=[] + #print urn,seqs + + return seqs[urn] + +def createSubs2(self,seqs,descrs,urn,level=0): + """create subs""" + + for edge in getEdges2(seqs,urn): + print "urnXX",urn.encode('utf-8'),level + cn=createNode2(self,descrs,edge) + if cn[0]=="CDLI_group": + + createSubs2(cn[1],seqs,descrs,cn[2],level+1) + print "urnddonesubs",urn.encode('utf-8') + print "urndonenode",urn.encode('utf-8') + return + +def createNode2(self,descrs,node): + name=descrs[node]['name'] + type=descrs[node]['type'] + urn=node + print " will create",node.encode('utf-8') + id=re.sub('[^a-zA-Z0-9]','',name).encode('ascii','ignore') + #print "id",id + #print type + #self.REQUEST.RESPONSE.write("

%s

\n"%id) + if type=="CDLI_group": + + try: + manage_addECHO_collection(self,id,name,name,"","","","","") + + except: + self.REQUEST.RESPONSE.write("

Error%s

\n"%id) + + self.REQUEST.RESPONSE.write("

Creates:%s

\n"%getattr(self,id).absolute_url()) + + return type,getattr(self,id),urn + + if type=="CDLI_item": + try: + manage_addECHO_resource(self,id,name,name,"","",urn,"","") + except: + self.REQUEST.RESPONSE.write("

Error%s

\n"%id) + self.REQUEST.RESPONSE.write("

Creates:%s

\n"%getattr(self,id).absolute_url()) + + + return "XX" + +def createNode(self,nodes): + for node in nodes: + name=getTextFromNode(node.getElementsByTagName("ECHONAVIGATION:name")[0]) + type=getTextFromNode(node.getElementsByTagName("ECHONAVIGATION:type")[0]) + urn=node.getAttribute("RDF:about") + + id=re.sub('[^a-zA-Z0-9]','',name).encode('ascii','ignore') + #print "id",id + #print type + self.REQUEST.RESPONSE.write("

%s

\n"%id) + if type=="CDLI_group": + print self.getId() + + manage_addECHO_collection(self,id,name,name,"","","","","") + print "done::::",getattr(self,id) + return type,getattr(self,id),urn + + if type=="CDLI_item": + manage_addECHO_resource(self,id,name,name,"","",urn,"","") + return "XX" + + + class ECHO_root(Folder,Persistent,Implicit): """ECHO Root Folder""" security=ClassSecurityInfo() meta_type="ECHO_root" - + + def getTablet(self,item): + read=urllib.urlopen("http://enlil.museum.upenn.edu/cgi-bin/cdlget.plx?item=%s&project=ncdl"%item).read() + + read=re.sub("\[search\]","search",read) + + return read[read.find("")+6:read.rfind("")] + + def generateFromRDF2(self): + """generate from RDF2""" + global seqs + seqs={} + global descrs + descrs={} + global key + key="" + global value + value="" + def start_element(name,attrs): + + global seqs + global descrs + global key + global value + seq="" + if name=="RDF:Seq": + key=attrs.get('RDF:about') + try: # teste ob liste + x=seqs[key][0] + except: + + seqs[key]=[] + + + elif name=="RDF:Description": + key=attrs.get('RDF:about') + + + elif name=="RDF:li": + name=attrs.get('RDF:resource') + seqs[key].append(name) + + elif name=="ECHONAVIGATION:type": + value="type" + + elif name=="ECHONAVIGATION:name": + value="name" + elif name=="ECHONAVIGATION:linkClickable": + value="linkClickable" + + def end_element(name): + """nothing""" + key="" + value="" + + def char_data(data): + """nothing""" + + data=re.sub("\n","",data) + try: + if descrs[key].has_key(value): + descrs[key][value]+=data + else: + descrs[key][value]=data + except: + + descrs[key]={} + descrs[key][value]=data + + p = xml.parsers.expat.ParserCreate() + + p.StartElementHandler = start_element + p.EndElementHandler = end_element + p.CharacterDataHandler = char_data + fileName="/Users/dwinter/Documents/Projekte/CDLI/test11.rdf" + + p.ParseFile(file(fileName)) + self.REQUEST.RESPONSE.write("

Start

") + createSubs2(self,seqs,descrs,"/Cuneiform Corpus") + self.REQUEST.RESPONSE.write("

done

") + print "done" + + + return "done" + + def generateFromRDF(self): + """generate Structure from rdf""" + dom=xml.dom.minidom.parse("/Users/dwinter/Documents/Projekte/CDLI/test10.rdf") + seqs={} + descrs={} + for seq in dom.getElementsByTagName("RDF:Seq"): + key=seq.getAttribute('RDF:about') + try: + seqs[key].append(seq) + except: + seqs[key]=[seq] + + + for descr in dom.getElementsByTagName("RDF:Description"): + key=descr.getAttribute('RDF:about') + try: + descrs[key].append(descr) + except: + descrs[key]=[descr] + createSubs(self,seqs,descrs,"echo:collectionroot") + + + def changeWeightsInCollection(self): """change all lables of a collection""" ret=""