Skip to content

Commit ea04665

Browse files
Merge pull request #7824 from specify/issue-7823
Fix Chronostratigraphy Tree name in new disciplines
2 parents 154359d + 1f1f1d8 commit ea04665

2 files changed

Lines changed: 12 additions & 8 deletions

File tree

specifyweb/backend/setup_tool/api.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,8 @@ def create_discipline(data, run_apply_schema_defaults_async: bool = True):
312312
apply_default_uniqueness_rules(new_discipline)
313313

314314
# Update tree scoping
315-
update_tree_scoping(geologictimeperiodtreedef, new_discipline.id)
315+
if geologictimeperiodtreedef_url or geologictimeperiodtreedef_id:
316+
update_tree_scoping(geologictimeperiodtreedef, new_discipline.id)
316317

317318
return {"discipline_id": new_discipline.id}
318319

specifyweb/backend/setup_tool/setup_tasks.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -227,25 +227,28 @@ def create_discipline_and_trees_task(data: dict):
227227
is_paleo_geo = discipline_type in PALEO_DISCIPLINES or discipline_type in GEOLOGY_DISCIPLINES
228228
default_tree = DEFAULT_TREE.copy()
229229

230-
logger.info('Creating Chronostratigraphy tree')
231-
default_chronostrat_tree = default_tree.copy()
232-
default_chronostrat_tree['fullnamedirection'] = -1
233-
chronostrat_result = api.create_geologictimeperiod_tree(default_chronostrat_tree)
234-
chronostrat_treedef_id = _required_treedef_id(chronostrat_result, 'Geologictimeperiod')
235-
data['discipline']['geologictimeperiodtreedef_id'] = chronostrat_treedef_id
236-
230+
# The discipline will temporarily use the last created trees, the new trees are attached at the end.
237231
logger.info('Creating discipline')
238232
discipline_result = api.create_discipline(data['discipline'])
239233
discipline_id = discipline_result.get('discipline_id')
240234
default_tree['discipline_id'] = discipline_id
241235
logger.debug(discipline_id)
242236

243237
# Ensure discipline id is set for tree creation
238+
if isinstance(data.get('geologictimeperiodtreedef'), dict):
239+
data['geologictimeperiodtreedef']['discipline_id'] = data['geologictimeperiodtreedef'].get('discipline_id') or discipline_id
244240
if isinstance(data.get('geographytreedef'), dict):
245241
data['geographytreedef']['discipline_id'] = data['geographytreedef'].get('discipline_id') or discipline_id
246242
if isinstance(data.get('taxontreedef'), dict):
247243
data['taxontreedef']['discipline_id'] = data['taxontreedef'].get('discipline_id') or discipline_id
248244

245+
logger.info('Creating Chronostratigraphy tree')
246+
default_chronostrat_tree = default_tree.copy()
247+
default_chronostrat_tree['fullnamedirection'] = -1
248+
logger.info(default_chronostrat_tree)
249+
chronostrat_result = api.create_geologictimeperiod_tree(default_chronostrat_tree)
250+
chronostrat_treedef_id = _required_treedef_id(chronostrat_result, 'Geologictimeperiod')
251+
249252
logger.info('Creating geography tree')
250253
geography_result = api.create_geography_tree(data['geographytreedef'].copy(), global_tree=False)
251254
geography_treedef_id = _required_treedef_id(geography_result, 'Geography')

0 commit comments

Comments
 (0)