You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2016/11/18 22:53:32 UTC

[2/8] allura git commit: [#7981] remove old thread subscription field, use modern Artifact/Mailbox approach

[#7981] remove old thread subscription field, use modern Artifact/Mailbox approach


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/81c478fa
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/81c478fa
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/81c478fa

Branch: refs/heads/db/7981
Commit: 81c478fa82475323359a1680a43de1036afd6c37
Parents: cb11b23
Author: Dave Brondsema <da...@brondsema.net>
Authored: Fri Nov 18 12:19:54 2016 -0500
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Fri Nov 18 17:53:17 2016 -0500

----------------------------------------------------------------------
 Allura/allura/controllers/discuss.py                | 13 +++++++------
 Allura/allura/model/artifact.py                     | 11 +++++++++++
 Allura/allura/model/discuss.py                      | 13 -------------
 Allura/allura/templates/widgets/threads_table.html  |  2 +-
 Allura/allura/tests/functional/test_discuss.py      |  1 +
 Allura/allura/tests/model/test_discussion.py        |  1 +
 ForgeDiscussion/forgediscussion/controllers/root.py |  1 +
 ForgeDiscussion/forgediscussion/forum_main.py       |  2 --
 8 files changed, 22 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/81c478fa/Allura/allura/controllers/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/discuss.py b/Allura/allura/controllers/discuss.py
index 9cb5f37..d6ba1ff 100644
--- a/Allura/allura/controllers/discuss.py
+++ b/Allura/allura/controllers/discuss.py
@@ -25,6 +25,7 @@ from pylons import tmpl_context as c, app_globals as g
 from webob import exc
 
 from ming.base import Object
+from ming.odm import session
 from ming.utils import LazyProperty
 
 from allura import model as M
@@ -96,13 +97,13 @@ class DiscussionController(BaseController, FeedController):
     def subscribe(self, **kw):
         threads = kw.pop('threads', [])
         for t in threads:
-            thread = self.M.Thread.query.find(dict(_id=t['_id'])).first()
-            if 'subscription' in t:
-                thread['subscription'] = True
+            thread = self.M.Thread.query.get(_id=t['_id'])
+            if t.get('subscription'):
+                thread.subscribe()
             else:
-                thread['subscription'] = False
-            M.session.artifact_orm_session._get().skip_mod_date = True
-            M.session.artifact_orm_session._get().skip_last_updated = True
+                thread.unsubscribe()
+            session(self.M.Thread)._get().skip_mod_date = True
+            session(self.M.Thread)._get().skip_last_updated = True
         redirect(request.referer)
 
     def get_feed(self, project, app, user):

http://git-wip-us.apache.org/repos/asf/allura/blob/81c478fa/Allura/allura/model/artifact.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/artifact.py b/Allura/allura/model/artifact.py
index ff4bd76..39316d2 100644
--- a/Allura/allura/model/artifact.py
+++ b/Allura/allura/model/artifact.py
@@ -226,6 +226,17 @@ class Artifact(MappedClass, SearchIndexable):
             app_config_id=self.app_config._id,
             artifact_index_id=self.index_id())
 
+    def subscribed(self, user=None):
+        from allura.model import Mailbox
+        if user is None:
+            user = c.user
+        return Mailbox.subscribed(
+            user_id=user._id,
+            project_id=self.app_config.project_id,
+            app_config_id=self.app_config._id,
+            artifact=self,
+        )
+
     def primary(self):
         """If an artifact is a "secondary" artifact (discussion of a ticket, for
         instance), return the artifact that is the "primary".

http://git-wip-us.apache.org/repos/asf/allura/blob/81c478fa/Allura/allura/model/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/discuss.py b/Allura/allura/model/discuss.py
index b3cf04b..19c0ea5 100644
--- a/Allura/allura/model/discuss.py
+++ b/Allura/allura/model/discuss.py
@@ -118,9 +118,6 @@ class Discussion(Artifact, ActivityObject):
             text=self.description)
         return result
 
-    def subscription(self):
-        return self.subscriptions.get(str(c.user._id))
-
     def delete(self):
         # Delete all the threads, posts, and artifacts
         self.thread_class().query.remove(dict(discussion_id=self._id))
@@ -428,16 +425,6 @@ class Thread(Artifact, ActivityObject):
             text=self.subject)
         return result
 
-    def _get_subscription(self):
-        return self.subscriptions.get(str(c.user._id))
-
-    def _set_subscription(self, value):
-        if value:
-            self.subscriptions[str(c.user._id)] = True
-        else:
-            self.subscriptions.pop(str(c.user._id), None)
-    subscription = property(_get_subscription, _set_subscription)
-
     def delete(self):
         for p in self.post_class().query.find(dict(thread_id=self._id)):
             p.delete()

http://git-wip-us.apache.org/repos/asf/allura/blob/81c478fa/Allura/allura/templates/widgets/threads_table.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/threads_table.html b/Allura/allura/templates/widgets/threads_table.html
index 2101606..bc20d29 100644
--- a/Allura/allura/templates/widgets/threads_table.html
+++ b/Allura/allura/templates/widgets/threads_table.html
@@ -37,7 +37,7 @@
         {% if not c.user.is_anonymous() %}
           <td>
             <input type="checkbox" name="threads-{{loop.index0}}.subscription"
-                 {% if thread.subscription %}checked="checked"{% endif %}/>
+                 {% if thread.subscribed() %}checked="checked"{% endif %}/>
             <input type="hidden" name="threads-{{loop.index0}}._id" value="{{thread._id}}"/>
           </td>
         {% endif %}

http://git-wip-us.apache.org/repos/asf/allura/blob/81c478fa/Allura/allura/tests/functional/test_discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_discuss.py b/Allura/allura/tests/functional/test_discuss.py
index 836d094..2fe27f6 100644
--- a/Allura/allura/tests/functional/test_discuss.py
+++ b/Allura/allura/tests/functional/test_discuss.py
@@ -44,6 +44,7 @@ class TestDiscuss(TestDiscussBase):
     def _is_subscribed(self, username, thread_id):
         user_id = str(M.User.by_username(username)._id)
         thread = M.Thread.query.get(_id=thread_id)
+        # FIXME
         return thread.subscriptions.get(user_id)
 
     def test_subscribe_unsubscribe(self):

http://git-wip-us.apache.org/repos/asf/allura/blob/81c478fa/Allura/allura/tests/model/test_discussion.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/model/test_discussion.py b/Allura/allura/tests/model/test_discussion.py
index bd95bd3..b579d18 100644
--- a/Allura/allura/tests/model/test_discussion.py
+++ b/Allura/allura/tests/model/test_discussion.py
@@ -104,6 +104,7 @@ def test_thread_methods():
 
     assert 'wiki/_discuss/' in t.url()
     assert t.index()['views_i'] == 0
+    # FIXME
     assert not t.subscription
     t.subscription = True
     assert t.subscription

http://git-wip-us.apache.org/repos/asf/allura/blob/81c478fa/ForgeDiscussion/forgediscussion/controllers/root.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/controllers/root.py b/ForgeDiscussion/forgediscussion/controllers/root.py
index cb4b4f8..8ade51f 100644
--- a/ForgeDiscussion/forgediscussion/controllers/root.py
+++ b/ForgeDiscussion/forgediscussion/controllers/root.py
@@ -203,6 +203,7 @@ class RootController(BaseController, DispatchIndex, FeedController):
             objs.append(dict(obj=model.Thread.query.get(_id=data['id']),
                              subscribed=bool(data.get('subscribed'))))
         for obj in objs:
+            # TODO where is this called from?
             if obj['subscribed']:
                 obj['obj'].subscriptions[str(c.user._id)] = True
             else:

http://git-wip-us.apache.org/repos/asf/allura/blob/81c478fa/ForgeDiscussion/forgediscussion/forum_main.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/forum_main.py b/ForgeDiscussion/forgediscussion/forum_main.py
index 524b11d..60b97d3 100644
--- a/ForgeDiscussion/forgediscussion/forum_main.py
+++ b/ForgeDiscussion/forgediscussion/forum_main.py
@@ -91,8 +91,6 @@ class ForgeDiscussionApp(Application):
         self.root = RootController()
         self.api_root = RootRestController()
         self.admin = ForumAdminController(self)
-        self.default_forum_preferences = dict(
-            subscriptions={})
 
     def has_access(self, user, topic):
         f = DM.Forum.query.get(shortname=topic.replace('.', '/'),