jhtimmins commented on a change in pull request #19294:
URL: https://github.com/apache/airflow/pull/19294#discussion_r741597558
##########
File path: airflow/www/fab_security/sqla/models.py
##########
@@ -178,6 +180,13 @@ def is_active(self):
def is_anonymous(self):
return False
+ @property
+ def perms(self):
+ perms = set()
+ for role in self.roles:
+ perms.update((perm.action.name, perm.resource.name) for perm in
role.permissions)
Review comment:
I added `lazy=joined` to several model fields, which causes prefetching.
It now runs 11 queries instead of 49.
##########
File path: airflow/www/fab_security/sqla/models.py
##########
@@ -178,6 +180,13 @@ def is_active(self):
def is_anonymous(self):
return False
+ @property
+ def perms(self):
+ perms = set()
+ for role in self.roles:
+ perms.update((perm.action.name, perm.resource.name) for perm in
role.permissions)
Review comment:
@andrewgodwin that said, this PR does add some overall time to the
tests. `pytest tests/views --with-db-init` runs in 1:53 on main and 2:00 on my
branch. How significant is that?
##########
File path: airflow/www/fab_security/manager.py
##########
@@ -85,6 +85,33 @@ def _oauth_tokengetter(token=None):
return token
+class AnonymousUser(AnonymousUserMixin):
+ """User object used when no active user is logged in."""
+
+ _roles = set()
+ _perms = set()
+
+ @property
+ def roles(self):
+ if not self._roles:
+ public_role =
current_app.appbuilder.get_app.config["AUTH_ROLE_PUBLIC"]
+ self._roles = {current_app.appbuilder.sm.find_role(public_role)}
if public_role else set()
+ return self._roles
+
+ @roles.setter
+ def roles(self, roles):
+ self._roles = roles
+ self._perms = set()
+
+ @property
+ def perms(self):
+ if not self._perms:
+ self._perms = set()
+ for role in self.roles:
+ self._perms.update({(perm.action.name, perm.resource.name) for
perm in role.permissions})
Review comment:
This is a fair critique, but I have a pretty strong aversion to nested
comprehensions, as I'm convinced Python's design is flawed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]