diff --git a/CHANGES.txt b/CHANGES.txt index 62c4edc2fec55f4ccf7dbd4baaf5112f1f2c2d21..9f1e5c4ff8541e51236102bad164d23d31ef3b00 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -20,6 +20,7 @@ Templates --------- * Added 'match' filter, allowing to use regular expression matches +* Changed 'extended' jobs to allow their own templates override the parent's * Added missing tests for 'wordwrap' filter * Re-wrote documentation on additional Jinja filters diff --git a/mkexp b/mkexp index 200388a7fea3ac8303cfcce32e33a6f15d722c3c..cf1000a2c71c3878721e370f07cd1828d983426a 100755 --- a/mkexp +++ b/mkexp @@ -410,14 +410,14 @@ for subjob, subconfig in jobs_config.iteritems(): # Allow simple inheritance # Support deprecated keyword 'extends' but warn user - template_job = subjob + extended_job = None if 'extends' in subconfig or '.extends' in subconfig: if 'extends' in subconfig: keyword_warning('extends') - template_job = subconfig['extends'] + extended_job = subconfig['extends'] else: - template_job = subconfig['.extends'] - pre_config.merge(jobs_config[template_job]) + extended_job = subconfig['.extends'] + pre_config.merge(jobs_config[extended_job]) # Add actual subjob config pre_config.merge(subconfig) @@ -471,13 +471,19 @@ for subjob, subconfig in jobs_config.iteritems(): format_namelist(groups) # Generate job script - expand_template_file(job_config, - ( get_exp_template_name(config.experiment_id, - template_job, ''), - get_exp_template_name(config.experiment_kind, - template_job), - get_exp_template_name(ExpConfig.default_name, - template_job) ), + template_search_list = ( + get_exp_template_name(config.experiment_id, subjob, ''), + get_exp_template_name(config.experiment_kind, subjob), + get_exp_template_name(ExpConfig.default_name, subjob) + ) + if extended_job: + template_search_list += ( + get_exp_template_name(config.experiment_id, extended_job, ''), + get_exp_template_name(config.experiment_kind, extended_job), + get_exp_template_name(ExpConfig.default_name, extended_job) + ) + + expand_template_file(job_config, template_search_list, get_exp_script_name(config.experiment_id, subjob), os.path.join(backup_dir, config.experiment_id+'.'+subjob))