From b99d9cda7421a0868a9962d1816f3a4533078607 Mon Sep 17 00:00:00 2001 From: RumovZ Date: Sat, 9 Jan 2021 12:34:46 +0100 Subject: [PATCH] Prettify frontend filter code --- pylib/anki/rsbackend.py | 6 +++--- qt/aqt/browser.py | 18 +++++++----------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/pylib/anki/rsbackend.py b/pylib/anki/rsbackend.py index 26bbc87ec..935381739 100644 --- a/pylib/anki/rsbackend.py +++ b/pylib/anki/rsbackend.py @@ -262,10 +262,10 @@ class RustBackend(RustBackendGenerated): err.ParseFromString(err_bytes) raise proto_exception_to_native(err) - def filters_to_searches(self, **kwargs) -> List[str]: + def filters_to_searches(self, filters: dict) -> List[str]: return [ - self.filter_to_search(pb.FilterToSearchIn(**dict([f]))) - for f in kwargs.items() + self.filter_to_search(pb.FilterToSearchIn(**{key: val})) + for key, val in filters.items() ] diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index bb5a5be55..b4a37422b 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -1128,7 +1128,7 @@ QTableView {{ gridline-color: {grid} }} item = SidebarItem( name, ":/icons/heart.svg", - lambda s=filt: self.setFilter(s), # type: ignore + self._filterFunc(filt), item_type=SidebarItemType.FILTER, ) root.addChild(item) @@ -1139,7 +1139,7 @@ QTableView {{ gridline-color: {grid} }} item = SidebarItem( t, ":/icons/tag.svg", - lambda t=t: self.setFilter(tag=t), # type: ignore + self._filterFunc(tag=t), item_type=SidebarItemType.TAG, ) root.addChild(item) @@ -1179,7 +1179,7 @@ QTableView {{ gridline-color: {grid} }} item = SidebarItem( m.name, ":/icons/notetype.svg", - lambda m=m: self.setFilter(note=m.name), # type: ignore + self._filterFunc(note=m.name), item_type=SidebarItemType.NOTETYPE, ) root.addChild(item) @@ -1207,12 +1207,11 @@ QTableView {{ gridline-color: {grid} }} ml.popupOver(self.form.filter) - def setFilter(self, *args, **kwargs): - # args are literal searches, kwargs are searches provided by the backend + def setFilter(self, *search_strings, **filters): try: - filters = self.col.backend.filters_to_searches(**kwargs) + filter_searches = self.col.backend.filters_to_searches(filters) search = self.col.backend.concatenate_searches( - sep=ConcatSeparator.AND, searches=list(args) + filters + sep=ConcatSeparator.AND, searches=list(search_strings) + filter_searches ) mods = self.mw.app.keyboardModifiers() if mods & Qt.AltModifier: @@ -1258,10 +1257,7 @@ QTableView {{ gridline-color: {grid} }} return self._simpleFilters( ( (tr(TR.BROWSING_WHOLE_COLLECTION), NamedFilter.WHOLE_COLLECTION), - ( - tr(TR.BROWSING_CURRENT_DECK), - NamedFilter.CURRENT_DECK, - ), + (tr(TR.BROWSING_CURRENT_DECK), NamedFilter.CURRENT_DECK), ) )