diff --git a/seed/models/compliance_metrics.py b/seed/models/compliance_metrics.py index 3d6f010347..d48de4a79a 100644 --- a/seed/models/compliance_metrics.py +++ b/seed/models/compliance_metrics.py @@ -7,7 +7,6 @@ from typing import Union from django.db import models -from django.http import QueryDict from seed.lib.superperms.orgs.models import Organization from seed.models.columns import Column @@ -54,10 +53,6 @@ def evaluate(self, user_ali): "cycles": [], } - query_dict = QueryDict(mutable=True) - if self.filter_group and self.filter_group.query_dict: - query_dict.update(self.filter_group.query_dict) - # grab cycles cycle_ids = self.cycles.values_list("pk", flat=True).order_by("start") response["graph_data"]["labels"] = list(self.cycles.values_list("name", flat=True).order_by("start")) @@ -85,7 +80,7 @@ def evaluate(self, user_ali): for col in self.x_axis_columns.all(): columns.append(col) - property_response = properties_across_cycles_with_filters(self.organization_id, user_ali, cycle_ids, query_dict, columns) + property_response = properties_across_cycles_with_filters(self.organization_id, user_ali, cycle_ids, self.filter_group, columns) datasets = { "y": {"data": [], "label": "compliant"}, diff --git a/seed/models/filter_group.py b/seed/models/filter_group.py index c776f0bf25..bd91ed8cdd 100644 --- a/seed/models/filter_group.py +++ b/seed/models/filter_group.py @@ -36,8 +36,13 @@ def views(self, views, columns=[]): views = ViewClass.objects.select_related(related_model, "state").filter( **{f"{related_model}__organization_id": self.organization_id} ) - if not columns: - columns = Column.retrieve_all(org_id=self.organization_id, inventory_type=related_model, only_used=False, include_related=False) + columns = Column.retrieve_all( + org_id=self.organization_id, + inventory_type=related_model, + only_used=False, + include_related=False, + column_ids=[c.id for c in columns], + ) if self.query_dict: qd = QueryDict(mutable=True) qd.update(self.query_dict) diff --git a/seed/utils/properties.py b/seed/utils/properties.py index 0d466b686d..3ea79b7206 100644 --- a/seed/utils/properties.py +++ b/seed/utils/properties.py @@ -171,7 +171,7 @@ def properties_across_cycles(org_id, ali, profile_id, cycle_ids=[]): return results -def properties_across_cycles_with_filters(org_id, user_ali, cycle_ids=[], query_dict={}, columns=[]): +def properties_across_cycles_with_filters(org_id, user_ali, cycle_ids=[], filter_group=None, columns=[]): # get relevant views views_list = PropertyView.objects.select_related("property", "state", "cycle").filter( property__organization_id=org_id, @@ -179,6 +179,10 @@ def properties_across_cycles_with_filters(org_id, user_ali, cycle_ids=[], query_ property__access_level_instance__lft__gte=user_ali.lft, property__access_level_instance__rgt__lte=user_ali.rgt, ) + + if filter_group: + views_list = filter_group.views(views_list, columns) + views_list = _serialize_views(views_list, columns, org_id) # group by cycle