Ignore:
Timestamp:
11/10/06 16:57:36 (15 years ago)
Author:
lawrence
Message:

Browse now modified to use Matt's backend ...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI07-MOLES/trunk/PythonCode/browse/portal/cgi/browse/browseCGI.py

    r1525 r1577  
    1919from Utilities import * 
    2020from ETxmlView import * 
    21 from DiscoveryWS import * 
     21#from DiscoveryWS import * 
     22from ndgSearch import ndgSearch 
    2223from DIF import DIF 
    2324import base64 
    24 from eXistInterface import * 
     25#from eXistInterface import * 
     26from DiscoveryState import DiscoveryState 
    2527 
    2628import Cookie 
    2729 
     30 
     31         
    2832class BrowseSession: 
    2933         
     
    232236                xml=insecureGetDoc(self.uri,db=db,format=format,jar=jar,javaBin=javabin, 
    233237                                   passwordFile=passwordFile) 
     238                 
    234239                # this isn't ideal but it'll do for now ... 
    235                 # try again, directly to the exist database 
    236                 if xml is None and format=='DIF': 
    237                     existDB=ndg_eXist(db=db,passwordFile=passwordFile) 
    238                     xml=existDB.getDIF(self.uri) 
    239                  
    240                  
     240                if xml is None:  
     241                    #then it's not an NDG DIF, and we need to go get it, but 
     242                    #unfortunately that requires a search on the entry id, then 
     243                    #a document retrieval 
     244                    ws=ndgSearch() 
     245                    ws.search(self.uri) 
     246                    xml=ws.getDoc(ws.documents[0]) 
     247                    if xml[0:5]=='Error': 
     248                        return self.error('Unable to obtain record [%s] from database'%self.uri),self.uri 
     249         
    241250                #create document instance 
    242251                if format=='NDG-B0': 
     
    246255                 
    247256                if self.b.xml is None: 
    248                     content=self.error('Unable to obtain record [%s] from database'%self.uri) 
     257                    content=self.error('Unable to parse record [%s] from database'%self.uri) 
    249258                    return content,0 
    250259                else: 
     
    287296            if 'SEARCHSTRING' in self.FieldStorage: 
    288297                searchString=self.FieldStorage['SEARCHSTRING'] 
     298                searchSession,start,howmany=None,1,stride 
    289299                if 'searchSession' in self.FieldStorage: 
    290                     searchSession=self.FieldStorage['searchSession'] 
    291                     start=int(self.FieldStorage['start']) 
    292                     howmany=int(self.FieldStorage['howmany']) 
    293                 else: 
    294                     searchSession=None 
    295                     start=1 
    296                     howmany=stride 
     300                      searchSession=self.FieldStorage['searchSession'] 
     301                if 'start' in self.FieldStorage: 
     302                    try: 
     303                        start=int(self.FieldStorage['start']) 
     304                    except: pass 
     305                if 'howmany' in self.FieldStorage: 
     306                    try: 
     307                        stride=int(self.FieldStorage['howmany']) 
     308                    except: pass 
     309 
    297310                title='Search for '+searchString 
    298311                try: 
    299                     #ws=DiscoveryWS(wsdl=self.config.get('services','searchWSDL'), 
    300                     #                sessID=searchSession) 
    301          
    302                     db=self.config.get('db','exist',None) 
    303                     passwordFile=self.config.get('security','passwords','passwords.txt') 
    304                     existDB=ndg_eXist(db=db,passwordFile=passwordFile) 
     312                    ws=ndgSearch() # instantiate 
    305313                except Exception, e: 
    306314                    return self.error('<p>%s<br/>%s'%(e,'Unable to connect to Search BackEnd')),'Error' 
    307                 try: 
    308                     #hits=ws.SearchFullText(searchString) 
    309                     #state=DiscoveryState(ws.sessID,self.requestURL,hits,stride=stride) 
    310                     #results=ws.GetResults(offset=state.offset,number=state.stride) 
    311                     hits=0 
    312                     if searchSession is not None: 
    313                         try: 
    314                             id=searchSession 
    315                             summary=existDB.querySummary(id) 
    316                             print '<p>%s</p>'%string(summary) 
    317                         except: 
    318                             id,summary=existDB.full_text(searchString) 
    319                     else: 
    320                         id,summary=existDB.full_text(searchString) 
    321                     hits=summary['hits'] 
    322                     if hits==0: return self.error('No records found'),title 
    323                     r=1 
    324                     results=[] 
    325                     j=1 
    326                     while r is not None and j <= howmany: 
    327                         j+=1 
    328                         r=existDB.retrieveNext(id,pos=start+j-1) 
    329                         if r is not None: results.append(r) 
    330                     state=DiscoveryState(id,self.requestURL,hits,stride=stride,offset=start) 
    331                 except TypeError: 
    332                     # this is not what these web services should do, they should 
    333                     # return an empty set or something which matches the argument 
    334                     # list, but at least I think this traps the empty set for 
    335                     # marta's code at least 
    336                     return self.error('No records found'),title 
     315 
     316                hits=0 
     317                if searchSession is not None: 
     318                   pass 
     319                   #return self.error('<p>search sessions not yet implemented</p>'),'Error' 
     320                else: 
     321                   pass 
     322                 
     323                documents=ws.search(searchString,start=start,howmany=stride) 
     324                hits=ws.hits 
     325                id=ws.serverSessionID 
     326                 
     327                if hits==0: return self.error('No records found'),title 
     328                state=DiscoveryState(id,self.requestURL,hits,stride=stride,offset=start) 
     329                results=ws.getAllDocsAsElements() 
    337330                difs=[] 
    338                  
    339                 for result in results: difs.append(DIF(result,serviceFile=self.serviceFile)) 
     331                for result in results: difs.append(DIF(result,serviceFile=self.serviceFile,et=1)) 
    340332         
    341333                html=renderDiscoverySet(difs,state,selector=self.selector, 
Note: See TracChangeset for help on using the changeset viewer.