Mercurial > libervia-backend
changeset 3673:bd13391ee29e
core (memory/sqla): fix `fileUpdate`
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 08 Sep 2021 17:58:48 +0200 |
parents | e4054b648111 |
children | eeb8be32d644 |
files | sat/memory/sqla.py |
diffstat | 1 files changed, 7 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/sat/memory/sqla.py Wed Sep 08 17:58:48 2021 +0200 +++ b/sat/memory/sqla.py Wed Sep 08 17:58:48 2021 +0200 @@ -19,6 +19,7 @@ import sys import time import asyncio +import copy from datetime import datetime from asyncio.subprocess import PIPE from pathlib import Path @@ -981,14 +982,15 @@ )).scalar_one() except NoResultFound: raise exceptions.NotFound + old_value = copy.deepcopy(value) update_cb(value) - stmt = update(orm_col).filter_by(id=file_id) - if not value: + stmt = update(File).filter_by(id=file_id).values({column: value}) + if not old_value: # because JsonDefaultDict convert NULL to an empty dict, we have to - # test both for empty dict and None when we have and empty dict - stmt = stmt.where((orm_col == None) | (orm_col == value)) + # test both for empty dict and None when we have an empty dict + stmt = stmt.where((orm_col == None) | (orm_col == old_value)) else: - stmt = stmt.where(orm_col == value) + stmt = stmt.where(orm_col == old_value) result = await session.execute(stmt) await session.commit()