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:
+