Skip to content

Commit 7613fa3

Browse files
authored
Merge c1920a1 into 05f2cf4
2 parents 05f2cf4 + c1920a1 commit 7613fa3

File tree

5 files changed

+26
-3
lines changed

5 files changed

+26
-3
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## 0.15
44

5+
### 0.15.5
6+
7+
- fix: Dont set `None` audit "context values".
8+
59
### 0.15.4
610

711
- fix: Undo accidental inclusion of alembic as required dependencies.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "sqlalchemy-declarative-extensions"
3-
version = "0.15.4"
3+
version = "0.15.5"
44
authors = [
55
{name = "Dan Cardin", email = "ddcardin@gmail.com"},
66
]

src/sqlalchemy_declarative_extensions/audit.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,9 @@ def create_audit_triggers(
296296
def set_context_values(connectable, **values):
297297
"""Set transaction-local context values, to be included on audit-tables."""
298298
for name, value in values.items():
299+
if value is None:
300+
continue
301+
299302
statement = f"SET LOCAL audit.{name} = '{value}'"
300303
connectable.execute(text(statement))
301304

tests/audit/test_context_values.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ class Base(_Base): # type: ignore # type: ignore
1919
__abstract__ = True
2020

2121

22-
context_columns = [Column("username", types.Unicode(), nullable=False)]
22+
context_columns = [
23+
Column("username", types.Unicode(), nullable=False),
24+
Column("nickname", types.Unicode(), nullable=True),
25+
]
2326

2427

2528
@audit(context_columns=context_columns)
@@ -48,6 +51,19 @@ def test_sets_session_values(pg):
4851
assert audit_row.audit_username == "foo@foo.com"
4952

5053

54+
def test_sets_session_value_to_none(pg):
55+
Base.metadata.create_all(bind=pg.connection())
56+
pg.commit()
57+
58+
set_context_values(pg, username="foo@foo.com", nickname=None)
59+
pg.add(Foo(id=1, name=None, json=None))
60+
pg.commit()
61+
62+
audit_row = pg.execute(Foo.__audit_table__.select()).fetchone()
63+
assert audit_row.audit_username == "foo@foo.com"
64+
assert audit_row.audit_nickname is None
65+
66+
5167
def test_fails_to_set_session_values(pg):
5268
Base.metadata.create_all(bind=pg.connection())
5369
pg.commit()

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)