11import logging
22
3- from django .db .models import OuterRef , Subquery
3+ from django .db .models import OuterRef , QuerySet , Subquery
44from django .shortcuts import get_object_or_404
55from django_filters .rest_framework import DjangoFilterBackend
66from rest_framework import filters , mixins , viewsets
77
88from api .shared .mixins import RepoPropertyMixin
99from codecov_auth .authentication .repo_auth import RepositoryLegacyTokenAuthentication
10- from core .models import Commit
10+ from core .models import Commit , Pull
1111from services .task import TaskService
1212
1313from .permissions import PullUpdatePermission
14- from .serializers import PullSerializer
14+ from .serializers import PullIdSerializer , PullSerializer
1515
1616log = logging .getLogger (__name__ )
1717
@@ -30,8 +30,11 @@ class PullViewSet(
3030 authentication_classes = [RepositoryLegacyTokenAuthentication ]
3131 permission_classes = [PullUpdatePermission ]
3232
33- def get_object (self ):
34- pullid = self .kwargs .get ("pk" )
33+ def get_object (self ) -> Pull :
34+ serializer = PullIdSerializer (data = {"pullid" : self .kwargs .get ("pk" )})
35+ serializer .is_valid (raise_exception = True )
36+ pullid = serializer .validated_data ["pullid" ]
37+
3538 if self .request .method == "PUT" :
3639 # Note: We create a new pull if needed to make sure that they can be updated
3740 # with a base before the upload has finished processing.
@@ -41,7 +44,7 @@ def get_object(self):
4144 return obj
4245 return get_object_or_404 (self .get_queryset (), pullid = pullid )
4346
44- def get_queryset (self ):
47+ def get_queryset (self ) -> QuerySet :
4548 return self .repo .pull_requests .annotate (
4649 ci_passed = Subquery (
4750 Commit .objects .filter (
@@ -50,7 +53,7 @@ def get_queryset(self):
5053 )
5154 )
5255
53- def perform_update (self , serializer ) :
56+ def perform_update (self , serializer : PullSerializer ) -> Pull :
5457 result = super ().perform_update (serializer )
5558 TaskService ().pulls_sync (repoid = self .repo .repoid , pullid = self .kwargs .get ("pk" ))
5659 return result
0 commit comments