30
30
from sentry .models .activity import Activity
31
31
from sentry .models .orgauthtoken import is_org_auth_token_auth , update_org_auth_token_last_used
32
32
from sentry .models .project import Project
33
- from sentry .models .release import Release , ReleaseStatus
33
+ from sentry .models .release import (
34
+ Release ,
35
+ ReleaseStatus ,
36
+ filter_releases_by_environments ,
37
+ filter_releases_by_projects ,
38
+ )
34
39
from sentry .models .releases .exceptions import ReleaseCommitError
35
40
from sentry .models .releases .release_project import ReleaseProject
36
41
from sentry .models .releases .util import SemverFilter
@@ -307,7 +312,11 @@ def get(self, request: Request, organization) -> Response:
307
312
# health data in the last 24 hours.
308
313
debounce_update_release_health_data (organization , filter_params ["project_id" ])
309
314
310
- queryset = Release .objects .filter (organization = organization )
315
+ queryset = Release .objects .filter (organization_id = organization .id )
316
+ queryset = filter_releases_by_environments (
317
+ queryset , [e .id for e in filter_params .get ("environment_objects" , [])]
318
+ )
319
+ queryset = queryset .annotate (date = F ("date_added" ))
311
320
312
321
if status_filter :
313
322
try :
@@ -320,9 +329,6 @@ def get(self, request: Request, organization) -> Response:
320
329
else :
321
330
queryset = queryset .filter (status = status_int )
322
331
323
- queryset = queryset .annotate (date = F ("date_added" ))
324
-
325
- queryset = add_environment_to_queryset (queryset , filter_params )
326
332
if query :
327
333
try :
328
334
queryset = _filter_releases_by_query (queryset , organization , query , filter_params )
@@ -333,12 +339,11 @@ def get(self, request: Request, organization) -> Response:
333
339
)
334
340
335
341
select_extra = {}
336
-
337
- queryset = queryset .distinct ()
338
342
if flatten :
343
+ queryset = queryset .filter (projects__id__in = filter_params ["project_id" ])
339
344
select_extra ["_for_project_id" ] = "sentry_release_project.project_id"
340
-
341
- queryset = queryset . filter ( projects__id__in = filter_params ["project_id" ])
345
+ else :
346
+ queryset = filter_releases_by_projects ( queryset , filter_params ["project_id" ])
342
347
343
348
if sort == "date" :
344
349
queryset = queryset .order_by ("-date" )
@@ -664,20 +669,16 @@ def get(self, request: Request, organization) -> Response:
664
669
except NoProjects :
665
670
return Response ([])
666
671
672
+ queryset = Release .objects .filter (organization_id = organization .id )
673
+ queryset = add_date_filter_to_queryset (queryset , filter_params )
674
+ queryset = filter_releases_by_projects (queryset , filter_params ["project_id" ])
675
+ queryset = filter_releases_by_environments (
676
+ queryset , [e .id for e in filter_params .get ("environment_objects" , [])]
677
+ )
667
678
queryset = (
668
- Release .objects .filter (
669
- organization = organization , projects__id__in = filter_params ["project_id" ]
670
- )
671
- .annotate (
672
- date = F ("date_added" ),
673
- )
674
- .values ("version" , "date" )
675
- .order_by ("-date" )
676
- .distinct ()
679
+ queryset .annotate (date = F ("date_added" )).values ("version" , "date" ).order_by ("-date" )
677
680
)
678
681
679
- queryset = add_date_filter_to_queryset (queryset , filter_params )
680
- queryset = add_environment_to_queryset (queryset , filter_params )
681
682
if query :
682
683
try :
683
684
queryset = _filter_releases_by_query (queryset , organization , query , filter_params )
0 commit comments