MCPcopy
hub / github.com/getsentry/sentry / _bulk_retrieve_snapshot_values

Function _bulk_retrieve_snapshot_values

src/sentry/issues/attributes.py:182–230  ·  view source on GitHub ↗
(
    group_values_list: Iterable[Group | GroupValues], group_deleted: bool = False
)

Source from the content-addressed store, hash-verified

180
181
182def _bulk_retrieve_snapshot_values(
183 group_values_list: Iterable[Group | GroupValues], group_deleted: bool = False
184) -> list[GroupAttributesSnapshot]:
185 group_assignee_map = {
186 ga["group_id"]: ga
187 for ga in GroupAssignee.objects.filter(
188 group_id__in=[gv.id for gv in group_values_list]
189 ).values("group_id", "user_id", "team_id")
190 }
191
192 group_owner_map = {}
193
194 for group_owner in (
195 GroupOwner.objects.annotate(
196 position=Window(Rank(), partition_by=[F("group_id"), F("type")], order_by="-date_added")
197 )
198 .filter(position=1, group_id__in=[g.id for g in group_values_list])
199 .values("group_id", "user_id", "team_id", "type")
200 ):
201 group_owner_map[(group_owner["group_id"], group_owner["type"])] = group_owner
202
203 snapshots = []
204 for group_value in group_values_list:
205 assignee = group_assignee_map.get(group_value.id)
206 suspect_owner = group_owner_map.get((group_value.id, GroupOwnerType.SUSPECT_COMMIT.value))
207 ownership_owner = group_owner_map.get((group_value.id, GroupOwnerType.OWNERSHIP_RULE.value))
208 codeowners_owner = group_owner_map.get((group_value.id, GroupOwnerType.CODEOWNERS.value))
209 snapshot: GroupAttributesSnapshot = {
210 "group_deleted": group_deleted,
211 "project_id": group_value.project_id,
212 "group_id": group_value.id,
213 "status": group_value.status,
214 "substatus": group_value.substatus,
215 "priority": group_value.priority,
216 "first_release": group_value.first_release_id,
217 "first_seen": group_value.first_seen.strftime("%Y-%m-%dT%H:%M:%S.%fZ"),
218 "num_comments": group_value.num_comments,
219 "timestamp": datetime.now().isoformat(),
220 "assignee_user_id": assignee["user_id"] if assignee else None,
221 "assignee_team_id": assignee["team_id"] if assignee else None,
222 "owner_suspect_commit_user_id": suspect_owner["user_id"] if suspect_owner else None,
223 "owner_ownership_rule_user_id": ownership_owner["user_id"] if ownership_owner else None,
224 "owner_ownership_rule_team_id": ownership_owner["team_id"] if ownership_owner else None,
225 "owner_codeowners_user_id": codeowners_owner["user_id"] if codeowners_owner else None,
226 "owner_codeowners_team_id": codeowners_owner["team_id"] if codeowners_owner else None,
227 }
228 snapshots.append(snapshot)
229
230 return snapshots
231
232
233@receiver(

Calls 6

getMethod · 0.65
appendMethod · 0.65
WindowInterface · 0.50
valuesMethod · 0.45
filterMethod · 0.45
nowMethod · 0.45