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

Reply via email to