diff --git a/api/fields/snippet_fields.py b/api/fields/snippet_fields.py index 4327fb2a73e..ec0821fc85a 100644 --- a/api/fields/snippet_fields.py +++ b/api/fields/snippet_fields.py @@ -17,6 +17,7 @@ snippet_list_fields = { "icon_info": fields.Raw, "tags": fields.List(fields.Nested(tag_fields)), "created_by": fields.String, + "author_name": fields.String, "created_at": TimestampField, "updated_by": fields.String, "updated_at": TimestampField, diff --git a/api/models/snippet.py b/api/models/snippet.py index beb88ab2247..b6fbc4ed824 100644 --- a/api/models/snippet.py +++ b/api/models/snippet.py @@ -104,6 +104,12 @@ class CustomizedSnippet(Base): return db.session.get(Account, self.created_by) return None + @property + def author_name(self) -> str | None: + """Get the creator account name.""" + account = self.created_by_account + return account.name if account else None + @property def updated_by_account(self) -> Account | None: """Get the account that last updated this snippet.""" diff --git a/api/tests/unit_tests/fields/test_snippet_fields.py b/api/tests/unit_tests/fields/test_snippet_fields.py new file mode 100644 index 00000000000..ad8ee6e8f0b --- /dev/null +++ b/api/tests/unit_tests/fields/test_snippet_fields.py @@ -0,0 +1,28 @@ +from types import SimpleNamespace + +from flask_restx import marshal + +from fields.snippet_fields import snippet_list_fields + + +def test_snippet_list_fields_include_author_name() -> None: + snippet = SimpleNamespace( + id="snippet-1", + name="Snippet", + description="Reusable node", + type="node", + version=1, + use_count=0, + is_published=False, + icon_info=None, + tags=[], + created_by="account-1", + author_name="Alice", + created_at=None, + updated_by="account-1", + updated_at=None, + ) + + result = marshal(snippet, snippet_list_fields) + + assert result["author_name"] == "Alice"