Skip to content

fix: avoid reusing singleton field template instances across libraries - #1503

Open
JasonReb0rn wants to merge 1 commit into
TagStudioDev:mainfrom
JasonReb0rn:fix/default-field-template-singleton
Open

fix: avoid reusing singleton field template instances across libraries#1503
JasonReb0rn wants to merge 1 commit into
TagStudioDev:mainfrom
JasonReb0rn:fix/default-field-template-singleton

Conversation

@JasonReb0rn

Copy link
Copy Markdown

Summary

DEFAULT_FIELD_TEMPLATES in constants.py is a tuple of pre-built TextFieldTemplate/DatetimeFieldTemplate instances, reused as-is whenever a library is created (Library.create_library(), MigrationTo200). Once SQLAlchemy flushes those instances to a session, it remembers them as persistent. So any library created after the first one in the same process gets skipped entirely and silently ends up with no default field templates.

Fix: replace the shared tuple with a default_field_templates() function that builds fresh instances each call, and update both calls accordingly.

Mostly invisible in normal single-library app usage, but affects anything creating multiple libraries per process (e.g. the test suite).

Tasks Completed

  • Platforms Tested:
    • Windows x86
    • Windows ARM
    • macOS x86
    • macOS ARM
    • Linux x86
    • Linux ARM
  • Tested For:
    • Basic functionality
    • PyInstaller executable

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant