52
52
from sentry .types .group import SUBSTATUS_UPDATE_CHOICES , GroupSubStatus , PriorityLevel
53
53
from sentry .users .models .user import User
54
54
from sentry .users .services .user import RpcUser
55
+ from sentry .users .services .user .serial import serialize_generic_user
55
56
from sentry .users .services .user .service import user_service
56
57
from sentry .users .services .user_option import user_option_service
57
58
from sentry .utils import metrics
@@ -194,8 +195,6 @@ def update_groups(
194
195
195
196
result = dict (serializer .validated_data )
196
197
197
- acting_user = user if user .is_authenticated else None
198
-
199
198
discard = result .get ("discard" )
200
199
if discard :
201
200
return handle_discard (request , groups , projects , acting_user )
@@ -219,7 +218,6 @@ def update_groups(
219
218
projects ,
220
219
project_lookup ,
221
220
acting_user ,
222
- user ,
223
221
result ,
224
222
)
225
223
except MultipleProjectsError :
@@ -232,7 +230,6 @@ def update_groups(
232
230
project_lookup ,
233
231
status_details ,
234
232
acting_user ,
235
- user ,
236
233
)
237
234
238
235
return prepare_response (
@@ -344,19 +341,25 @@ def handle_resolve_in_release(
344
341
projects : Sequence [Project ],
345
342
project_lookup : Mapping [int , Project ],
346
343
acting_user : RpcUser | User | None ,
347
- user : RpcUser | User | AnonymousUser ,
348
344
result : MutableMapping [str , Any ],
349
345
) -> tuple [dict [str , Any ], int | None ]:
350
346
res_type = None
351
347
release = None
352
348
commit = None
353
349
self_assign_issue = "0"
350
+ new_status_details = {}
354
351
if acting_user :
355
352
user_options = user_option_service .get_many (
356
353
filter = {"user_ids" : [acting_user .id ], "keys" : ["self_assign_issue" ]}
357
354
)
358
355
if user_options :
359
356
self_assign_issue = user_options [0 ].value
357
+ serialized_user = user_service .serialize_many (
358
+ filter = dict (user_ids = [acting_user .id ]), as_user = serialize_generic_user (acting_user )
359
+ )
360
+ if serialized_user :
361
+ new_status_details ["actor" ] = serialized_user [0 ]
362
+
360
363
res_status = None
361
364
if status == "resolvedInNextRelease" or status_details .get ("inNextRelease" ):
362
365
# TODO(jess): We may want to support this for multi project, but punting on it for now
@@ -371,12 +374,7 @@ def handle_resolve_in_release(
371
374
"version" : ""
372
375
}
373
376
374
- serialized_user = user_service .serialize_many (filter = dict (user_ids = [user .id ]), as_user = user )
375
- new_status_details = {
376
- "inNextRelease" : True ,
377
- }
378
- if serialized_user :
379
- new_status_details ["actor" ] = serialized_user [0 ]
377
+ new_status_details ["inNextRelease" ] = True
380
378
res_type = GroupResolution .Type .in_next_release
381
379
res_type_str = "in_next_release"
382
380
res_status = GroupResolution .Status .pending
@@ -387,12 +385,7 @@ def handle_resolve_in_release(
387
385
activity_type = ActivityType .SET_RESOLVED_IN_RELEASE .value
388
386
activity_data = {"version" : "" }
389
387
390
- serialized_user = user_service .serialize_many (filter = dict (user_ids = [user .id ]), as_user = user )
391
- new_status_details = {
392
- "inUpcomingRelease" : True ,
393
- }
394
- if serialized_user :
395
- new_status_details ["actor" ] = serialized_user [0 ]
388
+ new_status_details ["inUpcomingRelease" ] = True
396
389
res_type = GroupResolution .Type .in_upcoming_release
397
390
res_type_str = "in_upcoming_release"
398
391
res_status = GroupResolution .Status .pending
@@ -409,12 +402,7 @@ def handle_resolve_in_release(
409
402
"version" : release .version
410
403
}
411
404
412
- serialized_user = user_service .serialize_many (filter = dict (user_ids = [user .id ]), as_user = user )
413
- new_status_details = {
414
- "inRelease" : release .version ,
415
- }
416
- if serialized_user :
417
- new_status_details ["actor" ] = serialized_user [0 ]
405
+ new_status_details ["inRelease" ] = release .version
418
406
res_type = GroupResolution .Type .in_release
419
407
res_type_str = "in_release"
420
408
res_status = GroupResolution .Status .resolved
@@ -426,13 +414,8 @@ def handle_resolve_in_release(
426
414
commit = status_details ["inCommit" ]
427
415
activity_type = ActivityType .SET_RESOLVED_IN_COMMIT .value
428
416
activity_data = {"commit" : commit .id }
429
- serialized_user = user_service . serialize_many ( filter = dict ( user_ids = [ user . id ]), as_user = user )
417
+ new_status_details [ "inCommit" ] = serialize ( commit , acting_user )
430
418
431
- new_status_details = {
432
- "inCommit" : serialize (commit , user ),
433
- }
434
- if serialized_user :
435
- new_status_details ["actor" ] = serialized_user [0 ]
436
419
res_type_str = "in_commit"
437
420
else :
438
421
res_type_str = "now"
@@ -473,7 +456,6 @@ def handle_resolve_in_release(
473
456
res_type ,
474
457
res_status ,
475
458
acting_user ,
476
- user ,
477
459
self_assign_issue ,
478
460
activity_type ,
479
461
activity_data ,
@@ -482,7 +464,7 @@ def handle_resolve_in_release(
482
464
483
465
issue_resolved .send_robust (
484
466
organization_id = projects [0 ].organization_id ,
485
- user = ( acting_user or user ) ,
467
+ user = acting_user ,
486
468
group = group ,
487
469
project = project_lookup [group .project_id ],
488
470
resolution_type = res_type_str ,
@@ -506,7 +488,6 @@ def process_group_resolution(
506
488
res_type : int | None ,
507
489
res_status : int | None ,
508
490
acting_user : RpcUser | User | None ,
509
- user : RpcUser | User | AnonymousUser ,
510
491
self_assign_issue : str ,
511
492
activity_type : int ,
512
493
activity_data : MutableMapping [str , Any ],
@@ -521,7 +502,7 @@ def process_group_resolution(
521
502
"release" : release ,
522
503
"type" : res_type ,
523
504
"status" : res_status ,
524
- "actor_id" : user .id if user and user .is_authenticated else None ,
505
+ "actor_id" : acting_user .id if acting_user and acting_user .is_authenticated else None ,
525
506
}
526
507
527
508
# We only set `current_release_version` if GroupResolution type is
@@ -700,7 +681,6 @@ def handle_other_status_updates(
700
681
project_lookup : Mapping [int , Project ],
701
682
status_details : dict [str , Any ],
702
683
acting_user : RpcUser | User | None ,
703
- user : RpcUser | User | AnonymousUser ,
704
684
) -> dict [str , Any ]:
705
685
group_ids = [group .id for group in group_list ]
706
686
queryset = Group .objects .filter (id__in = group_ids )
@@ -721,9 +701,7 @@ def handle_other_status_updates(
721
701
group_list , acting_user , projects , sender = update_groups
722
702
)
723
703
else :
724
- result ["statusDetails" ] = handle_ignored (
725
- group_list , status_details , acting_user , user
726
- )
704
+ result ["statusDetails" ] = handle_ignored (group_list , status_details , acting_user )
727
705
result ["inbox" ] = None
728
706
else :
729
707
result ["statusDetails" ] = {}
0 commit comments