Exemple #1
0
 def _get_persons_url(self, filter: StickinessFilter,
                      entity: Entity) -> List[Dict[str, Any]]:
     persons_url = []
     for interval_idx in range(1, filter.total_intervals):
         filter_params = filter.to_params()
         extra_params = {
             "stickiness_days": interval_idx,
             "entity_id": entity.id,
             "entity_type": entity.type,
             "entity_math": entity.math,
         }
         parsed_params: Dict[str, str] = encode_get_request_params({
             **filter_params,
             **extra_params
         })
         persons_url.append({
             "filter":
             extra_params,
             "url":
             f"api/person/stickiness/?{urllib.parse.urlencode(parsed_params)}",
         })
     return persons_url
Exemple #2
0
    def process_result(self, counts: List, filter: StickinessFilter,
                       entity: Entity) -> Dict[str, Any]:
        response: Dict[int, int] = {}
        for result in counts:
            response[result[1]] = result[0]

        labels = []
        data = []
        for day in range(1, filter.total_intervals):
            label = "{} {}{}".format(day, filter.interval,
                                     "s" if day > 1 else "")
            labels.append(label)
            data.append(response[day] if day in response else 0)
        filter_params = filter.to_params()

        return {
            "labels": labels,
            "days": [day for day in range(1, filter.total_intervals)],
            "data": data,
            "count": sum(data),
            "filter": filter_params,
            "persons_urls": self._get_persons_url(filter, entity),
        }