Changeset 8717 for mauRepo/HPFos


Ignore:
Timestamp:
17/01/13 13:55:30 (7 years ago)
Author:
mnagni
Message:

Incomplete - # 22576: Filtering on Files in a particular Result returns all Files rather than a subset.
 http://team.ceda.ac.uk/trac/ceda/ticket/22576

Should fix all the remaining bugs

Location:
mauRepo/HPFos/trunk/hpfos/HPFos
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • mauRepo/HPFos/trunk/hpfos/HPFos/osImpl/commons.py

    r8584 r8717  
    3838import re 
    3939from datetime import tzinfo, timedelta, datetime 
     40from urllib2 import HTTPError 
     41from hpfos.HPFos.exception import FatcatException 
     42 
     43import logging 
     44 
     45# Get an instance of a logger 
     46LOGGER = logging.getLogger(__name__) 
    4047 
    4148class OS_tz(tzinfo): 
     
    113120def _tm_InstantToString(tm_instant): 
    114121    idate = tm_instant.position.date8601 
    115     return datetime(int(idate.year), int(idate.month), int(idate.day), 0, 0, 0).isoformat() 
     122    return datetime(int(idate.year),  
     123                    int(idate.month),  
     124                    int(idate.day), 0, 0, 0).isoformat() 
    116125 
    117126def return_not_none_text(element): 
     
    126135        urllib2.install_opener(opener) 
    127136    connect_to = 'http://%s:%s%s' % (host, port, path) 
    128     response = urllib2.urlopen(connect_to) 
    129     return  response.read() 
     137    try: 
     138        response = urllib2.urlopen(connect_to) 
     139        return  response.read() 
     140    except HTTPError as e: 
     141        msg = "Fatcat returned HTTP 500 for the following query: %s" % path 
     142        raise FatcatException(msg) 
     143        LOGGER.error(msg) 
    130144 
    131145def get_xml_document(source): 
  • mauRepo/HPFos/trunk/hpfos/HPFos/osImpl/myimpl.py

    r8716 r8717  
    4848from sqlalchemy.orm.collections import InstrumentedList 
    4949from ceda_markup.georss import create_where_from_postgis 
     50from urllib import urlencode 
     51from hpfos.HPFos.exception import FatcatException 
    5052from ea_model.ceda_metadatamodel.ceda_observationcollection.ceda_observationcollection \ 
    5153    import CEDA_ObservationCollection 
     
    258260                and type(instances[0]) == CEDA_Observation): 
    259261            subresults = apply_query_params(context, subresults) 
    260                                                            
     262 
     263        title = HPFOS_TITLE 
     264        if context.get('exception', None): 
     265            title = context.get('exception').value 
     266                                                                     
    261267        return Result(count, start_index, start_page, tot_results, \ 
    262                       subresult = subresults, title=HPFOS_TITLE) 
     268                      subresult = subresults, title = title) 
    263269         
    264270    def generateEntryLinks(self, entry, atomroot, path, params_model, context): 
     
    431437            for source in obj.result.source: 
    432438                if source.function == 'search': 
    433                     return extract_fatcat_entities(source.description) 
     439                    try:                     
     440                        return extract_fatcat_entities(source.description,  
     441                                                   self.recreate_query(context)) 
     442                    except FatcatException as e: 
     443                        context['exception'] = e  
    434444            return None 
    435445 
    436          
    437 def extract_fatcat_entities(fc_resource_id): 
     446    def recreate_query(self, context): 
     447        ret = [] 
     448        for param in self.params_model: 
     449            if context.get(param.par_name, None): 
     450               ret.append((param.par_name, context.get(param.par_name))) 
     451        return ret 
     452         
     453def extract_fatcat_entities(fc_resource_id, query = ''): 
    438454    ''' 
    439455        Uses the Fatcat resource_id to build and submit an Opensearch query to Fatcat 
    440     ''' 
    441     path = '/%s/search/%s/atom/' % (FATCAT_ROOT_PATH, str(fc_resource_id)) 
     456    '''     
     457    path = '/%s/search/%s/atom?%s' % (FATCAT_ROOT_PATH, str(fc_resource_id), urlencode(query)) 
    442458    return find_fatcat_atom_entity(host = FATCAT_HOST, path = path) 
    443459     
    444 def find_fatcat_atom_entity(host = 'localhost', path = '', port = 80):     
     460def find_fatcat_atom_entity(host = 'localhost', path = '', port = 80): 
    445461    source = get_document(host, path, port, proxy = PROXY_URL) 
    446462    return get_xml_document(source) 
Note: See TracChangeset for help on using the changeset viewer.