Ignore:
Timestamp:
16/08/12 13:23:10 (8 years ago)
Author:
mnagni
Message:

Incomplete - # 22528: Migration of FAtCat Open Search link for HPFeld
 http://team.ceda.ac.uk/trac/ceda/ticket/22528
Incomplete - # 22534: Add versiojn number to the gui page
 http://team.ceda.ac.uk/trac/ceda/ticket/22534

File:
1 edited

Legend:

Unmodified
Added
Removed
  • mauRepo/MolesManager/trunk/cedaMoles/libs/migration/processor/deployment.py

    r8517 r8522  
    9292MET_GEO_FEATURE = 'Meteorological geographical features' 
    9393ORTHOIMAGERY = 'Orthoimagery' 
     94 
     95def get_fatcat_online_resource(online_resources = None): 
     96    """ 
     97        Extracts from a list of MO_OnlineResource the instance 
     98        representing a Fatcat reference 
     99         
     100        **RETURN** 
     101        The required instance, `None` otherwise  
     102    """ 
     103    function = getCLValue(CI_OnLineFunctionCode.cl_search) 
     104    if online_resources is None: 
     105        return None  
     106    for online_res in online_resources: 
     107        if online_res.function == function: 
     108            return online_res 
    94109             
    95110class DeploymentProcessor(object): 
     
    150165            if tmp_auth['author'] == 'unknown': 
    151166                DeploymentProcessor.log.debug("%s %s %s has unknown author" \ 
    152                                              % (whereAreAuthors.doc_status, whereAreAuthors.doc_owner, whereAreAuthors.doc_name))         
     167                                             % (whereAreAuthors.doc_status, \ 
     168                                                whereAreAuthors.doc_owner, \ 
     169                                                whereAreAuthors.doc_name))         
    153170 
    154171            for item in tmp_auth['co_author_type']:            
    155                 if (tmp_auth['co_author'][tmp_auth['co_author_type'].index(item)] == 'unknown'): 
     172                if (tmp_auth['co_author'][tmp_auth['co_author_type'].index(item)] \ 
     173                        == 'unknown'): 
    156174                    doc_authors = find_authors_in_resource(self._data_entity_migration) 
    157175                    tmp_auth = authors[doc_authors['contributors']] 
     
    167185                if (tmp_auth['co_author'][index] == 'unknown'): 
    168186                    DeploymentProcessor.log.info("%s %s %s has unknown author" \ 
    169                                                  % (whereAreAuthors.doc_status, whereAreAuthors.doc_owner, whereAreAuthors.doc_name)) 
     187                                                 % (whereAreAuthors.doc_status, \ 
     188                                                    whereAreAuthors.doc_owner, \ 
     189                                                    whereAreAuthors.doc_name)) 
    170190        except Exception as e: 
    171191            print e 
     
    189209             
    190210            py_date = None 
    191             cited_responsible = create_ci_responsible_party(role=getCLValue(CI_RoleCode.cl_publisher), \ 
    192                                                               organizationName='NERC - British Atmospheric Data Centre') 
     211            cited_responsible = \ 
     212                create_ci_responsible_party(role=getCLValue(CI_RoleCode.cl_publisher), \ 
     213                           organizationName='NERC - British Atmospheric Data Centre') 
    193214            if doi.upper() == '10.5285/E8F43A51-0198-4323-A926-FE69225D57DD': 
    194215                py_date = date(2011, 4, 1) 
     
    202223            if py_date:    
    203224                dt = create_date(py_date) 
    204                 ci_date = create_ci_date(getCLValue(CI_DateTypeCode.cl_publication), date = dt) 
     225                ci_date = create_ci_date(getCLValue(CI_DateTypeCode.cl_publication), \ 
     226                                         date = dt) 
    205227                i_authority = create_ci_citation("DOI", date = ci_date) 
    206228                identifier = create_md_identifier(code = doi, authority=i_authority) 
    207                 self.epbRepo.moles3EPB.updateCedaObject(observation, {'identifier': identifier}) 
     229                self.epbRepo.moles3EPB.updateCedaObject(observation, \ 
     230                                                        {'identifier': identifier}) 
    208231                DeploymentProcessor.log.info("DOI: %s" % (doi))                                   
    209232 
     
    236259            observation.dataLineage = data_lineage   
    237260 
    238     def _assignResult(self, observation): 
    239         if self._deploymentHasSameHash and self._dataEntityHasSameHash: 
    240             return 
    241  
    242         i_sources = []                 
     261    def _fatcat_online_resource(self): 
     262        function = getCLValue(CI_OnLineFunctionCode.cl_search)                 
     263        tools = find_links_in_migration_document(self._deployment_migration, 'TOOLS') 
     264        for tool in tools: 
     265            if 'FAtCatID' not in tool['href']: 
     266                continue 
     267             
     268            addr, opt = tool['href'].split('?')             
     269            return create_mo_online_resource(linkage = tool['href'], \ 
     270                            name = tool['title'], \ 
     271                            function = function, \ 
     272                            description = opt.split(':')[1], \ 
     273                            applicationProfile = None)        
     274 
     275    def _download_online_resource(self, i_sources): 
    243276        download = find_download_links_in_migration_document(self._deployment_migration) 
    244277        content = None 
     
    254287                #int_applicationProfile = content['formats'] 
    255288                pass 
    256             if dwn['href'].startswith('http://badc.nerc.ac.uk/browse') or dwn['href'].startswith('http://neodc.nerc.ac.uk/browse'): 
    257                 int_description = "download directly from archive"     
    258             i_sources.append(create_mo_online_resource(linkage = dwn['href'], name = dwn['title'], \ 
    259                                                    function = getCLValue(CI_OnLineFunctionCode.cl_download), \ 
    260                                                    description = int_description, applicationProfile = int_applicationProfile)) 
    261              
    262         dataentity_id = '%s__ATOM__%s' % (self._data_entity_migration.doc_owner, self._data_entity_migration.doc_name) 
     289            if dwn['href'].startswith('http://badc.nerc.ac.uk/browse') \ 
     290                    or dwn['href'].startswith('http://neodc.nerc.ac.uk/browse'): 
     291                int_description = "download directly from archive" 
     292                  
     293            i_sources.append(create_mo_online_resource(linkage = dwn['href'], \ 
     294                            name = dwn['title'], \ 
     295                            function = getCLValue(CI_OnLineFunctionCode.cl_download), \ 
     296                            description = int_description, \ 
     297                            applicationProfile = int_applicationProfile)) 
     298 
     299    def _assignResult(self, observation): 
     300        # If both the deployment and the dataentity are unchanged skip the execution 
     301        if self._deploymentHasSameHash and self._dataEntityHasSameHash: 
     302            return 
     303 
     304        #Delete all the old result without committing 
     305        if hasattr(observation, 'id') and observation.id is not None \ 
     306                and hasattr(observation, 'result'): 
     307                    self.epbRepo.moles3EPB.deleteInstance(observation.result) 
     308 
     309        i_sources = [] 
     310                 
     311        fatcat_online_resource = self._fatcat_online_resource() 
     312        if fatcat_online_resource is not None: 
     313            i_sources.append(fatcat_online_resource) 
     314 
     315        self._download_online_resource(i_sources)        
     316             
     317        dataentity_id = '%s__ATOM__%s' % (self._data_entity_migration.doc_owner, \ 
     318                                          self._data_entity_migration.doc_name) 
    263319        dataentity_id = dataentity_id.replace('.atom', '')            
    264320        infodb_de = self.epbRepo.infodbEPB.getCedaInfoApp_dataentityByDE_ID(dataentity_id) 
    265321        i_logical_path = '/dummy' 
    266322        if infodb_de is None: 
    267             i_logical_path = dwn['href'][dwn['href'].index('/browse/') + 7:] 
     323            i_logical_path = 'mailto:support@ceda.ac.uk?subject=Link to archive required \ 
     324                %s' %  dataentity_id 
    268325         
    269326        if infodb_de and infodb_de.has_key('logical_path'): 
     
    272329        i_category = getCLValue(CEDA_CurationValue.cl_a)                                   
    273330        if infodb_de and infodb_de.has_key('category') and infodb_de['category']: 
    274             i_category = getCLValue(CEDA_CurationValue.from_string(infodb_de['category'].lower()))       
    275  
    276         if not self._deploymentHasBeenProcessed:                      
    277             observation.result = create_ceda_result(i_category, i_logical_path, source = i_sources) 
    278             return  
    279          
    280         if observation.result.internalPath != i_logical_path: 
    281             observation.result.internalPath = i_logical_path 
    282              
    283         if observation.result.curationCategory != i_category: 
    284             observation.result.curationCategory = i_category 
    285                          
    286         #Still have to update observation.result.source 
     331            i_category = getCLValue(CEDA_CurationValue.\ 
     332                                    from_string(infodb_de['category'].lower()))       
     333 
     334                      
     335        observation.result = create_ceda_result(i_category, \ 
     336                                                i_logical_path, \ 
     337                                                source = i_sources)                         
    287338 
    288339    def _assignPublisherCurator(self, observation): 
     
    294345        if provider_id == DO_BADC: 
    295346            i_linkage = 'http://badc.rl.ac.uk' 
    296             i_onlineResources = create_ci_onlineresource(linkage = i_linkage, name = 'British Atmospheric Data Centre Website') 
     347            i_onlineResources = create_ci_onlineresource(linkage = i_linkage, \ 
     348                                        name = 'British Atmospheric Data Centre Website') 
    297349            i_address = create_ci_address(deliveryPoint = ['British Atmospheric Data Centre, STFC Rutherford Appleton Laboratory'], \ 
    298                                          electronicMailAddress=['badc@rl.ac.uk'], postalCode='OX11 0QX', country='UK', city='Harwell Oxford')                                    
     350                                         electronicMailAddress=['badc@rl.ac.uk'], \ 
     351                                         postalCode='OX11 0QX', \ 
     352                                         country='UK', \ 
     353                                         city='Harwell Oxford')                                    
    299354            i_phone = create_ci_telephone(voice=['+44(0)1235 446432'])                                   
    300             contact = create_ci_contact(phone=i_phone, address=i_address, onlineResource=i_onlineResources)                        
    301             party = create_mo_organization(name = "NERC - British Atmospheric Data Centre", contactInfo = [contact]) 
     355            contact = create_ci_contact(phone=i_phone, \ 
     356                                        address=i_address, \ 
     357                                        onlineResource=i_onlineResources)                        
     358            party = create_mo_organization(name = "NERC - British Atmospheric Data Centre", \ 
     359                                           contactInfo = [contact]) 
    302360        elif provider_id == DO_NEODC: 
    303361            i_linkage = 'http://www.neodc.rl.ac.uk' 
    304             i_onlineResources = create_ci_onlineresource(linkage = i_linkage, name = 'NERC Earth Observation Data Centre website') 
     362            i_onlineResources = create_ci_onlineresource(linkage = i_linkage, \ 
     363                                    name = 'NERC Earth Observation Data Centre website') 
    305364            i_address = create_ci_address(deliveryPoint = ['NERC - Earth Observation Data Centre, STFC Rutherford Appleton Laboratory'], \ 
    306                                          electronicMailAddress=['neodc@rl.ac.uk'], postalCode='OX11 0QX', country='UK', city='Harwell Oxford')                                    
     365                                         electronicMailAddress=['neodc@rl.ac.uk'], \ 
     366                                         postalCode='OX11 0QX', \ 
     367                                         country='UK', \ 
     368                                         city='Harwell Oxford')                                    
    307369            i_phone = create_ci_telephone(voice=['+44(0)1235 446432'])                                  
    308             contact = create_ci_contact(phone=i_phone, address=i_address, onlineResource=i_onlineResources)                        
    309             party = create_mo_organization(name = 'NERC - Earth Observation Data Centre', contactInfo = [contact]) 
     370            contact = create_ci_contact(phone=i_phone, \ 
     371                                        address=i_address, \ 
     372                                        onlineResource=i_onlineResources)                        
     373            party = create_mo_organization(name = 'NERC - Earth Observation Data Centre', \ 
     374                                           contactInfo = [contact]) 
    310375        elif provider_id == DO_UKSSDC: 
    311376            i_linkage = 'http://www.ukssdc.rl.ac.uk' 
    312             i_onlineResources = create_ci_onlineresource(linkage = i_linkage, name = 'UK Solar System Data Centre website') 
     377            i_onlineResources = create_ci_onlineresource(linkage = i_linkage, \ 
     378                                            name = 'UK Solar System Data Centre website') 
    313379            i_address = create_ci_address(deliveryPoint = ['UK Solar System Data Centre, STFC Rutherford Appleton Laboratory'], \ 
    314                                          electronicMailAddress=['support@rl.ac.uk'], postalCode='OX11 0QX', country='UK', city='Harwell Oxford')                                    
     380                                         electronicMailAddress=['support@rl.ac.uk'], \ 
     381                                         postalCode='OX11 0QX', \ 
     382                                         country='UK', \ 
     383                                         city='Harwell Oxford')                                    
    315384            i_phone = create_ci_telephone(voice=['+44(0)1235 445173'])                                  
    316             contact = create_ci_contact(phone=i_phone, address=i_address, onlineResource=i_onlineResources)                        
    317             party = create_mo_organization(name = 'NERC - UK Solar System Data Centre', contactInfo = [contact]) 
     385            contact = create_ci_contact(phone=i_phone, \ 
     386                                        address=i_address, \ 
     387                                        onlineResource=i_onlineResources)                        
     388            party = create_mo_organization(name = 'NERC - UK Solar System Data Centre', \ 
     389                                           contactInfo = [contact]) 
    318390         
    319391        if party and not self._deploymentHasBeenProcessed: 
     
    338410        if doc_date: 
    339411            i_date = create_date(isoDateTimeStringToTimeDate(doc_date))                 
    340             ci_dates.append(create_ci_date(getCLValue(CI_DateTypeCode.cl_revision), date = i_date))             
     412            ci_dates.append(create_ci_date(getCLValue(CI_DateTypeCode.cl_revision), \ 
     413                                           date = i_date))             
    341414        else: 
    342415            i_date = create_date(isoDateTimeStringToTimeDate(datetime.datetime.now())) 
    343             ci_dates.append(create_ci_date(getCLValue(CI_DateTypeCode.cl_creation), date = i_date)) 
    344  
    345         i_specification = create_ci_citation(title = "CEDA Data Quality Statement", date=ci_dates) 
     416            ci_dates.append(create_ci_date(getCLValue(CI_DateTypeCode.cl_creation), \ 
     417                                           date = i_date)) 
     418 
     419        i_specification = create_ci_citation(title = "CEDA Data Quality Statement", \ 
     420                                             date=ci_dates) 
    346421        i_dq_result = create_dq_conformance_result(doc_quality, True, i_specification) 
    347422        i_quality_element = create_dq_element(i_dq_result) 
     
    433508            self._report.append(NoGeographicalExtensionException(self._data_entity_migration)) 
    434509         
    435         geographicExtent = create_ex_geographic_boundingbox(ge['east'], ge['north'], ge['west'], ge['south']) 
     510        geographicExtent = create_ex_geographic_boundingbox(ge['east'], \ 
     511                                                            ge['north'], \ 
     512                                                            ge['west'], \ 
     513                                                            ge['south']) 
    436514 
    437515        if len(observation.geographicExtent) == 0 or \ 
     
    439517             not compareGeographicBoundingBoxes(geographicExtent, \ 
    440518                observation.geographicExtent[0])): 
    441             self.epbRepo.moles3EPB.updateCedaObject(observation, {'geographicExtent': geographicExtent})              
     519            self.epbRepo.moles3EPB.updateCedaObject(observation, \ 
     520                                                {'geographicExtent': geographicExtent})              
    442521             
    443522    def _assignCreationDate(self, observation): 
Note: See TracChangeset for help on using the changeset viewer.