File tree Expand file tree Collapse file tree 1 file changed +15
-14
lines changed Expand file tree Collapse file tree 1 file changed +15
-14
lines changed Original file line number Diff line number Diff line change @@ -332,20 +332,21 @@ def _get_token_from_authentication_server(
332332 scope = content .get ("scope" , "" )
333333 expires = make_aware (expires )
334334
335- try :
336- access_token = AccessToken .objects .select_related ("application" , "user" ).get (token = token )
337- except AccessToken .DoesNotExist :
338- access_token = AccessToken .objects .create (
339- token = token ,
340- user = user ,
341- application = None ,
342- scope = scope ,
343- expires = expires
344- )
345- else :
346- access_token .expires = expires
347- access_token .scope = scope
348- access_token .save ()
335+ with transaction .atomic ():
336+ access_token , _created = AccessToken \
337+ .objects .select_related ("application" , "user" )\
338+ .select_for_update ()\
339+ .get_or_create (token = token ,
340+ defaults = {
341+ "user" : user ,
342+ "application" : None ,
343+ "scope" : scope ,
344+ "expires" : expires ,
345+ })
346+ if not _created :
347+ access_token .scope = scope
348+ access_token .expires = expires
349+ access_token .save ()
349350
350351 return access_token
351352
You can’t perform that action at this time.
0 commit comments