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/04/26 20:24:00 UTC
[1/4] git commit: [#5655] Added test for site_stats EP discovery
Updated Branches:
refs/heads/master c08650296 -> 57fadd1fd
[#5655] Added test for site_stats EP discovery
Signed-off-by: Cory Johns <cj...@slashdotmedia.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/c40ddaf6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/c40ddaf6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/c40ddaf6
Branch: refs/heads/master
Commit: c40ddaf69d11d20955e78a1d2ba86c52861595a4
Parents: 7225f73
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Fri Apr 26 15:28:09 2013 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Fri Apr 26 15:33:52 2013 +0000
----------------------------------------------------------------------
Allura/allura/tests/functional/test_rest.py | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c40ddaf6/Allura/allura/tests/functional/test_rest.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_rest.py b/Allura/allura/tests/functional/test_rest.py
index 68f769f..a08e8f7 100644
--- a/Allura/allura/tests/functional/test_rest.py
+++ b/Allura/allura/tests/functional/test_rest.py
@@ -19,7 +19,10 @@
from datetime import datetime, timedelta
+from pylons import app_globals as g
from nose.tools import assert_equal
+import mock
+import json
from allura.tests import decorators as td
from alluratest.controller import TestRestApiBase
@@ -96,3 +99,21 @@ class TestRestHome(TestRestApiBase):
self.app.get('/rest/p/test/wiki/Home/',
extra_environ={'username': 'test-user-0'},
status=401)
+
+ def test_index(self):
+ eps = {
+ 'site_stats': {
+ 'foo_24hr': lambda: 42,
+ 'bar_24hr': lambda: 84,
+ 'qux_24hr': lambda: 0,
+ },
+ }
+ with mock.patch.dict(g.entry_points, eps):
+ response = self.app.get('/rest/')
+ assert_equal(response.json, {
+ 'site_stats': {
+ 'foo_24hr': 42,
+ 'bar_24hr': 84,
+ 'qux_24hr': 0,
+ },
+ })
[3/4] git commit: [#5655] Added root REST view with hook for
providing site stats
Posted by br...@apache.org.
[#5655] Added root REST view with hook for providing site stats
Signed-off-by: Cory Johns <cj...@slashdotmedia.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/68a35476
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/68a35476
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/68a35476
Branch: refs/heads/master
Commit: 68a354766986384384d5ab5ee30ceb10f44ab04b
Parents: c086502
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Mon Apr 22 23:29:12 2013 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Fri Apr 26 15:33:52 2013 +0000
----------------------------------------------------------------------
Allura/allura/controllers/rest.py | 9 ++++++++-
Allura/allura/lib/app_globals.py | 1 +
2 files changed, 9 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/68a35476/Allura/allura/controllers/rest.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/rest.py b/Allura/allura/controllers/rest.py
index e7d11f9..0d519cc 100644
--- a/Allura/allura/controllers/rest.py
+++ b/Allura/allura/controllers/rest.py
@@ -23,7 +23,7 @@ import logging
import oauth2 as oauth
from webob import exc
from tg import expose, flash, redirect
-from pylons import tmpl_context as c
+from pylons import tmpl_context as c, app_globals as g
from pylons import request
from ming.orm import session
@@ -60,6 +60,13 @@ class RestController(object):
else:
return None
+ @expose('json:')
+ def index(self, **kw):
+ provider = g.entry_points['site_stats'].get('provider')
+ if provider:
+ return provider()
+ return dict()
+
@expose()
def _lookup(self, name, *remainder):
api_token = self._authenticate_request()
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/68a35476/Allura/allura/lib/app_globals.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/app_globals.py b/Allura/allura/lib/app_globals.py
index 3eb816b..e5b00c7 100644
--- a/Allura/allura/lib/app_globals.py
+++ b/Allura/allura/lib/app_globals.py
@@ -185,6 +185,7 @@ class Globals(object):
user_prefs=_cache_eps('allura.user_prefs'),
spam=_cache_eps('allura.spam'),
stats=_cache_eps('allura.stats'),
+ site_stats=_cache_eps('allura.site_stats'),
)
# Zarkov logger
[2/4] git commit: [#5655] Refactored site_stats and added ticket and
post 24hr stats
Posted by br...@apache.org.
[#5655] Refactored site_stats and added ticket and post 24hr stats
Signed-off-by: Cory Johns <cj...@slashdotmedia.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/7225f737
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/7225f737
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/7225f737
Branch: refs/heads/master
Commit: 7225f73733b27e283982bf0975afe4d852c923b7
Parents: 68a3547
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Wed Apr 24 22:30:06 2013 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Fri Apr 26 15:33:52 2013 +0000
----------------------------------------------------------------------
Allura/allura/controllers/rest.py | 11 +++++++----
ForgeDiscussion/forgediscussion/site_stats.py | 8 ++++++++
ForgeDiscussion/setup.py | 3 +++
ForgeTracker/forgetracker/site_stats.py | 10 ++++++++++
ForgeTracker/setup.py | 3 +++
5 files changed, 31 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/7225f737/Allura/allura/controllers/rest.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/rest.py b/Allura/allura/controllers/rest.py
index 0d519cc..70e3ac7 100644
--- a/Allura/allura/controllers/rest.py
+++ b/Allura/allura/controllers/rest.py
@@ -62,10 +62,13 @@ class RestController(object):
@expose('json:')
def index(self, **kw):
- provider = g.entry_points['site_stats'].get('provider')
- if provider:
- return provider()
- return dict()
+ summary = dict()
+ stats = dict()
+ for stat, provider in g.entry_points['site_stats'].iteritems():
+ stats[stat] = provider()
+ if stats:
+ summary['site_stats'] = stats
+ return summary
@expose()
def _lookup(self, name, *remainder):
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/7225f737/ForgeDiscussion/forgediscussion/site_stats.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/site_stats.py b/ForgeDiscussion/forgediscussion/site_stats.py
new file mode 100644
index 0000000..e76201d
--- /dev/null
+++ b/ForgeDiscussion/forgediscussion/site_stats.py
@@ -0,0 +1,8 @@
+from datetime import datetime, timedelta
+
+from . import model as DM
+
+
+def posts_24hr():
+ window = datetime.utcnow() - timedelta(hours=24)
+ return DM.ForumPost.query.find({'timestamp': {'$gte': window}}).count()
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/7225f737/ForgeDiscussion/setup.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/setup.py b/ForgeDiscussion/setup.py
index 5c58b7a..812c8a0 100644
--- a/ForgeDiscussion/setup.py
+++ b/ForgeDiscussion/setup.py
@@ -44,5 +44,8 @@ setup(name='ForgeDiscussion',
# -*- Entry points: -*-
[allura]
Discussion=forgediscussion.forum_main:ForgeDiscussionApp
+
+ [allura.site_stats]
+ posts_24hr=forgediscussion.site_stats:posts_24hr
""",
)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/7225f737/ForgeTracker/forgetracker/site_stats.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/site_stats.py b/ForgeTracker/forgetracker/site_stats.py
new file mode 100644
index 0000000..e0baa63
--- /dev/null
+++ b/ForgeTracker/forgetracker/site_stats.py
@@ -0,0 +1,10 @@
+from datetime import datetime, timedelta
+
+from bson import ObjectId
+
+from . import model as TM
+
+
+def tickets_stats_24hr():
+ window = datetime.utcnow() - timedelta(hours=24)
+ return TM.Ticket.query.find({'_id': {'$gte': ObjectId.from_datetime(window)}}).count()
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/7225f737/ForgeTracker/setup.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/setup.py b/ForgeTracker/setup.py
index 57e5d45..1934cc2 100644
--- a/ForgeTracker/setup.py
+++ b/ForgeTracker/setup.py
@@ -43,6 +43,9 @@ setup(name='ForgeTracker',
[allura]
Tickets=forgetracker.tracker_main:ForgeTrackerApp
+ [allura.site_stats]
+ tickets_24hr=forgetracker.site_stats:tickets_stats_24hr
+
[easy_widgets.resources]
ew_resources=forgetracker.config.resources:register_ew_resources
[4/4] git commit: [#5655] Added documentation for site_stats
Posted by br...@apache.org.
[#5655] Added documentation for site_stats
Signed-off-by: Cory Johns <cj...@slashdotmedia.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/57fadd1f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/57fadd1f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/57fadd1f
Branch: refs/heads/master
Commit: 57fadd1fdf94b7dc25cd2eb029160a71459bd956
Parents: c40ddaf
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Fri Apr 26 16:31:04 2013 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Fri Apr 26 16:31:04 2013 +0000
----------------------------------------------------------------------
Allura/allura/controllers/rest.py | 21 +++++++++++++++++++++
Allura/docs/api/controllers.rst | 12 ++++++++++++
2 files changed, 33 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/57fadd1f/Allura/allura/controllers/rest.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/rest.py b/Allura/allura/controllers/rest.py
index 70e3ac7..c90a1ef 100644
--- a/Allura/allura/controllers/rest.py
+++ b/Allura/allura/controllers/rest.py
@@ -62,6 +62,27 @@ class RestController(object):
@expose('json:')
def index(self, **kw):
+ """Return site summary information as JSON.
+
+ Currently, the only summary information returned are any site_stats
+ whose providers are defined as entry points under the
+ 'allura.site_stats' group in a package or tool's setup.py, e.g.::
+
+ [allura.site_stats]
+ new_users_24hr = allura.site_stats:new_users_24hr
+
+ The stat provider will be called with no arguments to generate the
+ stat, which will be included under a key equal to the name of the
+ entry point.
+
+ Example output::
+
+ {
+ 'site_stats': {
+ 'new_users_24hr': 10
+ }
+ }
+ """
summary = dict()
stats = dict()
for stat, provider in g.entry_points['site_stats'].iteritems():
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/57fadd1f/Allura/docs/api/controllers.rst
----------------------------------------------------------------------
diff --git a/Allura/docs/api/controllers.rst b/Allura/docs/api/controllers.rst
new file mode 100644
index 0000000..5e56976
--- /dev/null
+++ b/Allura/docs/api/controllers.rst
@@ -0,0 +1,12 @@
+.. _controllers_module:
+
+:mod:`allura.controllers`
+--------------------------------
+
+.. automodule:: allura.controllers
+
+ .. automodule:: allura.controllers.rest
+
+ .. autoclass:: RestController
+ :members:
+