Repository filtering

This commit is contained in:
Ellwood Zwovic
2017-08-20 00:48:54 -07:00
parent 02fdc67d6b
commit 4ac2dc9c44

View File

@@ -616,6 +616,13 @@ else:
return True return True
return False 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: def match_category(blinfo) -> bool:
if filters['category'].lower() == 'all': if filters['category'].lower() == 'all':
return True return True
@@ -632,7 +639,8 @@ else:
for pkgname, metapkg in packages.items(): for pkgname, metapkg in packages.items():
blinfo = metapkg.versions[0].bl_info blinfo = metapkg.versions[0].bl_info
if match_category(blinfo)\ if match_repositories(metapkg)\
and match_category(blinfo)\
and match_support(blinfo)\ and match_support(blinfo)\
and match_installstate(metapkg): and match_installstate(metapkg):
if len(filters['search']) == 0: if len(filters['search']) == 0:
@@ -864,6 +872,7 @@ else:
'category': wm.addon_filter, 'category': wm.addon_filter,
'search': wm.package_search, 'search': wm.package_search,
'support': wm.addon_support, 'support': wm.addon_support,
'repository': set([repo.name for repo in wm.package_repositories if repo.enabled]),
'installstate': wm.package_install_filter, 'installstate': wm.package_install_filter,
} }
USERPREF_PT_packages.displayed_packages = filtered_packages(filters, _packages) USERPREF_PT_packages.displayed_packages = filtered_packages(filters, _packages)
@@ -1023,12 +1032,16 @@ else:
_packages = build_packagelist() _packages = build_packagelist()
# load repositories from disk
repos = get_repositories() repos = get_repositories()
wm = bpy.context.window_manager wm = bpy.context.window_manager
wm.package_repositories.clear() wm.package_repositories.clear()
#TODO: store repository props in .blend so enabled/disabled state can be remembered
for repo in repos: for repo in repos:
repo_prop = wm.package_repositories.add() repo_prop = wm.package_repositories.add()
repo_prop.name = repo.name repo_prop.name = repo.name
repo_prop.enabled = True
repo_prop.url = repo.url repo_prop.url = repo.url
# needed for lazy loading # needed for lazy loading