Merge pull request #2541 from BigRoy/family_filter_include_exclude

This commit is contained in:
Milan Kolar 2022-01-24 21:47:18 +01:00 committed by GitHub
commit 6238d63ef8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 3 deletions

View file

@ -308,6 +308,7 @@
"family_filter_profiles": [ "family_filter_profiles": [
{ {
"hosts": [], "hosts": [],
"is_include": true,
"task_types": [], "task_types": [],
"filter_families": [] "filter_families": []
} }

View file

@ -267,7 +267,9 @@
"label": "Task types" "label": "Task types"
}, },
{ {
"type": "splitter" "type": "boolean",
"key": "is_include",
"label": "Exclude / Include"
}, },
{ {
"type": "template", "type": "template",

View file

@ -231,6 +231,7 @@ class FamilyConfigCache:
self.dbcon = dbcon self.dbcon = dbcon
self.family_configs = {} self.family_configs = {}
self._family_filters_set = False self._family_filters_set = False
self._family_filters_is_include = True
self._require_refresh = True self._require_refresh = True
@classmethod @classmethod
@ -252,7 +253,7 @@ class FamilyConfigCache:
"icon": self.default_icon() "icon": self.default_icon()
} }
if self._family_filters_set: if self._family_filters_set:
item["state"] = False item["state"] = not self._family_filters_is_include
return item return item
def refresh(self, force=False): def refresh(self, force=False):
@ -316,20 +317,23 @@ class FamilyConfigCache:
matching_item = filter_profiles(profiles, profiles_filter) matching_item = filter_profiles(profiles, profiles_filter)
families = [] families = []
is_include = True
if matching_item: if matching_item:
families = matching_item["filter_families"] families = matching_item["filter_families"]
is_include = matching_item["is_include"]
if not families: if not families:
return return
self._family_filters_set = True self._family_filters_set = True
self._family_filters_is_include = is_include
# Replace icons with a Qt icon we can use in the user interfaces # Replace icons with a Qt icon we can use in the user interfaces
for family in families: for family in families:
family_info = { family_info = {
"name": family, "name": family,
"icon": self.default_icon(), "icon": self.default_icon(),
"state": True "state": is_include
} }
self.family_configs[family] = family_info self.family_configs[family] = family_info