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>