Annotation of ECHO_content/ECHO_helpers.py, revision 1.24
1.17 dwinter 1: import socket
1.15 dwinter 2: import urllib
1.21 dwinter 3: import xml.dom.minidom
1.24 ! dwinter 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
1.21 dwinter 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"""
1.16 dwinter 24:
1.21 dwinter 25: try:
26: dom=xml.dom.minidom.parse(meta_url)
27:
28: except:
1.22 dwinter 29: try:
30: fh=urllib.urlopen(meta_url)
31: dom=xml.dom.minidom.parse(fh)
32: except:
33: return None
1.21 dwinter 34: if not dom: return None
35:
36: parent=dom.getElementsByTagName(parent)
1.23 dwinter 37: if not parent: return None
1.21 dwinter 38:
39: field=parent[0].getElementsByTagName(field)
40:
41: if not field: return None
42:
43: return getText(field[0].childNodes)
44:
45:
46:
1.15 dwinter 47: def urlopen(url):
48: """urlopen mit timeout"""
1.20 dwinter 49: socket.setdefaulttimeout(2)
50: ret=urllib.urlopen(url)
1.18 dwinter 51: socket.setdefaulttimeout(5)
1.20 dwinter 52: return ret
1.17 dwinter 53: # urlopener = urllib.URLopener()
54: #
55: # try:
56: # con = urlopener.open(url)
57: # return con
58: # except timeoutsocket.Timeout:
59: # return None
1.15 dwinter 60:
61:
1.19 dwinter 62: 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 63:
1.6 dwinter 64:
1.14 dwinter 65: def checkOnlyOneInGroup(object):
1.6 dwinter 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
1.8 dwinter 69:
1.6 dwinter 70: return displayedObjects[0][1]
71: else:
72: return object
73:
74: def getSubCols(self,sortfield="weight",subColTypes= displayTypes):
1.1 dwinter 75:
1.3 dwinter 76:
1.1 dwinter 77: ids=[]
1.6 dwinter 78: displayedObjects=self.ZopeFind(self,obj_metatypes=subColTypes)
79:
80:
81: for entry in displayedObjects:
1.3 dwinter 82: object=entry[1]
1.1 dwinter 83: try:
84: if object.meta_type in subColTypes:
1.6 dwinter 85: ids.append(object)
1.1 dwinter 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:
1.7 dwinter 98:
1.1 dwinter 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>