diff --git a/backend/src/api_types.py b/backend/src/api_types.py index e3ef3310..69152eac 100644 --- a/backend/src/api_types.py +++ b/backend/src/api_types.py @@ -27,7 +27,7 @@ class ProteinEntry(CamelModel): name: str length: int mass: float - species_name: str | None = None + species_name: str content: str | None = None refs: str | None = None @@ -58,5 +58,7 @@ class UploadStatus(CamelModel): class EditBody(CamelModel): old_name: str # so we can identify the exact row we need to change new_name: str + old_species_name: str # so we can identify the exact row we need to change + new_species_name: str new_content: str | None = None new_refs: str | None = None diff --git a/backend/src/server.py b/backend/src/server.py index f9537d79..1b00ae08 100644 --- a/backend/src/server.py +++ b/backend/src/server.py @@ -213,8 +213,8 @@ def edit_protein_entry(body: EditBody): if body.new_name != body.old_name: os.rename(pdb_file_name(body.old_name), pdb_file_name(body.new_name)) - name_changed = False with Database() as db: + name_changed = False if body.new_name != body.old_name: db.execute( """UPDATE proteins SET name = %s WHERE name = %s""", @@ -225,6 +225,15 @@ def edit_protein_entry(body: EditBody): ) name_changed = True + if body.new_species_name != body.old_species_name: + db.execute( + """UPDATE species_proteins SET species_id = (SELECT id FROM species WHERE name = %s) WHERE protein_id = (SELECT id FROM proteins WHERE name = %s)""", + [ + body.new_species_name, + body.old_name if not name_changed else body.new_name, + ], + ) + if body.new_content is not None: db.execute( """UPDATE proteins SET content = %s WHERE name = %s""", diff --git a/frontend/src/routes/edit/[proteinName]/+page.svelte b/frontend/src/routes/edit/[proteinName]/+page.svelte index 9a33f54b..f8c2e781 100644 --- a/frontend/src/routes/edit/[proteinName]/+page.svelte +++ b/frontend/src/routes/edit/[proteinName]/+page.svelte @@ -1,6 +1,6 @@
@@ -64,6 +78,22 @@ > {/if} + +
+
+ + {#if allSpecies} +