--- ECHO_content/ECHO_collection.py 2004/08/17 15:24:38 1.164 +++ ECHO_content/ECHO_collection.py 2004/08/31 17:20:31 1.167 @@ -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""" @@ -513,6 +520,7 @@ class ECHO_copyright(Folder): {'label':'Main Config','action':'ECHO_copyright_configForm'}, ) + def ECHO_copyright_configForm(self): """change form""" pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_copyright').__of__(self) @@ -666,7 +674,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 +697,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 +805,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 +2942,162 @@ def manage_addECHO_userFolderForm(self): """add a user folder form""" return manage_addECHO_userFolder(self) + + +def createNode(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" + + class ECHO_root(Folder,Persistent,Implicit): """ECHO Root Folder""" security=ClassSecurityInfo() meta_type="ECHO_root" + + ###CDLI adds -> have to be removed + def getTablet(self,item): + #print "getTablet" + try: + 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("")] + except: + return "

Sorry no connection to the data server enlil.museum.upenn.edu

" + #return "http://enlil.museum.upenn.edu/cgi-bin/cdlget.plx?item=%s&project=ncdl" + ###END CDLI add + + + def generateFromRDFForm(self): + """change form""" + pt=PageTemplateFile('Products/ECHO_content/zpt/generateFromRDFForm').__of__(self) + pt.content_type="text/html" + return pt() + + def generateFromRDF(self,file,startNode="/Cuneiform Corpus"): + + """generate from RDF""" + + global seqs + seqs={} + global descrs + descrs={} + global key + key="" + global value + value="" + + def getEdges(seqs,urn): + """edges""" + ret=[] + return seqs[urn] + + def createSubs(self,seqs,descrs,urn,level=0): + """create subs""" + for edge in getEdges(seqs,urn): + cn=createNode(self,descrs,edge) + if cn[0]=="CDLI_group": + createSubs(cn[1],seqs,descrs,cn[2],level+1) + return + + 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 + + + p.ParseFile(file) + self.REQUEST.RESPONSE.write("

Start

") + createSubs(self,seqs,descrs,startNode) + self.REQUEST.RESPONSE.write("

done

") + #print "done" + + + return "done" + + + def changeWeightsInCollection(self): """change all lables of a collection""" ret="" @@ -2967,7 +3124,9 @@ class ECHO_root(Folder,Persistent,Implic {'label':'Main Config','action':'ECHO_copyright_configForm'}, {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'}, {'label':'Change Weights','action':'changeWeights'}, - ) + {'label':'Generate from RDF','action':'generateFromRDFForm'}, + +) def showRDF(self): @@ -3233,6 +3392,26 @@ class ECHO_root(Folder,Persistent,Implic return "changed all contenttypes in: "+self.title + def deleteCache(self,obj=None,RESPONSE=None): + """setze alle collections auf cache = CacheManager""" + + + if not obj: + obj = self + + entries=obj.ZopeFind(obj,search_sub=1) + + for entry in entries: + if hasattr(entry[1],'_v_hash'): + entry[1]._v_hash=None + + + + + return "changed all CM in: "+self.title + + + def ECHO_newViewerLink(self,obj=None): """change links (:86 faellt weg)""" @@ -3313,7 +3492,7 @@ class ECHO_root(Folder,Persistent,Implic def xml2html(self,str,quote="yes"): """link2html fuer VLP muss hier noch raus""" - print str + #print str if str: if quote=="yes2": str=re.sub("\&","&",str)