From eab03a0f97d4214d3ad01e49079debf70d0b1001 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Fri, 8 Oct 2021 17:15:41 +0200 Subject: [PATCH 1/2] Fix possible None in TokenContainedEvaluator The evaluator was not expecting None and retrieving roles or groups for an anonymous user was actually returning None instead of an empty set of roles or groups. --- lib/galaxy/files/__init__.py | 9 +++++++-- lib/galaxy/util/bool_expressions.py | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/galaxy/files/__init__.py b/lib/galaxy/files/__init__.py index 8685dbfbe30..f1a22441738 100644 --- a/lib/galaxy/files/__init__.py +++ b/lib/galaxy/files/__init__.py @@ -4,6 +4,7 @@ from collections import ( defaultdict, namedtuple, ) +from typing import Set from galaxy import exceptions from galaxy.util import ( @@ -246,15 +247,19 @@ class ProvidesUserFileSourcesUserContext: return user and user.extra_preferences or defaultdict(lambda: None) @property - def role_names(self): + def role_names(self) -> Set[str]: """The set of role names of this user.""" user = self.trans.user + if user is None: + return set() return user and set([ura.role.name for ura in user.roles]) @property - def group_names(self): + def group_names(self) -> Set[str]: """The set of group names to which this user belongs.""" user = self.trans.user + if user is None: + return set() return user and set([ugr.group.name for ugr in user.groups]) @property diff --git a/lib/galaxy/util/bool_expressions.py b/lib/galaxy/util/bool_expressions.py index cd93cb2ec89..2c45d4f5ad4 100644 --- a/lib/galaxy/util/bool_expressions.py +++ b/lib/galaxy/util/bool_expressions.py @@ -172,7 +172,7 @@ class TokenContainedEvaluator(TokenEvaluator): :param tokens: The list of tokens that should be evaluated to True. :type tokens: List[str] """ - self.tokens = tokens + self.tokens = tokens or set() def evaluate(self, token: str) -> bool: return token in self.tokens From e34546aec7dddcdb14620a86f9d1d52f3fc815e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20L=C3=B3pez?= <46503462+davelopez@users.noreply.github.com> Date: Fri, 8 Oct 2021 17:44:14 +0200 Subject: [PATCH 2/2] Apply suggestions from code review Thank you Marius! way better :) Co-authored-by: Marius van den Beek --- lib/galaxy/files/__init__.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/lib/galaxy/files/__init__.py b/lib/galaxy/files/__init__.py index f1a22441738..c1c51df37c8 100644 --- a/lib/galaxy/files/__init__.py +++ b/lib/galaxy/files/__init__.py @@ -250,17 +250,13 @@ class ProvidesUserFileSourcesUserContext: def role_names(self) -> Set[str]: """The set of role names of this user.""" user = self.trans.user - if user is None: - return set() - return user and set([ura.role.name for ura in user.roles]) + return set(ura.role.name for ura in user.roles) if user else set() @property def group_names(self) -> Set[str]: """The set of group names to which this user belongs.""" user = self.trans.user - if user is None: - return set() - return user and set([ugr.group.name for ugr in user.groups]) + return set(ugr.group.name for ugr in user.groups) if user else set() @property def is_admin(self):