File:  [Repository] / ECHO_content / ECHO_helpers.py
Revision 1.21: download - view: text, annotated - select for diffs - revision graph
Wed Oct 27 14:23:24 2004 UTC (19 years, 7 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
copyTitleToInfoXMLFolder added

    1: import socket
    2: import urllib
    3: import xml.dom.minidom
    4: 
    5: def getText(nodelist):
    6: 
    7:     rc = ""
    8:     for node in nodelist:
    9:     	if node.nodeType == node.TEXT_NODE:
   10:            rc = rc + node.data
   11:     return rc
   12: 
   13: 
   14: def readFieldFromXML(meta_url,parent,field):
   15: 	"""lesespezifisches metadatum"""
   16: 	
   17: 	try:
   18: 		dom=xml.dom.minidom.parse(meta_url)
   19: 
   20: 	except:
   21: 		fh=urllib.urlopen(meta_url)
   22: 		dom=xml.dom.minidom.parse(fh)
   23: 	if not dom: return None
   24: 
   25: 	parent=dom.getElementsByTagName(parent)
   26: 	if not dom: return None
   27: 
   28: 	field=parent[0].getElementsByTagName(field)
   29: 
   30: 	if not field: return None
   31: 
   32: 	return getText(field[0].childNodes)
   33: 	
   34: 	
   35: 	      
   36: def urlopen(url):
   37: 	"""urlopen mit timeout"""
   38: 	socket.setdefaulttimeout(2)
   39: 	ret=urllib.urlopen(url)
   40: 	socket.setdefaulttimeout(5)
   41: 	return ret
   42: #	urlopener = urllib.URLopener()
   43: #
   44: #	try:		
   45: #		con = urlopener.open(url)
   46: #		return con
   47: #	except timeoutsocket.Timeout:
   48: #		return None
   49: 
   50: 
   51: displayTypes = ['ZSQLExtendFolder','ZSQLBibliography','ECHO_group','ECHO_collection','ECHO_resource','ECHO_link','ECHO_sqlElement','ECHO_pageTemplate','ImageCollectionIFrame','VLP_resource','VLP_essay','ECHO_ZCatalogElement']
   52: 
   53: 
   54: def checkOnlyOneInGroup(object): 
   55: 	"""check if object is a group and if it containt only one element it return this element"""
   56: 	displayedObjects=object.ZopeFind(object,obj_metatypes=displayTypes)
   57: 	if len(displayedObjects)==1: # nur ein Object dann redirect auf dieses Object
   58: 
   59: 		return displayedObjects[0][1]
   60: 	else:
   61: 		return object
   62: 
   63: def getSubCols(self,sortfield="weight",subColTypes= displayTypes):
   64: 
   65:         
   66:         ids=[]
   67: 	displayedObjects=self.ZopeFind(self,obj_metatypes=subColTypes)
   68: 	
   69: 	
   70: 	for entry in displayedObjects:
   71:             object=entry[1]
   72:             try:
   73:                 if object.meta_type in subColTypes:
   74: 			ids.append(object)
   75:                     
   76:             except:
   77:                 """nothing"""
   78:         try:
   79:             sortfield=self.sortfield
   80:         except:
   81:             """nothing"""
   82:             
   83:         tmplist=[]
   84:         for x in ids:
   85:             if hasattr(x,sortfield):
   86:                 try:
   87: 
   88:                     x=int(x)
   89:                 except:
   90:                     """nothing"""
   91:                 tmp=getattr(x,sortfield)
   92:             else:
   93:                 tmp=10000000
   94:             tmplist.append((tmp,x))
   95:         tmplist.sort()
   96:         return [x for (key,x) in tmplist]

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