Skip to content

Commit b3bd772

Browse files
committed
perf: one less db call for Library.tag_display_name
1 parent 4064481 commit b3bd772

File tree

5 files changed

+12
-13
lines changed

5 files changed

+12
-13
lines changed

src/tagstudio/core/library/alchemy/library.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -314,22 +314,21 @@ def get_field_name_from_id(self, field_id: int) -> _FieldID:
314314
return f
315315
return None
316316

317-
def tag_display_name(self, tag_id: int) -> str:
318-
with Session(self.engine) as session:
319-
tag = session.scalar(select(Tag).where(Tag.id == tag_id))
320-
if not tag:
321-
return "<NO TAG>"
317+
def tag_display_name(self, tag: Tag | None) -> str:
318+
if not tag:
319+
return "<NO TAG>"
322320

323-
if tag.disambiguation_id:
321+
if tag.disambiguation_id:
322+
with Session(self.engine) as session:
324323
disam_tag = session.scalar(select(Tag).where(Tag.id == tag.disambiguation_id))
325324
if not disam_tag:
326325
return "<NO DISAM TAG>"
327326
disam_name = disam_tag.shorthand
328327
if not disam_name:
329328
disam_name = disam_tag.name
330329
return f"{tag.name} ({disam_name})"
331-
else:
332-
return tag.name
330+
else:
331+
return tag.name
333332

334333
def open_library(self, library_dir: Path, storage_path: Path | None = None) -> LibraryStatus:
335334
is_new: bool = True

src/tagstudio/qt/modals/tag_database.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def delete_tag(self, tag: Tag):
6363
message_box = QMessageBox(
6464
QMessageBox.Question, # type: ignore
6565
Translations["tag.remove"],
66-
Translations.format("tag.confirm_delete", tag_name=self.lib.tag_display_name(tag.id)),
66+
Translations.format("tag.confirm_delete", tag_name=self.lib.tag_display_name(tag)),
6767
QMessageBox.Ok | QMessageBox.Cancel, # type: ignore
6868
)
6969

src/tagstudio/qt/modals/tag_search.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ def callback(btp: build_tag.BuildTagPanel):
364364

365365
self.edit_modal = PanelModal(
366366
build_tag_panel,
367-
self.lib.tag_display_name(tag.id),
367+
self.lib.tag_display_name(tag),
368368
done_callback=(self.update_tags(self.search_field.text())),
369369
has_save=True,
370370
)

src/tagstudio/qt/widgets/tag.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ def set_tag(self, tag: Tag | None) -> None:
254254
)
255255

256256
if self.lib:
257-
self.bg_button.setText(escape_text(self.lib.tag_display_name(tag.id)))
257+
self.bg_button.setText(escape_text(self.lib.tag_display_name(tag)))
258258
else:
259259
self.bg_button.setText(escape_text(tag.name))
260260

src/tagstudio/qt/widgets/tag_box.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def __init__(
4747
self.set_tags(self.tags)
4848

4949
def set_tags(self, tags: typing.Iterable[Tag]):
50-
tags_ = sorted(list(tags), key=lambda tag: self.driver.lib.tag_display_name(tag.id))
50+
tags_ = sorted(list(tags), key=lambda tag: self.driver.lib.tag_display_name(tag))
5151
logger.info("[TagBoxWidget] Tags:", tags=tags)
5252
while self.base_layout.itemAt(0):
5353
self.base_layout.takeAt(0).widget().deleteLater()
@@ -81,7 +81,7 @@ def edit_tag(self, tag: Tag):
8181

8282
self.edit_modal = PanelModal(
8383
build_tag_panel,
84-
self.driver.lib.tag_display_name(tag.id),
84+
self.driver.lib.tag_display_name(tag),
8585
"Edit Tag",
8686
done_callback=lambda: self.driver.preview_panel.update_widgets(update_preview=False),
8787
has_save=True,

0 commit comments

Comments
 (0)