Changeset 2417


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

Handling empty documents and errors from DIF loading better

Location:
TI07-MOLES/trunk/PythonCode/wsgi
Files:
3 edited

Legend:

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

    r2392 r2417  
    5454                    l=min(len(xml),300)-1 
    5555                    if l!=len(xml):xml=xml[0:l]+'\n...' 
    56                     raise ValueError,'DIF input cannot be parsed into an ElementTree instance:\n%s'%xml 
     56                    raise ValueError('DIF input cannot be parsed into an ElementTree instance:\n%s'%xml) 
    5757                else: 
    58                     raise TypeError,'DIF input of type [%s] needs to be a string!'%type(xml) 
     58                    raise TypeError('DIF input of type [%s] needs to be a string!'%type(xml)) 
    5959         
    6060        self.debug=debug 
  • 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) 
  • TI07-MOLES/trunk/PythonCode/wsgi/ndgPageLayout.py

    r2411 r2417  
    8989            else: 
    9090                for i in self.wrapTarget(environ,start_response): response+=str(i) 
     91            failure=0 
    9192        except Exception,e: 
    9293            response+='''<p> Unable to fufill request, probably an error in the metadata record.  
     
    9596            body+=str(environ) 
    9697            mailError('b.n.lawrence@rl.ac.uk','Discovery/Browse Error',body,server=self.mailServer) 
    97             start_response('500 OK', [('Content-Type', 'text/html'),('charset','utf-8')]) 
     98            failure=1 
    9899        if footer: response+=self.footer 
     100        if failure: start_response('500 OK', [('Content-Type', 'text/html'),('charset','utf-8')]) 
    99101        #currently need to coerce response into a string for flup ... 
    100102        return [response] 
Note: See TracChangeset for help on using the changeset viewer.