Пример #1
0
    def _serialize_breakdown(self, entity: Entity, filter: Filter, team_id: int):
        if isinstance(filter.breakdown, list) and "all" in filter.breakdown:
            result = []
            filter.breakdown = filter.breakdown if filter.breakdown and isinstance(filter.breakdown, list) else []
            filter.breakdown.remove("all")

            # handle breakdown by all and by specific props separately
            if filter.breakdown:
                result.extend(self._format_breakdown_query(entity, filter, team_id))

            filter.breakdown = ["all"]
            all_result = self._format_breakdown_query(entity, filter, team_id)

            result.extend(all_result)
        else:
            result = self._format_breakdown_query(entity, filter, team_id)
        return result
Пример #2
0
    def _serialize_entity(self, entity: Entity, filter: Filter,
                          team: Team) -> List[Dict[str, Any]]:
        serialized: Dict[str, Any] = {
            "action": entity.to_dict(),
            "label": entity.name,
            "count": 0,
            "data": [],
            "labels": [],
            "days": [],
        }
        if filter.breakdown:
            if "all" in filter.breakdown and isinstance(
                    filter.breakdown, list):
                result = []
                filter.breakdown = filter.breakdown if filter.breakdown and isinstance(
                    filter.breakdown, list) else []
                filter.breakdown.remove("all")

                if filter.breakdown:
                    result.extend(
                        self._format_breakdown_query(entity, filter, team))

                filter.breakdown = ["all"]
                all_result = self._format_breakdown_query(entity, filter, team)

                result.extend(all_result)
            else:
                result = self._format_breakdown_query(entity, filter, team)
        else:
            result = self._format_normal_query(entity, filter, team)

        serialized_data = []

        for queried_metric in result:
            serialized_copy = copy.deepcopy(serialized)
            serialized_copy.update(queried_metric)
            serialized_data.append(serialized_copy)

        if filter.display == TRENDS_CUMULATIVE:

            serialized_data = self._handle_cumulative(serialized_data)

        return serialized_data