5
5
from buildbot .www import resource
6
6
from buildbot .www .avatar import AvatarBase
7
7
from buildbot .www .auth import UserInfoProviderBase , bytes2unicode
8
- from twisted .internet import defer
8
+ from twisted .internet import defer , threads
9
9
from twisted .cred .error import UnauthorizedLogin
10
10
11
11
__version__ = "0.0.1"
@@ -34,7 +34,7 @@ def __init__(self, *, conf: Path | None = None, **kwargs):
34
34
35
35
def requestAvatarId (self , cred ):
36
36
if self .check_credentials (cred .username , cred .password ):
37
- return defer .succeed (f" { cred .username } @netauth" )
37
+ return defer .succeed (cred .username + b" @netauth" )
38
38
return defer .fail (UnauthorizedLogin ())
39
39
40
40
def check_credentials (self , username : str , password : str ) -> bool :
@@ -51,39 +51,43 @@ def getUserInfo(self, username):
51
51
if not username :
52
52
return defer .fail (ValueError ("username not found" ))
53
53
54
- try :
55
- entity = self .netauth .entity_info (username )
56
-
57
- if entity is None :
58
- return defer .fail (ValueError ("entity not found" ))
59
-
60
- id = entity .id
61
- email = f"{ id } @netauth"
62
- if (meta := entity .meta ) is not None :
63
- full_name = meta .display_name or meta .legal_name or id
64
- groups = meta .groups or []
65
- else :
66
- full_name = entity .id
67
- groups = []
68
-
69
- return defer .succeed (
70
- {
71
- "email" : email ,
72
- "full_name" : full_name ,
73
- "groups" : groups ,
74
- }
75
- )
76
- except netauth .error .NetAuthRpcError as e :
77
- return defer .fail (e )
54
+ def thr ():
55
+ try :
56
+ entity = self .netauth .entity_info (username )
57
+
58
+ if entity is None :
59
+ return defer .fail (ValueError ("entity not found" ))
60
+
61
+ id = entity .id
62
+ email = f"{ id } @netauth"
63
+ if (meta := entity .meta ) is not None :
64
+ full_name = meta .display_name or meta .legal_name or id
65
+ groups = meta .groups or []
66
+ else :
67
+ full_name = entity .id
68
+ groups = []
69
+
70
+ return defer .succeed (
71
+ {
72
+ "email" : email ,
73
+ "full_name" : full_name ,
74
+ "groups" : groups ,
75
+ }
76
+ )
77
+ except netauth .error .NetAuthRpcError as e :
78
+ return defer .fail (e )
79
+ return threads .deferToThread (thr )
78
80
79
81
def getUserAvatar (self , email , username , size , defaultAvatarUrl ):
80
82
print (repr (email ), repr (username ), repr (size ), repr (defaultAvatarUrl ))
81
83
username = bytes2unicode (username )
82
84
if username and username .endswith ("@netauth" ):
83
- try :
84
- kv = self .netauth .entity_kv_get (username .removesuffix ("@netauth" ), "avatar" )
85
- avatar = kv .get ("avatar" )
86
- if avatar :
87
- raise resource .Redirect (avatar [0 ])
88
- except netauth .error .NetAuthRpcError :
89
- pass
85
+ def thr ():
86
+ try :
87
+ kv = self .netauth .entity_kv_get (username .removesuffix ("@netauth" ), "avatar" )
88
+ avatar = kv .get ("avatar" )
89
+ if avatar :
90
+ raise resource .Redirect (avatar [0 ])
91
+ except netauth .error .NetAuthRpcError :
92
+ pass
93
+ return threads .deferToThread (thr )
0 commit comments