Changeset 8408
- Timestamp:
- 26/06/12 14:21:46 (9 years ago)
- Location:
- mauRepo/MolesManager/trunk
- Files:
-
- 1 added
- 4 deleted
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
mauRepo/MolesManager/trunk/resources/requirements.txt
r8329 r8408 7 7 #This package should be available in the machine where CedaManager will be deployed 8 8 #psycopg2==2.4.2 9 10 # CEDA PACKAGES please add something like 11 # --extra-index-url http://ciprod1.cems.rl.ac.uk/pip 12 # to your pip install 13 ceda-moles-model==0.1.0 -
mauRepo/MolesManager/trunk/src/MolesManager/moles3epb.py
r8392 r8408 34 34 from ea_model.ceda_metadatamodel.ceda_observationcollection.ceda_observationcollection import CEDA_ObservationCollection 35 35 from ea_model.ceda_metadatamodel.ceda_observation.ceda_observation import CEDA_Observation 36 from ea_model.iso_19115_2006_metadata_corrigendum.reference_system_information.md_identifier import MD_Identifier37 from ea_model.iso_19115_2006_metadata_corrigendum.citation_and_responsible_party_information.ci_citation import CI_Citation38 36 from ea_model.moles3_4.observationcollection.mo_observationcollection import MO_ObservationCollection 39 37 from ea_model.moles3_4.observation.mo_observation import MO_Observation … … 42 40 from sqlalchemy.orm import mapper 43 41 from MolesManager.ceda_guid import CedaGUID 44 from ea_model.moles3_4.utilities.mo_responsiblepartyinfo import MO_ResponsiblePartyInfo45 from ea_model.moles3_4.utilities.mo_rolevalue import MO_RoleValue46 42 from sqlalchemy.orm.collections import InstrumentedList 43 from ea_model.iso_19115_2006_metadata_corrigendum.reference_system_information.md_identifier import MD_Identifier 44 from ea_model.iso_19115_2006_metadata_corrigendum.citation_and_responsible_party_information.ci_citation import CI_Citation 47 45 from ea_model.iso_19115_2006_metadata_corrigendum.extent_information.ex_geographicboundingbox import EX_GeographicBoundingBox 48 46 from libs.postgisutil import unifyGeometries, create_st_setSRID 49 50 47 51 48 class Moles3EPBFactory(EPB): … … 204 201 @return: True if the collection contains the given observation, False otherwise 205 202 """ 203 204 # TO FIX!!! 205 206 ''' 206 207 ret = self._session.query(MO_ResponsiblePartyInfo).join(MO_Observation). \ 207 filter(MO_ResponsiblePartyInfo.role == MO_RoleValue.cl_author). \208 filter(MO_ResponsiblePartyInfo.role == CEDA_RoleValue.cl_author). \ 208 209 filter(MO_Observation.id == obs_id) 209 210 return ret 211 ''' 212 210 213 211 214 def extractObservationByTitleKeywords(self, keywords): -
mauRepo/MolesManager/trunk/src/MolesManager/settings.py
r8250 r8408 209 209 #MOLES3_DB_CONNECTION = 'postgresql://user:pws@host:port/dbName' 210 210 MOLES3_DB_CONNECTION = 'PG_MOLES3_DB_CONNECTION' 211 from sqlTables import doTables as doMoles, attachEvents211 from ea_model.sqlTables import doTables as doMoles, attachEvents 212 212 MOLES3_DB_SCRIPT = doMoles 213 213 EVENTS_DB = attachEvents -
mauRepo/MolesManager/trunk/src/MolesManager/views/cedaObservationView.py
r8335 r8408 7 7 from django.core.context_processors import csrf 8 8 from ea_model.ceda_metadatamodel.ceda_observation.ceda_observation import CEDA_Observation 9 from MolesManager.moles3epb import Moles3EPB10 9 from MolesManager.djencoder import DJEncoder 11 10 from django.utils.safestring import mark_safe -
mauRepo/MolesManager/trunk/src/libs/migration/processor/commons.py
r8358 r8408 32 32 ''' 33 33 from ea_model.moles3_4.utilities.mo_responsiblepartyinfo import MO_ResponsiblePartyInfo 34 from ea_model.iso_19115_2006_metadata_corrigendum.reference_system_information.md_identifier import MD_Identifier35 34 from httplib import HTTPConnection 36 35 from xml.etree.ElementTree import XML, tostring 37 36 import time, datetime 38 from ea_model.upcomingiso.ci_organisation import CI_Organisation39 from ea_model.upcomingiso.ci_party import CI_Party40 from ea_model.upcomingiso.ci_individual import CI_Individual41 37 from libs.migration.exception.exceptions import NoDataLineage 42 from ea_model.iso_19115_2006_metadata_corrigendum.citation_and_responsible_party_information.ci_citation import CI_Citation43 from ea_model.iso_19115_2006_metadata_corrigendum.data_quality_information.dq_element import DQ_Element44 from ea_model.iso_19115_2006_metadata_corrigendum.data_quality_information.dq_conformanceresult import DQ_ConformanceResult45 38 from hashlib import md5 46 39 from xml.sax.saxutils import unescape, escape … … 49 42 from ea_model.ceda_metadatamodel.ceda_result.ceda_result import CEDA_Result 50 43 from ea_model.moles3_4.result.mo_onlineresource import MO_OnlineResource 51 from ea_model.iso_19115_2006_metadata_corrigendum.citation_and_responsible_party_information.url import URL52 from ea_model.iso_19115_2006_metadata_corrigendum.extent_information.ex_geographicboundingbox import EX_GeographicBoundingBox53 44 from ea_model.ceda_metadatamodel.ceda_computation.ceda_processing import CEDA_Processing 54 45 from ea_model.ceda_metadatamodel.ceda_acquisition.ceda_instrument import CEDA_Instrument 55 46 from ea_model.ceda_metadatamodel.ceda_observationprocess.ceda_compositeprocess import CEDA_CompositeProcess 56 47 from ea_model.ceda_metadatamodel.ceda_acquisition.ceda_acquisition import CEDA_Acquisition 57 from ea_model.iso_19115_2006_metadata_corrigendum.citation_and_responsible_party_information.ci_date import CI_Date 48 from ea_model.ceda_metadatamodel.ceda_project.ceda_project import CEDA_Project 49 from ea_model.ceda_metadatamodel.ceda_utilities.ceda_review import CEDA_Review 50 from ea_model.iso_19115_2006_metadata_corrigendum.reference_system_information.md_identifier import MD_Identifier 51 from ea_model.iso_19115_2006_metadata_corrigendum.identification_information.md_keywords import MD_Keywords 58 52 from ea_model.iso_19103_2005_schema_language.basic_types.primitive.date_and_time.datetime import DateTime 59 53 from ea_model.iso_19103_2005_schema_language.basic_types.primitive.date_and_time.date import Date 60 54 from ea_model.iso_19108_2006_temporal_schema.temporal_reference_system.tm_position import TM_Position 61 55 from ea_model.iso_19108_2006_temporal_schema.temporal_objects.tm_instant import TM_Instant 62 from ea_model.iso_191 15_2006_metadata_corrigendum.citation_and_responsible_party_information.ci_contact import CI_Contact56 from ea_model.iso_19108_2006_temporal_schema.temporal_objects.tm_period import TM_Period 63 57 from ea_model.iso_19115_2006_metadata_corrigendum.citation_and_responsible_party_information.ci_address import CI_Address 64 58 from ea_model.iso_19115_2006_metadata_corrigendum.citation_and_responsible_party_information.ci_onlineresource import CI_OnlineResource 65 59 from ea_model.iso_19115_2006_metadata_corrigendum.citation_and_responsible_party_information.ci_telephone import CI_Telephone 66 from ea_model.iso_19108_2006_temporal_schema.temporal_objects.tm_period import TM_Period 60 from ea_model.iso_19115_2006_metadata_corrigendum.citation_and_responsible_party_information.ci_contact import CI_Contact 61 from ea_model.moles3_4.utilities.mo_individual import MO_Individual 62 from ea_model.moles3_4.utilities.mo_organisation import MO_Organisation 63 from ea_model.moles3_4.utilities import mo_organisation 64 from ea_model.iso_19115_2006_metadata_corrigendum.citation_and_responsible_party_information.ci_date import CI_Date 65 from ea_model.iso_19115_2006_metadata_corrigendum.citation_and_responsible_party_information.ci_citation import CI_Citation 67 66 from ea_model.iso_19115_2006_metadata_corrigendum.constraint_information.md_constraints import MD_Constraints 68 67 from ea_model.iso_19115_2006_metadata_corrigendum.constraint_information.md_legalconstraints import MD_LegalConstraints 69 from ea_model. ceda_metadatamodel.ceda_project.ceda_project import CEDA_Project68 from ea_model.iso_19115_2006_metadata_corrigendum.citation_and_responsible_party_information.ci_responsibleparty import CI_ResponsibleParty 70 69 from ea_model.iso_19115_2006_metadata_corrigendum.metadata_entity_set_information.md_metadata import MD_Metadata 71 from ea_model.ceda_metadatamodel.ceda_utilities.ceda_review import CEDA_Review 72 from ea_model.iso_19115_2006_metadata_corrigendum.citation_and_responsible_party_information.ci_responsibleparty import CI_ResponsibleParty 73 from ea_model.iso_19115_2006_metadata_corrigendum.maintenance_information.md_maintenancefrequencycode import MD_MaintenanceFrequencyCode 74 from ea_model.iso_19115_2006_metadata_corrigendum.identification_information.md_keywords import MD_Keywords 70 from ea_model.iso_19115_2006_metadata_corrigendum.data_quality_information.dq_conformanceresult import DQ_ConformanceResult 71 from ea_model.iso_19115_2006_metadata_corrigendum.extent_information.ex_geographicboundingbox import EX_GeographicBoundingBox 72 from ea_model.iso_19115_2006_metadata_corrigendum.data_quality_information.dq_element import DQ_Element 75 73 76 74 base = '/exist/rest/atoms' … … 696 694 return ci_contact 697 695 698 def create CI_Individual(name = None, contactInfo = None):699 ''' 700 Creates a new CI_Individual instance696 def createMO_Individual(name = None, contactInfo = None): 697 ''' 698 Creates a new MO_Individual instance 701 699 @param name: a String 702 700 @param contactInfo: an array of CI_Contact 703 701 ''' 704 ci_party = CI_Individual()702 ci_party = MO_Individual() 705 703 if name: 706 704 ci_party.name = name … … 709 707 return ci_party 710 708 711 def createCI_Organization(name = None, contactInfo = None):712 '''713 Creates a new CI_Individual instance714 @param name: a String715 @param contactInfo: an array of CI_Contact716 '''717 ci_party = CI_Organisation()718 if name:719 ci_party.name = name720 if contactInfo:721 ci_party.contactInfo = contactInfo722 return ci_party723 724 709 def createMO_Organization(name = None, contactInfo = None): 725 710 ''' 726 711 Creates a new MO_Organization instance. 727 TEMPORARILY RETURNS A CI_ORGANIZATION BECAUSE A DB SCHEMA PROBLEM!!!!728 712 @param name: a String 729 713 @param contactInfo: an array of CI_Contact 730 714 ''' 731 ci_party = CI_Organisation()715 ci_party = MO_Organisation() 732 716 if name: 733 717 ci_party.name = name -
mauRepo/MolesManager/trunk/src/libs/migration/processor/dataEntity.py
r8392 r8408 42 42 hasMOBeenProcessed, getAtomDocumentHashByMO, extractTitle 43 43 from libs.migration.processor.deployment import DeploymentProcessor 44 from ea_model.moles3_4.utilities.mo_publicationstatevalue import MO_PublicationStateValue45 44 from logging import StreamHandler 46 45 import logging 47 46 from ea_model.iso_19115_2006_metadata_corrigendum.citation_and_responsible_party_information.ci_datetypecode import CI_DateTypeCode 48 47 from MolesManager.ceda_guid import CedaGUID 48 from ea_model.moles3_4.observation.mo_observationpublicationstatevalue import MO_ObservationPublicationStateValue 49 from MolesManager.codelist import MM_ObservationPublicationStateValue,\ 50 getCLValue 49 51 50 52 CEDA_TITLE = 'ceda_title' … … 124 126 if not hasMOBeenProcessed(self._dataEntityMigration): 125 127 docHash = getAtomDocumentHashByMO(self._dataEntityMigration) 126 ceda_observationCollection.publicationState = MO_PublicationStateValue.cl_working128 ceda_observationCollection.publicationState = getCLValue(MM_ObservationPublicationStateValue.cl_working) 127 129 self.epbRepo.moles3EPB.persistInstance(ceda_observationCollection) 128 130 self.epbRepo.migrationEPB.updateMigrationObject(self._dataEntityMigration, \ … … 179 181 try : 180 182 if self._dataEntityMigration.ceda_observation_coll_id: 181 obsColl = self.epbRepo.moles3EPB.search(CEDA_ObservationCollection, self._dataEntityMigration.ceda_observation_coll_id) 183 #obsColl = self.epbRepo.moles3EPB.search(CEDA_ObservationCollection, self._dataEntityMigration.ceda_observation_coll_id) 184 obsColl = self.epbRepo.moles3EPB.searchSelectiveLoad(CEDA_ObservationCollection, self._dataEntityMigration.ceda_observation_coll_id, \ 185 ['identifier']) 182 186 else: 183 187 obsColl = CEDA_ObservationCollection() -
mauRepo/MolesManager/trunk/src/libs/migration/processor/deployment.py
r8362 r8408 44 44 createCI_Contact, createCI_Address, createCI_OnlineResource,\ 45 45 createCI_Telephone, extractMolesTemporalRange, isoDateStringToTimeDate,\ 46 createTM_Period, createCI_Individual,findAccessLinksInMigrationDocument,\46 createTM_Period, findAccessLinksInMigrationDocument,\ 47 47 findLinksInDeployment, createMD_LegalConstraints,\ 48 48 createDQ_Element, createDQ_ConformanceResult, findUpdatedDate,\ … … 50 50 createCI_ResponsibleParty, extractUpdateFrequency,\ 51 51 findLinksInMigrationDocument, findSubTypeInDPT, extractMolesPublishedDate,\ 52 createMD_Keywords, hasMOBeenProcessed 53 from ea_model.moles3_4.utilities.mo_rolevalue import MO_RoleValue 52 createMD_Keywords, hasMOBeenProcessed, createMO_Individual 54 53 from ea_model.ceda_metadatamodel.ceda_observation.ceda_observation import CEDA_Observation 55 54 from libs.epb import EPB 56 55 from libs.migration.processor.deployment_data import DeploymentDataProcessor 57 from ea_model.moles3_4.utilities.mo_publicationstatevalue import MO_PublicationStateValue58 56 from libs.migration.exception.exceptions import NoDataLineage,\ 59 57 NoAssociatedAuthor … … 74 72 from ea_model.iso_19115_2006_metadata_corrigendum.maintenance_information.md_maintenancefrequencycode import MD_MaintenanceFrequencyCode 75 73 from ea_model.ceda_metadatamodel.ceda_result.ceda_curationvalue import CEDA_CurationValue 74 from ea_model.moles3_4.utilities.ceda_rolevalue import CEDA_RoleValue 75 from ea_model.moles3_4.observation.mo_observationpublicationstatevalue import MO_ObservationPublicationStateValue 76 from MolesManager.codelist import MM_RoleValue,\ 77 MM_ObservationPublicationStateValue, getCLValue 76 78 77 79 MET_GEO_FEATURE = 'Meteorological geographical features' … … 103 105 def _existsCEDAasPublisher(self): 104 106 for rp in self._ceda_observation.relatedParty: 105 if rp.role == MO_RoleValue.cl_publisher:107 if rp.role == getCLValue(MM_RoleValue.cl_publisher): 106 108 for party in rp.parties: 107 109 if party.name == DeploymentProcessor.publisherName: … … 199 201 200 202 py_date = None 201 cited_responsible = createCI_ResponsibleParty(role= CI_RoleCode.cl_publisher, \203 cited_responsible = createCI_ResponsibleParty(role=getCLValue(CI_RoleCode.cl_publisher), \ 202 204 organizationName='NERC - British Atmospheric Data Centre') 203 205 if doi.upper() == '10.5285/E8F43A51-0198-4323-A926-FE69225D57DD': … … 212 214 if py_date: 213 215 dt = createDate(py_date) 214 ci_date = createCI_Date( CI_DateTypeCode.cl_publication, date = dt)216 ci_date = createCI_Date(getCLValue(CI_DateTypeCode.cl_publication), date = dt) 215 217 i_authority = createCI_Citation("DOI", date = ci_date) 216 218 identifier = createMD_Identifier(code = doi, authority=i_authority) … … 267 269 int_description = "download directly from archive" 268 270 i_sources.append(createMO_OnlineResource(linkage = dwn['href'], name = dwn['title'], \ 269 function = CI_OnLineFunctionCode.cl_download, \271 function = getCLValue(CI_OnLineFunctionCode.cl_download), \ 270 272 description = int_description, applicationProfile = int_applicationProfile)) 271 273 … … 280 282 i_logical_path = infodb_de['logical_path'] 281 283 282 i_category = ceda_curationvalue.CEDA_CurationValue.cl_a284 i_category = getCLValue(CEDA_CurationValue.cl_a) 283 285 if infodb_de and infodb_de.has_key('category') and infodb_de['category']: 284 286 i_category = CEDA_CurationValue.from_string(infodb_de['category'].lower()) … … 328 330 329 331 if party and not self._deploymentHasBeenProcessed: 330 observation.relatedParty.append(createMO_ResponsiblePartyInfo( MO_RoleValue.cl_publisher, [party]))331 observation.relatedParty.append(createMO_ResponsiblePartyInfo( MO_RoleValue.cl_custodian, deepcopy([party])))332 observation.relatedParty.append(createMO_ResponsiblePartyInfo( MO_RoleValue.cl_distributor, deepcopy([party])))333 observation.relatedParty.append(createMO_ResponsiblePartyInfo( MO_RoleValue.cl_pointofcontact, deepcopy([party])))334 observation.relatedParty.append(createMO_ResponsiblePartyInfo( MO_RoleValue.cl_metadataowner, deepcopy([party])))335 observation.relatedParty.append(createMO_ResponsiblePartyInfo( MO_RoleValue.cl_curator, deepcopy([party])))332 observation.relatedParty.append(createMO_ResponsiblePartyInfo(getCLValue(MM_RoleValue.cl_publisher), [party])) 333 observation.relatedParty.append(createMO_ResponsiblePartyInfo(getCLValue(MM_RoleValue.cl_custodian), deepcopy([party]))) 334 observation.relatedParty.append(createMO_ResponsiblePartyInfo(getCLValue(MM_RoleValue.cl_distributor), deepcopy([party]))) 335 observation.relatedParty.append(createMO_ResponsiblePartyInfo(getCLValue(MM_RoleValue.cl_pointofcontact), deepcopy([party]))) 336 observation.relatedParty.append(createMO_ResponsiblePartyInfo(getCLValue(MM_RoleValue.cl_metadataowner), deepcopy([party]))) 337 observation.relatedParty.append(createMO_ResponsiblePartyInfo(getCLValue(MM_RoleValue.cl_curator), deepcopy([party]))) 336 338 return 337 339 #Still have to update observation.result.source … … 346 348 if doc_date: 347 349 i_date = createDate(isoDateTimeStringToTimeDate(doc_date)) 348 ci_dates.append(createCI_Date( CI_DateTypeCode.cl_revision, date = i_date))350 ci_dates.append(createCI_Date(getCLValue(CI_DateTypeCode.cl_revision), date = i_date)) 349 351 else: 350 352 i_date = createDate(isoDateTimeStringToTimeDate(datetime.datetime.now())) 351 ci_dates.append(createCI_Date( CI_DateTypeCode.cl_creation, date = i_date))353 ci_dates.append(createCI_Date(getCLValue(CI_DateTypeCode.cl_creation), date = i_date)) 352 354 353 355 i_specification = createCI_Citation(title = "CEDA Data Quality Statement", date=ci_dates) … … 504 506 if access_link and len(access_link) == 1: 505 507 i_use_limitation.append("Access to these data is restricted. To obtain access please apply for access at: %s" % (access_link[0]['href'])) 506 i_accessConstraints.append( MD_RestrictionCode.cl_restricted)508 i_accessConstraints.append(getCLValue(MD_RestrictionCode.cl_restricted)) 507 509 observation.permission = createMD_LegalConstraints(useLimitation = i_use_limitation, accessConstrains = i_accessConstraints) 508 510 … … 534 536 return 535 537 536 i_party = create CI_Individual(name = 'Graham Parton')537 i_reviewer = createMO_ResponsiblePartyInfo( MO_RoleValue.cl_processor, [i_party])538 ceda_observation. internalReview.append( \539 createCEDA_Review(reviewer=i_reviewer, reviewFrequency= CEDA_ReviewFrequencyValue.cl_yearly, \540 reviewStatus= CEDA_ReviewStatusValue.cl_required))538 i_party = createMO_Individual(name = 'Graham Parton') 539 i_reviewer = createMO_ResponsiblePartyInfo(getCLValue(MM_RoleValue.cl_processor), [i_party]) 540 ceda_observation.metadataManagement.append( \ 541 createCEDA_Review(reviewer=i_reviewer, reviewFrequency=getCLValue(CEDA_ReviewFrequencyValue.cl_yearly), \ 542 reviewStatus=getCLValue(CEDA_ReviewStatusValue.cl_required))) 541 543 542 544 def _assignLanguage(self, ceda_observation): … … 546 548 i_date_stamp = createDate(datetime.datetime.now()) 547 549 #i_contact = createCI_Citation("", date = i_date_stamp) 548 i_contact = createCI_ResponsibleParty( CI_RoleCode.cl_user)550 i_contact = createCI_ResponsibleParty(getCLValue(CI_RoleCode.cl_user)) 549 551 ceda_observation.metadata = createMD_Metadata(date_stamp=i_date_stamp, contact = [i_contact], language = "English") 550 552 … … 582 584 583 585 if len(ret['ind']) > 0: 584 i_party = create CI_Individual(name = ret['ind'][0])585 observation.relatedParty.append(createMO_ResponsiblePartyInfo( MO_RoleValue.cl_author, [i_party]))586 i_party = createMO_Individual(name = ret['ind'][0]) 587 observation.relatedParty.append(createMO_ResponsiblePartyInfo(getCLValue(MM_RoleValue.cl_author), [i_party])) 586 588 if len(ret['org']) > 0: 587 589 i_party = createMO_Organization(name = ret['org'][0]) 588 observation.relatedParty.append(createMO_ResponsiblePartyInfo( MO_RoleValue.cl_author, [i_party]))590 observation.relatedParty.append(createMO_ResponsiblePartyInfo(getCLValue(MM_RoleValue.cl_author), [i_party])) 589 591 590 592 if len(ret['ind']) > 1: … … 610 612 i_party = [] 611 613 for nm in ind_names: 612 i_party.append(create CI_Individual(name = nm))614 i_party.append(createMO_Individual(name = nm)) 613 615 614 616 for nm in org_names: … … 617 619 if i_party: 618 620 if not self._deploymentHasBeenProcessed: 619 observation.relatedParty.append(createMO_ResponsiblePartyInfo( MO_RoleValue.cl_coinvestigator, i_party))621 observation.relatedParty.append(createMO_ResponsiblePartyInfo(getCLValue(MM_RoleValue.cl_coinvestigator), i_party)) 620 622 return 621 623 #Still have to update observation.permission … … 642 644 #Is a first time process? 643 645 if not hasMOBeenProcessed(self._deploymentMigration): 644 ceda_observation.publicationState = MO_PublicationStateValue.cl_working646 ceda_observation.publicationState = getCLValue(MM_ObservationPublicationStateValue.cl_working) 645 647 docHash = getAtomDocumentHashByMO(self._dataEntityMigration) 646 648 self.epbRepo.moles3EPB.persistInstance(ceda_observation) -
mauRepo/MolesManager/trunk/src/libs/migration/processor/deployment_data.py
r8358 r8408 35 35 findSummary, findDocumentationInMigrationDocument, createCI_Citation,\ 36 36 createMO_OnlineResource, findLinksInDeployment 37 from ea_model.moles3_4.utilities. mo_publicationstatevalue import MO_PublicationStateValue37 from ea_model.moles3_4.utilities.ceda_publicationstatevalue import CEDA_PublicationStateValue 38 38 39 39 class DeploymentDataProcessor(object): … … 64 64 i_documentation = createCI_Citation("Documentation resource") 65 65 i_resource = createMO_OnlineResource(doc_link[0]['href']) 66 project = createCEDA_Project(abstract=i_abstract, publication_state= MO_PublicationStateValue.cl_working, \66 project = createCEDA_Project(abstract=i_abstract, publication_state=CEDA_PublicationStateValue.cl_working, \ 67 67 documentation=i_documentation, project_resource=i_resource) 68 68 self._commitDeploymentMigration(project, activity, 'ceda_project_id')
Note: See TracChangeset
for help on using the changeset viewer.