mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-python
synced 2026-01-15 09:53:32 +01:00
Fix errors reported by mypy
Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
f3ba709d21
commit
bfd0544ff8
13 changed files with 68 additions and 71 deletions
|
|
@ -74,11 +74,12 @@ class Auth(abc.ABC): # export
|
|||
@classmethod
|
||||
def load(cls, conf: Config, tp: str='') -> Self:
|
||||
if tp == '':
|
||||
tp = conf.get('type')
|
||||
if tp is None:
|
||||
val = conf.get('type')
|
||||
if val is None:
|
||||
msg = f'No type specified in auth configuration'
|
||||
conf.dump(ERR, msg)
|
||||
raise Exception(msg)
|
||||
tp = val
|
||||
return load_object(f'jwutils.auth.{tp}.Auth', Auth, 'Auth', conf)
|
||||
|
||||
def __init__(self, conf: Config):
|
||||
|
|
@ -112,7 +113,7 @@ class Auth(abc.ABC): # export
|
|||
return self._user(name)
|
||||
|
||||
@abc.abstractmethod
|
||||
def _users(self) -> list[User]:
|
||||
def _users(self) -> dict[str, User]:
|
||||
raise NotImplementedError
|
||||
|
||||
def _user_by_email(self, email: str) -> User:
|
||||
|
|
@ -128,7 +129,7 @@ class Auth(abc.ABC): # export
|
|||
return self._user_by_email(email)
|
||||
|
||||
@property
|
||||
def users(self) -> list[User]:
|
||||
def users(self) -> dict[str, User]:
|
||||
return self._users()
|
||||
|
||||
@abc.abstractmethod
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class User(UserBase): # export
|
|||
self.__conf = conf
|
||||
self.__auth = auth
|
||||
self.__groups: Optional[list[GroupBase]] = None
|
||||
self.__email = conf.get('email')
|
||||
self.__email: str = conf['email']
|
||||
|
||||
@property
|
||||
def conf(self):
|
||||
|
|
@ -51,14 +51,15 @@ class Auth(AuthBase): # export
|
|||
|
||||
def __init__(self, conf: Config):
|
||||
super().__init__(conf)
|
||||
self.___users: Optional[dict[str, User]] = None
|
||||
self.___users: Optional[dict[str, UserBase]] = None
|
||||
self.__groups = None
|
||||
self.__current_user: User|None = None
|
||||
self.__current_user: UserBase|None = None
|
||||
self.__user_by_email: Optional[dict[str, UserBase]] = None
|
||||
|
||||
@property
|
||||
def __users(self) -> User:
|
||||
def __users(self) -> dict[str, UserBase]:
|
||||
if self.___users is None:
|
||||
ret: dict[str, User] = {}
|
||||
ret: dict[str, UserBase] = {}
|
||||
for name in self.conf.entries('user'):
|
||||
conf = self.conf.branch('user.' + name)
|
||||
ret[name] = User(self, name, conf)
|
||||
|
|
@ -69,24 +70,24 @@ class Auth(AuthBase): # export
|
|||
slog(WARNING, f'Returning False for {access_type} access to resource {what} by {who}')
|
||||
return False
|
||||
|
||||
def _user(self, name) -> User:
|
||||
def _user(self, name) -> UserBase:
|
||||
return self.__users[name]
|
||||
|
||||
def _users(self) -> list[User]:
|
||||
def _users(self) -> dict[str, UserBase]:
|
||||
return self.__users
|
||||
|
||||
def _current_user(self) -> User:
|
||||
def _current_user(self) -> UserBase:
|
||||
if self.__current_user is None:
|
||||
self.__current_user = self._user(self.conf['current_user'])
|
||||
return self.__current_user
|
||||
|
||||
def _user_by_email(self, email: str) -> User:
|
||||
def _user_by_email(self, email: str) -> UserBase:
|
||||
if self.__user_by_email is None:
|
||||
ret: dict[str, User] = dict()
|
||||
ret: dict[str, UserBase] = dict()
|
||||
for user in self.__users.values():
|
||||
ret[user.email] = user
|
||||
self.__user_by_email = ret
|
||||
return self.__user_by_email[email]
|
||||
|
||||
def _projects(self, name, flags: ProjectFlags) -> list[str]:
|
||||
return None
|
||||
return []
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ class Auth(AuthBase): # export
|
|||
|
||||
def __init__(self, conf: Config):
|
||||
super().__init__(conf)
|
||||
self.___users: Optional[dict[str, User]] = None
|
||||
self.___users: Optional[dict[str, UserBase]] = None
|
||||
self.___user_by_email: Optional[dict[str, User]] = None
|
||||
self.__groups = None
|
||||
self.__current_user: User|None = None
|
||||
|
|
@ -66,9 +66,9 @@ class Auth(AuthBase): # export
|
|||
return bind(self.conf)
|
||||
|
||||
@property
|
||||
def __users(self) -> User:
|
||||
def __users(self) -> dict[str, UserBase]:
|
||||
if self.___users is None:
|
||||
ret: dict[str, User] = {}
|
||||
ret: dict[str, UserBase] = {}
|
||||
ret_by_email: dict[str, User] = {}
|
||||
for res in self.__conn.find(
|
||||
self.__user_base_dn,
|
||||
|
|
@ -101,40 +101,40 @@ class Auth(AuthBase): # export
|
|||
slog(WARNING, f'Exception {e}')
|
||||
raise
|
||||
continue
|
||||
for user in self.__dummy.users.values():
|
||||
ret[user.name] = user
|
||||
for dummy_user in self.__dummy.users.values():
|
||||
ret[dummy_user.name] = dummy_user
|
||||
self.___users = ret
|
||||
self.___user_by_email = ret_by_email
|
||||
return self.___users
|
||||
|
||||
@property
|
||||
def __user_by_email(self) -> User:
|
||||
def __user_by_email(self) -> dict[str, UserBase]:
|
||||
if self.___user_by_email is None:
|
||||
self.__users
|
||||
return self.___user_by_email
|
||||
return self.___user_by_email # type: ignore # We are sure that ___user_by_email is not None at this point
|
||||
|
||||
def _access(self, what: str, access_type: Optional[Access], who: User|GroupBase|None) -> bool: # type: ignore
|
||||
slog(WARNING, f'Returning False for {access_type} access to resource {what} by {who}')
|
||||
return False
|
||||
|
||||
def _user(self, name) -> User:
|
||||
def _user(self, name) -> UserBase:
|
||||
try:
|
||||
return self.__users[name]
|
||||
except:
|
||||
slog(ERR, f'No such user: "{name}"')
|
||||
raise
|
||||
|
||||
def _user_by_email(self, email: str) -> User:
|
||||
def _user_by_email(self, email: str) -> UserBase:
|
||||
return self.__user_by_email[email]
|
||||
|
||||
def _current_user(self) -> User:
|
||||
raise NotImplementedError
|
||||
|
||||
def _users(self) -> list[User]:
|
||||
def _users(self) -> dict[str, UserBase]:
|
||||
return self.__users
|
||||
|
||||
def _projects(self, name, flags: ProjectFlags) -> list[str]:
|
||||
if flags & ProjectFlags.Contributing:
|
||||
# TODO: Ask LDAP
|
||||
pass
|
||||
return None
|
||||
slog(WARNING, f'Querying LDAP for projects a user contributes to is not implemented, ignoring')
|
||||
return []
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue