File:  [Repository] / ECHO_content / ECHO_helpers.py
Revision 1.24: download - view: text, annotated - select for diffs - revision graph
Thu Oct 28 13:38:40 2004 UTC (19 years, 7 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
displaytypes fuer navigationshierarchie  nun in echo_nav konfigurierbar

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

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