File:  [Repository] / ECHO_content / ECHO_helpers.py
Revision 1.23: download - view: text, annotated - select for diffs - revision graph
Wed Oct 27 15:58:15 2004 UTC (19 years, 7 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
bug in setstartpage fixed

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

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