Skip to content

Commit

Permalink
Merge pull request #42 from jordantgh/tags_pane
Browse files Browse the repository at this point in the history
Add realtime tag update mechanism

Directly modifies the central tables of the relevant dbs
when a tag is added or removed
  • Loading branch information
jordantgh authored Dec 22, 2023
2 parents 14c5d13 + 83a4ffb commit 7f1928e
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 8 deletions.
14 changes: 9 additions & 5 deletions app/controller/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from model.threading import SearchThread, FilePreviewThread, FileProcessingThread
from views.list import DataListItem
from PyQt5.QtWidgets import QListWidgetItem
from model.database import TableDBManager

import os
import re
Expand Down Expand Up @@ -104,19 +105,22 @@ def _connect_sigs(
self.signal_connections.append((signal, slot))

def add_tag(self, tag: 'str'):
self.model.last_selected_table.add_tag(tag)
self.model.last_selected_table.add_tag(
tag, self.model.table_db_manager)

self.curr_elems.tags_display_widget.clear()
self.curr_elems.tags_display_widget.clear()
for tag in self.model.last_selected_table.get_tags():
self.curr_elems.tags_display_widget.addTag(tag)

def remove_tag(self, tag: 'str'):
self.model.last_selected_table.remove_tag(tag)
self.model.last_selected_table.remove_tag(
tag, self.model.table_db_manager
)

self.curr_elems.tags_display_widget.clear()
for tag in self.model.last_selected_table.get_tags():
self.curr_elems.tags_display_widget.addTag(tag)

def _disconnect_sigs(self):
for signal, slot in self.signal_connections:
if signal and slot:
Expand Down Expand Up @@ -267,7 +271,7 @@ def preview_processed_table(
self.curr_elems.tags_display_widget.clear()
for tag in table.get_tags():
self.curr_elems.tags_display_widget.addTag(tag)

table_data = {
"sheet": self.model.table_db_manager.get_processed_table_data(
table.id, context
Expand Down
8 changes: 5 additions & 3 deletions app/model/article_managers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from views.list import ListItem, DataListItem, ArticleListItem
from model.database import TableDBManager

from utils.constants import PageIdentity
from uuid import uuid4, UUID
Expand Down Expand Up @@ -108,14 +109,15 @@ def set_checked_state(self, checked_state: 'bool', context: 'PageIdentity'):
if context in self.observers:
self.notify_observers(context)

def add_tag(self, tag: 'str'):
def add_tag(self, tag: 'str', db_manager: 'TableDBManager'):
if tag not in self.tags:
self.tags.append(tag)
# self.notify_observers(PageIdentity.PRUNED)
db_manager.update_table_tags(self.id, self.tags)

def remove_tag(self, tag: 'str'):
def remove_tag(self, tag: 'str', db_manager: 'TableDBManager'):
if tag in self.tags:
self.tags.remove(tag)
db_manager.update_table_tags(self.id, self.tags)

def get_tags(self):
return self.tags
Expand Down
17 changes: 17 additions & 0 deletions app/model/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,23 @@ def update_table(
)
session.commit()

def update_table_tags(self, table_id: 'str', tags: 'list[str]'):
self._update_table_tags(ProcessedTableDBEntry, table_id, tags)
self._update_table_tags(PostPruningTableDBEntry, table_id, tags)

def _update_table_tags(
self,
table_class: 'TableDBEntry',
table_id: 'str',
tags: 'list[str]'
):
_, Session = self._get_engine_and_session(table_class)
with Session() as session:
table_entry: 'TableDBEntry' = session.query(table_class).filter_by(table_id=table_id).first()
if table_entry:
table_entry.tags = tags
session.commit()

def get_processed_table_data(
self,
table_id: 'str',
Expand Down

0 comments on commit 7f1928e

Please sign in to comment.