Ignore:
Timestamp:
18/04/07 08:36:04 (13 years ago)
Author:
lawrence
Message:

Handling empty documents and errors from DIF loading better

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI07-MOLES/trunk/PythonCode/wsgi/DiscoveryGUI.py

    r2374 r2417  
    55from renderDiscoverySet import renderDiscoverySet 
    66from DiscoveryState import DiscoveryState 
    7 from Utilities import myConfig 
     7from Utilities import myConfig,mailError 
    88from ndgObject import ndgObject 
    9 debug=1 
     9debug=0 
    1010class DiscoveryGUI: 
    1111    ''' This class handles the NDG gui search interface, and is intimately related to the  
     
    2727        self.config=config 
    2828        self.logger=logger 
    29  
     29        self.mailServer=self.config.get('DEFAULT','mailServer','outbox.rl.ac.uk') 
    3030        self.message='' 
    3131        self.html='' 
     
    134134                results=ws.getLabelledDocs(format='DIF') 
    135135                difs=[] 
     136                errors=[] 
    136137                for result in results:  
    137138                    obj=ndgObject(result[0]) 
    138139                    obj.setConfig(self.config) 
    139                     difs.append(DIF(result[1],ndgObject=obj)) 
    140                     if debug: print 'DIF record obtained: %s'%difs[-1].entryID 
     140                    try: 
     141                        difs.append(DIF(result[1],ndgObject=obj)) 
     142                    except ValueError,e: 
     143                        errors.append((result[0],e)) 
    141144                if results==[]: 
    142145                    self.html+='<p>No results for "%s"!</p>'%searchString 
     146                elif difs==[]: 
     147                    self.html+='<p>No usable results for "%s"!'%searchString  
    143148                else: 
    144                     self.html+='<p>Search results for "%s":</p>'%searchString 
     149                    self.html+='<p>Search results for "%s"'%searchString 
     150                    if errors<>[]: 
     151                        dp=[] 
     152                        for e in errors: 
     153                            n=ndgObject(e[0]) 
     154                            if n.repository not in dp: dp.append(n.repository) 
     155                        if len(dp)<>1:  
     156                            dp='[Various Data Providers]' 
     157                        else: 
     158                            dp='[%s]'%dp[0]  
     159                        self.html+=' (unfortunately %s hits matched unformattable documents from %s, an internal error has been logged):</p>'%(len(errors),dp) 
     160                        mailError('b.n.lawrence@rl.ac.uk','DIF errors',str(errors),server=self.mailServer) 
     161                    else: self.html+=':</p>' 
    145162                    self.html+=renderDiscoverySet(difs,state,config=self.config, 
    146163                               summary=1,spatial=1,temporal=1,services=1) 
Note: See TracChangeset for help on using the changeset viewer.