diff --git a/InvenTree/users/models.py b/InvenTree/users/models.py index a2c8b01453..7f92a1f62c 100644 --- a/InvenTree/users/models.py +++ b/InvenTree/users/models.py @@ -420,16 +420,23 @@ def update_group_roles(group, debug=False): if permission_string not in permissions_to_add: permissions_to_delete.add(permission_string) + # Pre-fetch all the RuleSet objects + rulesets = { + r.name: r for r in RuleSet.objects.filter(group=group).prefetch_related('group') + } + # Get all the rulesets associated with this group for r in RuleSet.RULESET_CHOICES: rulename = r[0] - try: - ruleset = RuleSet.objects.get(group=group, name=rulename) - except RuleSet.DoesNotExist: - # Create the ruleset with default values (if it does not exist) - ruleset = RuleSet.objects.create(group=group, name=rulename) + if rulename in rulesets: + ruleset = rulesets[rulename] + else: + try: + ruleset = RuleSet.objects.get(group=group, name=rulename) + except RuleSet.DoesNotExist: + ruleset = RuleSet.objects.create(group=group, name=rulename) # Which database tables does this RuleSet touch? models = ruleset.get_models()