Three things related to tag_browser_category_order:

1) do a proper migration of the tweak
2) Fix the server's usage of the migrated value.
3) Fix an exception in the server related to hierarchical user categories
This commit is contained in:
Charles Haley 2022-08-26 11:44:17 +01:00
parent 5b94406fcc
commit 80e4b7dde9
2 changed files with 8 additions and 4 deletions

View File

@ -1228,6 +1228,9 @@ class TagsModel(QAbstractItemModel): # {{{
order = {'*': 1000}
defvalue = order.get('*', 1000)
self.row_map.sort(key=lambda x: order.get(x, defvalue))
# Migrate the tweak to the new pref. First, make sure the order is valid
self.row_map = self.get_ordered_categories(pref_data_override=[[k,None] for k in self.row_map])
self.db.new_api.set_pref('tag_browser_category_order', self.row_map)
return data
def set_categories_filter(self, txt):

View File

@ -222,10 +222,8 @@ def create_toplevel_tree(category_data, items, field_metadata, opts, db):
last_category_node, category_node_map, root = None, {}, {'id':None, 'children':[]}
node_id_map = {}
category_nodes, recount_nodes = [], []
order = db.pref('tag_browser_category_order') or {}
defvalue = order.get('*', 100)
categories = [category for category in field_metadata if category in category_data]
scats = sorted(categories, key=lambda x: order.get(x, defvalue))
scats = db.pref('tag_browser_category_order', [k for k in category_data])
scats = [k for k in scats if k in field_metadata]
for category in scats:
is_user_category = category.startswith('@')
@ -361,6 +359,9 @@ def process_category_node(
opts, tag_map, hierarchical_tags, node_to_tag_map, collapse_nodes,
intermediate_nodes, hierarchical_items):
category = items[category_node['id']]['category']
if category not in category_data:
# This can happen for user categories that are hierarchical and missing their parent.
return
category_items = category_data[category]
cat_len = len(category_items)
if cat_len <= 0: