From 4ac2dc9c44df01e3fedc77ac0c71321525bc547d Mon Sep 17 00:00:00 2001 From: Ellwood Zwovic Date: Sun, 20 Aug 2017 00:48:54 -0700 Subject: [PATCH] Repository filtering --- package_manager/__init__.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/package_manager/__init__.py b/package_manager/__init__.py index c13ce62..954fd61 100644 --- a/package_manager/__init__.py +++ b/package_manager/__init__.py @@ -616,6 +616,13 @@ else: return True return False + def match_repositories(metapkg) -> bool: + pkg = metapkg.get_display_version() + for repo in pkg.repositories: + if repo.name in filters['repository']: + return True + return False + def match_category(blinfo) -> bool: if filters['category'].lower() == 'all': return True @@ -632,7 +639,8 @@ else: for pkgname, metapkg in packages.items(): blinfo = metapkg.versions[0].bl_info - if match_category(blinfo)\ + if match_repositories(metapkg)\ + and match_category(blinfo)\ and match_support(blinfo)\ and match_installstate(metapkg): if len(filters['search']) == 0: @@ -864,6 +872,7 @@ else: 'category': wm.addon_filter, 'search': wm.package_search, 'support': wm.addon_support, + 'repository': set([repo.name for repo in wm.package_repositories if repo.enabled]), 'installstate': wm.package_install_filter, } USERPREF_PT_packages.displayed_packages = filtered_packages(filters, _packages) @@ -1023,12 +1032,16 @@ else: _packages = build_packagelist() + # load repositories from disk repos = get_repositories() wm = bpy.context.window_manager wm.package_repositories.clear() + + #TODO: store repository props in .blend so enabled/disabled state can be remembered for repo in repos: repo_prop = wm.package_repositories.add() repo_prop.name = repo.name + repo_prop.enabled = True repo_prop.url = repo.url # needed for lazy loading