1
1
import logging
2
2
3
- from django .db .models import OuterRef , Subquery
3
+ from django .db .models import OuterRef , QuerySet , Subquery
4
4
from django .shortcuts import get_object_or_404
5
5
from django_filters .rest_framework import DjangoFilterBackend
6
6
from rest_framework import filters , mixins , viewsets
7
7
8
8
from api .shared .mixins import RepoPropertyMixin
9
9
from codecov_auth .authentication .repo_auth import RepositoryLegacyTokenAuthentication
10
- from core .models import Commit
10
+ from core .models import Commit , Pull
11
11
from services .task import TaskService
12
12
13
13
from .permissions import PullUpdatePermission
14
- from .serializers import PullSerializer
14
+ from .serializers import PullIdSerializer , PullSerializer
15
15
16
16
log = logging .getLogger (__name__ )
17
17
@@ -30,8 +30,11 @@ class PullViewSet(
30
30
authentication_classes = [RepositoryLegacyTokenAuthentication ]
31
31
permission_classes = [PullUpdatePermission ]
32
32
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
+
35
38
if self .request .method == "PUT" :
36
39
# Note: We create a new pull if needed to make sure that they can be updated
37
40
# with a base before the upload has finished processing.
@@ -41,7 +44,7 @@ def get_object(self):
41
44
return obj
42
45
return get_object_or_404 (self .get_queryset (), pullid = pullid )
43
46
44
- def get_queryset (self ):
47
+ def get_queryset (self ) -> QuerySet :
45
48
return self .repo .pull_requests .annotate (
46
49
ci_passed = Subquery (
47
50
Commit .objects .filter (
@@ -50,7 +53,7 @@ def get_queryset(self):
50
53
)
51
54
)
52
55
53
- def perform_update (self , serializer ) :
56
+ def perform_update (self , serializer : PullSerializer ) -> Pull :
54
57
result = super ().perform_update (serializer )
55
58
TaskService ().pulls_sync (repoid = self .repo .repoid , pullid = self .kwargs .get ("pk" ))
56
59
return result
0 commit comments