Annotation of ECHO_content/ECHO_helpers.py, revision 1.21
1.17 dwinter 1: import socket
1.15 dwinter 2: import urllib
1.21 ! dwinter 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"""
1.16 dwinter 16:
1.21 ! dwinter 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:
1.15 dwinter 36: def urlopen(url):
37: """urlopen mit timeout"""
1.20 dwinter 38: socket.setdefaulttimeout(2)
39: ret=urllib.urlopen(url)
1.18 dwinter 40: socket.setdefaulttimeout(5)
1.20 dwinter 41: return ret
1.17 dwinter 42: # urlopener = urllib.URLopener()
43: #
44: # try:
45: # con = urlopener.open(url)
46: # return con
47: # except timeoutsocket.Timeout:
48: # return None
1.15 dwinter 49:
50:
1.19 dwinter 51: displayTypes = ['ZSQLExtendFolder','ZSQLBibliography','ECHO_group','ECHO_collection','ECHO_resource','ECHO_link','ECHO_sqlElement','ECHO_pageTemplate','ImageCollectionIFrame','VLP_resource','VLP_essay','ECHO_ZCatalogElement']
1.11 dwinter 52:
1.6 dwinter 53:
1.14 dwinter 54: def checkOnlyOneInGroup(object):
1.6 dwinter 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
1.8 dwinter 58:
1.6 dwinter 59: return displayedObjects[0][1]
60: else:
61: return object
62:
63: def getSubCols(self,sortfield="weight",subColTypes= displayTypes):
1.1 dwinter 64:
1.3 dwinter 65:
1.1 dwinter 66: ids=[]
1.6 dwinter 67: displayedObjects=self.ZopeFind(self,obj_metatypes=subColTypes)
68:
69:
70: for entry in displayedObjects:
1.3 dwinter 71: object=entry[1]
1.1 dwinter 72: try:
73: if object.meta_type in subColTypes:
1.6 dwinter 74: ids.append(object)
1.1 dwinter 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:
1.7 dwinter 87:
1.1 dwinter 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>