3535 UserPassedSerializer ,
3636)
3737from siarnaq .api .user .models import User
38+ from siarnaq .api .user .permissions import IsEmailVerified
3839from siarnaq .gcloud import titan
3940
4041logger = structlog .get_logger (__name__ )
@@ -107,6 +108,7 @@ def get_permissions(self):
107108 case "create" :
108109 return (
109110 IsAuthenticated (),
111+ IsEmailVerified (),
110112 IsEpisodeAvailable (),
111113 (~ IsOnTeam )(),
112114 )
@@ -118,7 +120,7 @@ def get_permissions(self):
118120 @action (
119121 detail = False ,
120122 methods = ["get" , "put" , "patch" ],
121- permission_classes = (IsAuthenticated , IsEpisodeAvailable ),
123+ permission_classes = (IsAuthenticated , IsEmailVerified , IsEpisodeAvailable ),
122124 serializer_class = TeamPrivateSerializer ,
123125 )
124126 def me (self , request , * , episode_id ):
@@ -163,7 +165,7 @@ def me(self, request, *, episode_id):
163165 detail = False ,
164166 methods = ["post" ],
165167 serializer_class = TeamLeaveSerializer ,
166- permission_classes = (IsAuthenticated , IsEpisodeAvailable ),
168+ permission_classes = (IsAuthenticated , IsEmailVerified , IsEpisodeAvailable ),
167169 )
168170 def leave (self , request , * , episode_id ):
169171 """Leave a team."""
@@ -178,7 +180,12 @@ def leave(self, request, *, episode_id):
178180 detail = False ,
179181 methods = ["post" ],
180182 serializer_class = TeamJoinSerializer ,
181- permission_classes = (IsAuthenticated , IsEpisodeAvailable , ~ IsOnTeam ),
183+ permission_classes = (
184+ IsAuthenticated ,
185+ IsEmailVerified ,
186+ IsEpisodeAvailable ,
187+ ~ IsOnTeam , # type: ignore[operator]
188+ ),
182189 )
183190 def join (self , request , pk = None , * , episode_id ):
184191 serializer = self .get_serializer (data = request .data )
@@ -221,7 +228,7 @@ def join(self, request, pk=None, *, episode_id):
221228 detail = False ,
222229 methods = ["post" ],
223230 serializer_class = TeamAvatarSerializer ,
224- permission_classes = (IsAuthenticated , IsEpisodeAvailable ),
231+ permission_classes = (IsAuthenticated , IsEmailVerified , IsEpisodeAvailable ),
225232 )
226233 def avatar (self , request , pk = None , * , episode_id ):
227234 """Update uploaded avatar."""
@@ -254,7 +261,7 @@ def get_queryset(self):
254261 @action (
255262 detail = True ,
256263 methods = ["get" ],
257- permission_classes = (IsAuthenticated ,),
264+ permission_classes = (IsAuthenticated , IsEmailVerified ),
258265 serializer_class = UserPassedSerializer ,
259266 )
260267 def check (self , request , pk = None , episode_id = None ):
@@ -280,7 +287,7 @@ def compute(self, request, pk=None, episode_id=None):
280287 detail = False ,
281288 methods = ["get" , "put" ],
282289 serializer_class = TeamReportSerializer ,
283- permission_classes = (IsAuthenticated , IsEpisodeAvailable ),
290+ permission_classes = (IsAuthenticated , IsEmailVerified , IsEpisodeAvailable ),
284291 )
285292 def report (self , request , pk = None , * , episode_id ):
286293 """Retrieve or update team strategy report"""
0 commit comments