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 2013/09/06 23:05:41 UTC
[03/10] git commit: [#6545] remove old indexes and code;
add 'timestamp' to discussion_id,status index
[#6545] remove old indexes and code; add 'timestamp' to discussion_id,status index
* Message's index on timestamp was added in 76e8541c for stats on ticket comments,
our new index is a better fit
* Message's slug & parent_id indexes were added in ebb201de for now-unused
replies() and descendants() methods
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/32d76590
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/32d76590
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/32d76590
Branch: refs/heads/db/6545
Commit: 32d7659079e11d2622d4dbd80893ae43336b4b61
Parents: 2501fb4
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Wed Sep 4 13:58:06 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Fri Sep 6 15:47:58 2013 +0000
----------------------------------------------------------------------
Allura/allura/model/artifact.py | 25 -----------------------
Allura/allura/model/discuss.py | 17 +++++++--------
Allura/allura/tests/model/test_artifact.py | 18 ----------------
Allura/allura/tests/model/test_discussion.py | 1 -
ForgeTracker/forgetracker/tracker_main.py | 4 +++-
5 files changed, 12 insertions(+), 53 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/32d76590/Allura/allura/model/artifact.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/artifact.py b/Allura/allura/model/artifact.py
index 31fb78a..58e96c6 100644
--- a/Allura/allura/model/artifact.py
+++ b/Allura/allura/model/artifact.py
@@ -561,7 +561,6 @@ class Message(Artifact):
class __mongometa__:
session = artifact_orm_session
name='message'
- indexes = Artifact.__mongometa__.indexes + [ 'slug', 'parent_id', 'timestamp' ]
type_s='Generic Message'
_id=FieldProperty(str, if_missing=h.gen_message_id)
@@ -591,30 +590,6 @@ class Message(Artifact):
from .auth import User
return User.query.get(_id=self.author_id) or User.anonymous()
- def reply(self):
- new_id = h.gen_message_id()
- slug, full_slug = self.make_slugs(self)
- new_args = dict(
- state(self).document,
- _id=new_id,
- slug=slug,
- full_slug=full_slug,
- parent_id=self._id,
- timestamp=datetime.utcnow(),
- author_id=c.user._id)
- return self.__class__(**new_args)
-
- def descendants(self):
- q = self.query.find(dict(slug={'$gt':self.slug})).sort('slug')
- for msg in q:
- if msg.slug.startswith(self.slug):
- yield msg
- else:
- break
-
- def replies(self):
- return self.query.find(dict(parent_id=self._id))
-
def index(self):
result = Artifact.index(self)
author = self.author()
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/32d76590/Allura/allura/model/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/discuss.py b/Allura/allura/model/discuss.py
index 057bb97..07a6269 100644
--- a/Allura/allura/model/discuss.py
+++ b/Allura/allura/model/discuss.py
@@ -92,11 +92,15 @@ class Discussion(Artifact, ActivityObject):
@LazyProperty
def last_post(self):
+ # TODO add status: to query
q = self.post_class().query.find(dict(
discussion_id=self._id))\
.sort('timestamp', pymongo.DESCENDING)\
.limit(1)\
- .hint([('discussion_id', pymongo.ASCENDING), ('status', pymongo.ASCENDING)])
+ .hint([('discussion_id', pymongo.ASCENDING),
+ ('status', pymongo.ASCENDING),
+ ('timestamp', pymongo.ASCENDING),
+ ])
# hint is to try to force the index to be used, since mongo wouldn't select it sometimes
# https://groups.google.com/forum/#!topic/mongodb-user/0TEqPfXxQU8
return q.first()
@@ -358,12 +362,6 @@ class Thread(Artifact, ActivityObject):
return self.query_posts(page=page, limit=limit,
timestamp=timestamp, style=style).all()
- def top_level_posts(self):
- return self.post_class().query.find(dict(
- thread_id=self._id,
- parent_id=None,
- status='ok'))
-
def url(self):
# Can't use self.discussion because it might change during the req
discussion = self.discussion_class().query.get(_id=self.discussion_id)
@@ -441,7 +439,10 @@ class Post(Message, VersionedArtifact, ActivityObject):
class __mongometa__:
name = 'post'
history_class = PostHistory
- indexes = [('discussion_id', 'status'), 'thread_id']
+ indexes = [
+ ('discussion_id', 'status', 'timestamp'), # used in general lookups, last_post, etc
+ 'thread_id'
+ ]
type_s = 'Post'
thread_id = ForeignIdProperty(Thread)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/32d76590/Allura/allura/tests/model/test_artifact.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/model/test_artifact.py b/Allura/allura/tests/model/test_artifact.py
index d110d5e..639b247 100644
--- a/Allura/allura/tests/model/test_artifact.py
+++ b/Allura/allura/tests/model/test_artifact.py
@@ -158,24 +158,6 @@ def test_versioning():
assert ss.text != pg.text
assert pg.history().count() == 3
-@with_setup(setUp, tearDown)
-def test_messages():
- m = Checkmessage()
- assert m.author() == c.user
- rm1 = m.reply()
- assert rm1.slug.startswith(m.slug)
- rm2 = rm1.reply()
- rm3 = m.reply()
- ThreadLocalORMSession.flush_all()
- assert rm1 in list(m.descendants())
- assert rm2 in list(m.descendants())
- assert rm1 in list(m.replies())
- assert rm2 not in list(m.replies())
- idx = m.index()
- assert 'author_user_name_t' in idx
- assert 'author_display_name_t' in idx
- assert 'timestamp_dt' in idx
- assert m.shorthand_id() == m.slug
@with_setup(setUp, tearDown)
def test_messages_unknown_lookup():
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/32d76590/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 34e550a..36731bc 100644
--- a/Allura/allura/tests/model/test_discussion.py
+++ b/Allura/allura/tests/model/test_discussion.py
@@ -108,7 +108,6 @@ def test_thread_methods():
assert t.subscription
t.subscription = False
assert not t.subscription
- assert t.top_level_posts().count() == 2
assert t.post_count == 3
jsn = t.__json__()
assert '_id' in jsn
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/32d76590/ForgeTracker/forgetracker/tracker_main.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index 8aa29f6..4f2d7d2 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -896,7 +896,9 @@ class RootController(BaseController, FeedController):
def ticket_comments_since(self, when=None):
q = dict(
- discussion_id=c.app.config.discussion_id)
+ discussion_id=c.app.config.discussion_id,
+ status='ok',
+ )
if when is not None:
q['timestamp'] = {'$gte':when}
return M.Post.query.find(q).count()