This is an automated email from the ASF dual-hosted git repository.
brondsem pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/allura.git
The following commit(s) were added to refs/heads/master by this push:
new 5c097234d performance optimizations related to anonymous()
5c097234d is described below
commit 5c097234dbf6b345adbf7b64f133e5f35c0cdd29
Author: Dave Brondsema <[email protected]>
AuthorDate: Fri Jan 13 10:26:20 2023 -0500
performance optimizations related to anonymous()
---
Allura/allura/model/artifact.py | 4 +++-
Allura/allura/model/auth.py | 5 +++++
Allura/allura/model/notification.py | 7 +++++--
Allura/allura/websetup/bootstrap.py | 2 +-
4 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/Allura/allura/model/artifact.py b/Allura/allura/model/artifact.py
index 4ec053255..2b0a78b74 100644
--- a/Allura/allura/model/artifact.py
+++ b/Allura/allura/model/artifact.py
@@ -246,10 +246,12 @@ class Artifact(MappedClass, SearchIndexable):
artifact_index_id=self.index_id())
@memoize # since its called many times from edit_post.html within
threaded comments
- def subscribed(self, user=None, include_parents=True):
+ def subscribed(self, user=None, include_parents=True) -> bool:
from allura.model import Mailbox
if user is None:
user = c.user
+ if user.is_anonymous():
+ return False
user_proj_app_q = dict(user_id=user._id,
project_id=self.app_config.project_id,
app_config_id=self.app_config._id)
diff --git a/Allura/allura/model/auth.py b/Allura/allura/model/auth.py
index 75dabffe0..027a7a874 100644
--- a/Allura/allura/model/auth.py
+++ b/Allura/allura/model/auth.py
@@ -810,7 +810,12 @@ class User(MappedClass, ActivityNode, ActivityObject,
SearchIndexable):
self, None, new_password)
@classmethod
+ @memoize
def anonymous(cls):
+ return cls.anonymous_uncached()
+
+ @classmethod
+ def anonymous_uncached(cls):
anon = cls(
_id=None,
username='*anonymous',
diff --git a/Allura/allura/model/notification.py
b/Allura/allura/model/notification.py
index a1f9872a8..69dca7daa 100644
--- a/Allura/allura/model/notification.py
+++ b/Allura/allura/model/notification.py
@@ -519,9 +519,12 @@ class Mailbox(MappedClass):
@classmethod
def subscribed(
cls, user_id=None, project_id=None, app_config_id=None,
- artifact=None, topic=None):
+ artifact=None, topic=None) -> bool:
if user_id is None:
- user_id = c.user._id
+ if c.user.is_anonymous():
+ return False
+ else:
+ user_id = c.user._id
if project_id is None:
project_id = c.project._id
if app_config_id is None:
diff --git a/Allura/allura/websetup/bootstrap.py
b/Allura/allura/websetup/bootstrap.py
index 6f6d37664..f6e5c93f9 100644
--- a/Allura/allura/websetup/bootstrap.py
+++ b/Allura/allura/websetup/bootstrap.py
@@ -85,7 +85,7 @@ def bootstrap(command, conf, vars):
index.run([''])
log.info('Registering root user & default neighborhoods')
- anon = M.User.anonymous()
+ anon = M.User.anonymous_uncached()
session(M.User).save(anon)
# never make a user project for the root user