Annotation of ECHO_content/ECHO_helpers.py, revision 1.22

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:
1.22    ! dwinter    21:        try:
        !            22:            fh=urllib.urlopen(meta_url)
        !            23:            dom=xml.dom.minidom.parse(fh)
        !            24:            except:
        !            25:            return None
1.21      dwinter    26:    if not dom: return None
                     27: 
                     28:    parent=dom.getElementsByTagName(parent)
                     29:    if not dom: 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:          
1.15      dwinter    39: def urlopen(url):
                     40:    """urlopen mit timeout"""
1.20      dwinter    41:    socket.setdefaulttimeout(2)
                     42:    ret=urllib.urlopen(url)
1.18      dwinter    43:    socket.setdefaulttimeout(5)
1.20      dwinter    44:    return ret
1.17      dwinter    45: #  urlopener = urllib.URLopener()
                     46: #
                     47: #  try:        
                     48: #      con = urlopener.open(url)
                     49: #      return con
                     50: #  except timeoutsocket.Timeout:
                     51: #      return None
1.15      dwinter    52: 
                     53: 
1.19      dwinter    54: 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    55: 
1.6       dwinter    56: 
1.14      dwinter    57: def checkOnlyOneInGroup(object): 
1.6       dwinter    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
1.8       dwinter    61: 
1.6       dwinter    62:        return displayedObjects[0][1]
                     63:    else:
                     64:        return object
                     65: 
                     66: def getSubCols(self,sortfield="weight",subColTypes= displayTypes):
1.1       dwinter    67: 
1.3       dwinter    68:         
1.1       dwinter    69:         ids=[]
1.6       dwinter    70:    displayedObjects=self.ZopeFind(self,obj_metatypes=subColTypes)
                     71:    
                     72:    
                     73:    for entry in displayedObjects:
1.3       dwinter    74:             object=entry[1]
1.1       dwinter    75:             try:
                     76:                 if object.meta_type in subColTypes:
1.6       dwinter    77:            ids.append(object)
1.1       dwinter    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:
1.7       dwinter    90: 
1.1       dwinter    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>