Skip to content

Commit e0a9102

Browse files
authored
Fix issue when syncing with new child definitions (#571)
1 parent 3d9efce commit e0a9102

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

docker-compose.dev.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,8 @@ services:
5353
es_logstash_setup:
5454
volumes:
5555
- ./src:/app:ro
56+
57+
taxonomy:
58+
stdin_open: true
59+
volumes:
60+
- ./src:/app:ro

src/database/model/named_relation.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,17 @@ def create_taxonomy(class_name: str, table_name: str) -> type[Taxonomy]:
6969
int | None,
7070
Field(foreign_key=f"{table_name}.identifier", default=None, nullable=True),
7171
),
72+
parent=(
73+
ForwardRef(class_name) | None,
74+
Relationship(
75+
back_populates="children",
76+
sa_relationship_kwargs=dict(remote_side=f"{class_name}.identifier"),
77+
),
78+
),
7279
children=(
7380
List[ForwardRef(class_name)], # type: ignore
7481
Relationship(
75-
sa_relationship_kwargs=dict(
76-
cascade="all",
77-
backref=backref("parent", remote_side=f"{class_name}.identifier"),
78-
)
82+
back_populates="parent",
7983
),
8084
),
8185
)

src/taxonomies/synchronize_taxonomy.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,17 @@ def synchronize_term(term: Taxonomy):
104104
term_object.official = True
105105
term_object.children = synchronized_children
106106
return term_object
107+
107108
if term.name not in added_terms:
108109
logging.info(f"Adding new term {term.name!r}")
110+
if term.parent is not None and (
111+
parent := db_definitions.get(term.parent.name.casefold())
112+
):
113+
term.parent = parent
109114
added_terms[term.name] = term
110115
session.add(term)
111116
return term
117+
112118
logging.warning(f"Term {term.name!r} defined more than once!")
113119
return added_terms[term.name]
114120

0 commit comments

Comments
 (0)