Add versioned glossary YAML import and export
This commit is contained in:
@@ -14,6 +14,11 @@ from mka.application.glossary import (
|
||||
GlossaryConflictError,
|
||||
GlossaryRepository,
|
||||
)
|
||||
from mka.application.glossary_yaml import (
|
||||
GlossaryYamlError,
|
||||
export_glossary_yaml,
|
||||
import_glossary_yaml,
|
||||
)
|
||||
from mka.application.meeting_service import (
|
||||
STAGES,
|
||||
AppProgressEvent,
|
||||
@@ -63,6 +68,33 @@ def _render_glossary(repository: GlossaryRepository) -> None:
|
||||
"Store canonical core terms and recognition aliases. Compound phrases are "
|
||||
"composed from meeting context during protocol generation."
|
||||
)
|
||||
import_file = st.file_uploader(
|
||||
"Import glossary",
|
||||
type=["yaml", "yml"],
|
||||
key="glossary_import_file",
|
||||
help="Validate and atomically replace the SQLite glossary from versioned YAML.",
|
||||
)
|
||||
action_columns = st.columns(2)
|
||||
if action_columns[0].button("Import glossary", disabled=import_file is None):
|
||||
try:
|
||||
imported = import_glossary_yaml(import_file.getvalue())
|
||||
repository.replace_all(imported)
|
||||
except (GlossaryYamlError, GlossaryConflictError, ValueError) as exc:
|
||||
st.error(str(exc))
|
||||
else:
|
||||
st.session_state.glossary_import_message = (
|
||||
f"Imported {len(imported)} glossary entries."
|
||||
)
|
||||
st.rerun()
|
||||
action_columns[1].download_button(
|
||||
"Export glossary",
|
||||
data=export_glossary_yaml(repository.list()).encode("utf-8"),
|
||||
file_name="terminology-glossary.yaml",
|
||||
mime="application/yaml",
|
||||
)
|
||||
if message := st.session_state.pop("glossary_import_message", None):
|
||||
st.success(message)
|
||||
|
||||
with st.form("glossary_add"):
|
||||
columns = st.columns(2)
|
||||
canonical = columns[0].text_input("Canonical term")
|
||||
|
||||
Reference in New Issue
Block a user