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>