diff --git a/atst/models/request.py b/atst/models/request.py index 419e8156..cf4f6cdd 100644 --- a/atst/models/request.py +++ b/atst/models/request.py @@ -6,9 +6,7 @@ from sqlalchemy.orm import relationship from atst.models import Base from atst.models.types import Id from atst.models.request_status_event import RequestStatus - -def first_or_none(predicate, lst): - return next((x for x in lst if predicate(x)), None,) +from atst.utils import first_or_none class Request(Base): diff --git a/atst/models/workspace.py b/atst/models/workspace.py index 8f6c58d9..aca024a4 100644 --- a/atst/models/workspace.py +++ b/atst/models/workspace.py @@ -4,6 +4,7 @@ from sqlalchemy.orm import relationship from atst.models import Base from atst.models.types import Id from atst.models.mixins import TimestampsMixin +from atst.utils import first_or_none MOCK_MEMBERS = [ @@ -48,14 +49,10 @@ class Workspace(Base, TimestampsMixin): @property def owner(self): - return next( - ( - workspace_role.user - for workspace_role in self.roles - if workspace_role.role.name == "owner" - ), - None, - ) + def _is_workspace_owner(workspace_role): + return workspace_role.role.name == "owner" + + return first_or_none(_is_workspace_owner, self.roles) @property def users(self): diff --git a/atst/utils.py b/atst/utils.py new file mode 100644 index 00000000..f836cea2 --- /dev/null +++ b/atst/utils.py @@ -0,0 +1,2 @@ +def first_or_none(predicate, lst): + return next((x for x in lst if predicate(x)), None,)