import socket
import urllib
import xml.dom.minidom
def getText(nodelist):
rc = ""
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc = rc + node.data
return rc
def readFieldFromXML(meta_url,parent,field):
"""lesespezifisches metadatum"""
try:
dom=xml.dom.minidom.parse(meta_url)
except:
try:
fh=urllib.urlopen(meta_url)
dom=xml.dom.minidom.parse(fh)
except:
return None
if not dom: return None
parent=dom.getElementsByTagName(parent)
if not dom: return None
field=parent[0].getElementsByTagName(field)
if not field: return None
return getText(field[0].childNodes)
def urlopen(url):
"""urlopen mit timeout"""
socket.setdefaulttimeout(2)
ret=urllib.urlopen(url)
socket.setdefaulttimeout(5)
return ret
# urlopener = urllib.URLopener()
#
# try:
# con = urlopener.open(url)
# return con
# except timeoutsocket.Timeout:
# return None
displayTypes = ['ZSQLExtendFolder','ZSQLBibliography','ECHO_group','ECHO_collection','ECHO_resource','ECHO_link','ECHO_sqlElement','ECHO_pageTemplate','ImageCollectionIFrame','VLP_resource','VLP_essay','ECHO_ZCatalogElement']
def checkOnlyOneInGroup(object):
"""check if object is a group and if it containt only one element it return this element"""
displayedObjects=object.ZopeFind(object,obj_metatypes=displayTypes)
if len(displayedObjects)==1: # nur ein Object dann redirect auf dieses Object
return displayedObjects[0][1]
else:
return object
def getSubCols(self,sortfield="weight",subColTypes= displayTypes):
ids=[]
displayedObjects=self.ZopeFind(self,obj_metatypes=subColTypes)
for entry in displayedObjects:
object=entry[1]
try:
if object.meta_type in subColTypes:
ids.append(object)
except:
"""nothing"""
try:
sortfield=self.sortfield
except:
"""nothing"""
tmplist=[]
for x in ids:
if hasattr(x,sortfield):
try:
x=int(x)
except:
"""nothing"""
tmp=getattr(x,sortfield)
else:
tmp=10000000
tmplist.append((tmp,x))
tmplist.sort()
return [x for (key,x) in tmplist]
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>