|
1 |
| -from collections import namedtuple |
2 |
| -from datetime import timedelta |
3 | 1 | from typing import TypedDict
|
4 | 2 |
|
5 |
| -from django.utils import timezone |
6 |
| - |
7 |
| -from sentry import tsdb |
8 | 3 | from sentry.api.serializers import Serializer, register
|
9 | 4 | from sentry.models.environment import Environment, EnvironmentProject
|
10 |
| -from sentry.tsdb.base import TSDBModel |
11 |
| - |
12 |
| -StatsPeriod = namedtuple("StatsPeriod", ("segments", "interval")) |
13 | 5 |
|
14 | 6 |
|
15 | 7 | class EnvironmentSerializerResponse(TypedDict):
|
@@ -39,49 +31,3 @@ def serialize(
|
39 | 31 | "name": obj.environment.name,
|
40 | 32 | "isHidden": obj.is_hidden is True,
|
41 | 33 | }
|
42 |
| - |
43 |
| - |
44 |
| -class GroupEnvironmentWithStatsSerializer(EnvironmentSerializer): |
45 |
| - STATS_PERIODS = { |
46 |
| - "24h": StatsPeriod(24, timedelta(hours=1)), |
47 |
| - "30d": StatsPeriod(30, timedelta(hours=24)), |
48 |
| - } |
49 |
| - |
50 |
| - def __init__(self, group, since=None, until=None): |
51 |
| - self.group = group |
52 |
| - self.since = since |
53 |
| - self.until = until |
54 |
| - |
55 |
| - def get_attrs(self, item_list, user, **kwargs): |
56 |
| - attrs = {item: {"stats": {}} for item in item_list} |
57 |
| - items = {self.group.id: []} |
58 |
| - for item in item_list: |
59 |
| - items[self.group.id].append(item.id) |
60 |
| - |
61 |
| - for key, (segments, interval) in self.STATS_PERIODS.items(): |
62 |
| - until = self.until or timezone.now() |
63 |
| - since = self.since or until - (segments * interval) |
64 |
| - |
65 |
| - try: |
66 |
| - stats = tsdb.get_frequency_series( |
67 |
| - model=TSDBModel.frequent_environments_by_group, |
68 |
| - items=items, |
69 |
| - start=since, |
70 |
| - end=until, |
71 |
| - rollup=int(interval.total_seconds()), |
72 |
| - ) |
73 |
| - except NotImplementedError: |
74 |
| - # TODO(dcramer): probably should log this, but not worth |
75 |
| - # erring out |
76 |
| - stats = {} |
77 |
| - |
78 |
| - for item in item_list: |
79 |
| - attrs[item]["stats"][key] = [ |
80 |
| - (k, v[item.id]) for k, v in stats.get(self.group.id, {}) |
81 |
| - ] |
82 |
| - return attrs |
83 |
| - |
84 |
| - def serialize(self, obj, attrs, user, **kwargs): |
85 |
| - result = super().serialize(obj, attrs, user) |
86 |
| - result["stats"] = attrs["stats"] |
87 |
| - return result |
0 commit comments