Changeset 5730 for MILK


Ignore:
Timestamp:
17/09/09 16:20:00 (10 years ago)
Author:
aharwood
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • MILK/trunk/milk_server/milk_server/controllers/browse/discovery.py

    r5489 r5730  
    77from ndg.common.src.clients.xmldb.eXist.searchclient import SearchClient 
    88from ndg.common.src.clients.http.vocabserverclient import VocabServerClient as VS 
    9 from ndg.common.src.models.vocabtermdata import VocabTermData as VTD 
     9from ndg.common.src.models.vocabtermdata import VocabTermData as VTD, VocabTermItem as VTI 
    1010from ndg.common.src.models.ndgObject import ndgObject 
    1111from ndg.common.src.models.DIF import DIF 
    1212from ndg.common.src.lib.mailer import mailHandler 
     13import ndg.common.src.lib.htmlUtilities as utils 
    1314from milk_server.lib.base import * 
    1415from milk_server.lib.Date import * 
     
    2829        '''  
    2930        Common setup for controller methods  
    30         ''' 
     31 
     32        ''' 
     33         
    3134        self.cf=request.environ['ndgConfig'] 
    3235        self.inputs=dict(parse_querystring(request.environ)) 
     
    3639         
    3740        c.discoveryUrl = h.url_for('discovery') 
    38                         
    3941     
    4042    def index(self): 
     
    4244        Main entry point for doing discovery searches 
    4345        ''' 
     46         
    4447        self.__setup() 
    4548         
     
    4851        # to what milk mode is set (i.e. editor/browse) 
    4952        if not self.inputs or 'ClearForm' in self.inputs: 
     53             
    5054            if g.discoveryEnabled: 
    5155                return self.__advancedPrompt() 
     
    5761 
    5862        if 'orderBy' not in self.inputs: 
    59             self.inputs['orderBy'] = g.orderByList[0] 
     63           self.inputs['orderBy'] = 'title' 
     64            
    6065        c.orderByList = h.options_for_select(g.orderByList, self.inputs['orderBy']) 
    61  
     66         
    6267        if 'orderDirection' not in self.inputs: 
    6368            self.inputs['orderDirection'] = constants.ORDER_BY_DIRECTION[0] 
     
    7075 
    7176        searchString = self.inputs['searchString'] 
    72         if 'vocabTerm' in self.inputs and self.inputs['vocabTerm']: 
     77                    
     78        if 'vocabTerm' in self.inputs: 
    7379            searchString += " %s" %self.inputs['vocabTerm'] 
    7480             
     
    8288        # ok, now go do the search 
    8389        try: 
     90 
    8491            return self.__runSearch(searchString, self.inputs['textTarget'], 
    8592                                    self.inputs['start'], self.inputs['howmany'],  
     
    186193                    c.inputErrors[bc.INVALID_BBOX_MESSAGE] = [] 
    187194                c.inputErrors[bc.INVALID_BBOX_MESSAGE].extend(errors) 
    188                  
     195 
    189196        #self.bbox = None 
    190          
    191         
     197         
     198                 
    192199        missingInputs = self.__checkform(['startDate', 'endDate']) 
    193200        self.dateRange = None 
     
    289296        # http://proj.badc.rl.ac.uk/ndg/ticket/984 
    290297        try: 
     298             
     299            publicOnly = not g.atomEditorEnabled 
     300             
    291301            searchClient.search(searchString, 
    292302                                start = start, 
     
    298308                                geoSearchType = geoSearch, 
    299309                                orderBy = orderBy, 
    300                                 orderDirection = orderDirection) 
     310                                publicOnly = publicOnly) 
     311                                 
    301312        except socket.error, e: 
    302313            logging.error("Socket error for discovery service search: %s" % e) 
     
    327338        @param ds: DiscoveryState object with info on the search 
    328339        ''' 
     340         
    329341        if searchClient.error: 
    330342            logging.error("Error encountered whilst running search: %s" %searchClient.error) 
     
    344356        errors = [] 
    345357 
     358        logging.debug ("atom target %s" % SearchClient.ATOM_TARGET) 
     359        ds.constraintsInstance['textTarget'] = 'Atom' 
     360        logging.debug ("atom target %s" % ds.constraintsInstance) 
     361         
    346362        if hits == 0 and ds.constraintsInstance['textTarget'] != SearchClient.ATOM_TARGET: 
    347363            outMessage = 'No records found for "%s"[constraints: %s]' \ 
     
    431447        c.title = bc.DISCOVERY_HOME_TITLE 
    432448        c.bbox='90.0','-180.0','180.0','-90.0' 
    433         #c.bbox='','','','' 
     449        #c.bbox='','','','' 
    434450        c.startDate = '' 
    435451        c.endDate = '' 
     
    468484        @return: list of errors 
    469485        ''' 
     486         
    470487        errors = [] 
    471488         
     
    587604        return toList 
    588605     
     606 
     607     
    589608    def __displayBrowseSearchResults(self, searchClient): 
    590609        '''  
     
    592611        @param searchClient: search client adhering to the ndg.common.clients.interfacesearchclient 
    593612        interface - which has just ran a search 
    594         ''' 
     613        '''      
    595614        c.results = searchClient.results 
    596615        c.searchTarget = self.inputs['searchTarget'] 
     616         
    597617        textTarget = self.inputs['textTarget'] 
    598618 
    599619        # check if we've done a search against atoms - NB, this should be the 
    600620        # default eventually - so we can remove all the alternative options 
    601         isAtom = False 
    602         if textTarget == SearchClient.ATOM_TARGET: 
    603             isAtom = True 
     621        isAtom = True 
     622 
     623#        if textTarget == SearchClient.ATOM_TARGET: 
     624#           isAtom = True 
    604625         
    605626        for r in c.results: 
     627 
    606628            id = r.id 
    607629                # cope with atom docs 
     
    614636        # filter atom docs according to publication state 
    615637        if isAtom: 
    616             c.searchTerm = " - for search term, '%s'" %self.inputs['searchString'] 
     638            c.searchTerm = " - for search term, '%s'" % self.inputs['searchString'] 
     639            c.searchString = self.inputs['searchString'] 
     640                     
    617641            if not g.atomEditorEnabled: 
    618642                c.results = self.__filterAtomResults(c.results) 
     
    636660        @param results: list of results as returned by SearchClient 
    637661        @return filteredResults: list of results with only published data included 
    638         ''' 
     662        '''              
    639663        logging.debug("Filtering results to remove non-published data") 
    640664        filteredResults = [] 
    641665        for result in results: 
    642666            if result.collection.find('ublished') == -1: 
    643                 logging.debug("- found non-published doc - ignoring") 
     667                logging.debug("- found non-published doc - ignoring id: %s" % result.id) 
    644668                continue 
    645669            filteredResults.append(result) 
Note: See TracChangeset for help on using the changeset viewer.