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>