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:39 UTC
[01/10] git commit: [#6545] re-order app_config_id,
label index so it can be shared
Updated Branches:
refs/heads/db/6545 [created] 531d571de
[#6545] re-order app_config_id,label index so it can be shared
..shared with the main app_config_id index. It was added in 1fc1d377
for faster ticket label lookup, but the order doesn't matter, so
better to share the first part of the index.
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/2501fb49
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/2501fb49
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/2501fb49
Branch: refs/heads/db/6545
Commit: 2501fb49a0466be98b5906dc30164031810cefa8
Parents: 56043b1
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Wed Sep 4 13:53:35 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Fri Sep 6 15:47:57 2013 +0000
----------------------------------------------------------------------
Allura/allura/model/artifact.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2501fb49/Allura/allura/model/artifact.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/artifact.py b/Allura/allura/model/artifact.py
index 294c3d0..31fb78a 100644
--- a/Allura/allura/model/artifact.py
+++ b/Allura/allura/model/artifact.py
@@ -61,7 +61,9 @@ class Artifact(MappedClass):
class __mongometa__:
session = artifact_orm_session
name='artifact'
- indexes = [ 'app_config_id', ('labels', 'app_config_id') ]
+ indexes = [
+ ('app_config_id', 'label'),
+ ]
def before_save(data):
if not getattr(artifact_orm_session._get(), 'skip_mod_date', False):
data['mod_date'] = datetime.utcnow()
[02/10] git commit: [#6545] [#5907] use status in last_post()
Posted by br...@apache.org.
[#6545] [#5907] use status in last_post()
* we only want to show approved posts
* it uses the (discussion_id, status, timestamp) index
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/aac6efc8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/aac6efc8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/aac6efc8
Branch: refs/heads/db/6545
Commit: aac6efc8943bff5b17f5eafeccaaace1cb667983
Parents: 32d7659
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Wed Sep 4 15:24:44 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Fri Sep 6 15:47:58 2013 +0000
----------------------------------------------------------------------
Allura/allura/model/discuss.py | 5 +++--
ForgeDiscussion/forgediscussion/tests/functional/test_forum.py | 5 ++---
2 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/aac6efc8/Allura/allura/model/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/discuss.py b/Allura/allura/model/discuss.py
index 07a6269..e227b47 100644
--- a/Allura/allura/model/discuss.py
+++ b/Allura/allura/model/discuss.py
@@ -92,9 +92,10 @@ 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))\
+ discussion_id=self._id,
+ status='ok'
+ ))\
.sort('timestamp', pymongo.DESCENDING)\
.limit(1)\
.hint([('discussion_id', pymongo.ASCENDING),
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/aac6efc8/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
index 89efa7c..12238c8 100644
--- a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
+++ b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
@@ -353,9 +353,8 @@ class TestForum(TestController):
assert r.location.startswith('http://localhost/p/test/discussion/testforum/thread/'), r.location
def _check():
- # FIXME fix [#5907]
- #r = self.app.get('/discussion/')
- #assert 'Test Zero Posts' not in r
+ r = self.app.get('/discussion/')
+ assert 'Test Zero Posts' not in r
r = self.app.get('/discussion/testforum/')
assert 'Test Zero Posts' not in r
[09/10] git commit: [#6545] bump ming version for query.aggregate
Posted by br...@apache.org.
[#6545] bump ming version for query.aggregate
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/a57cbaa0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/a57cbaa0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/a57cbaa0
Branch: refs/heads/db/6545
Commit: a57cbaa0b8ec90a561f2e7407037d4d1e44b3cdc
Parents: f664110
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Fri Sep 6 20:37:03 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Fri Sep 6 20:37:03 2013 +0000
----------------------------------------------------------------------
requirements-common.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/a57cbaa0/requirements-common.txt
----------------------------------------------------------------------
diff --git a/requirements-common.txt b/requirements-common.txt
index 5e261a0..42bdadb 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -21,7 +21,7 @@ httplib2==0.7.4
iso8601==0.1.4
Jinja2==2.6
Markdown==2.2.0
-Ming==0.3.7
+Ming==0.3.10
oauth2==1.5.170
# tg2 dep PasteDeploy must specified before TurboGears2, to avoid a version/allow-hosts problem
Paste==1.7.5.1
[08/10] git commit: [#6545] tweak graph point size
Posted by br...@apache.org.
[#6545] tweak graph point size
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/3a75d47e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/3a75d47e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/3a75d47e
Branch: refs/heads/db/6545
Commit: 3a75d47e403ecbb194bd4aaaf2c5c790c59e194d
Parents: 75bc10b
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Fri Sep 6 20:17:20 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Fri Sep 6 20:34:28 2013 +0000
----------------------------------------------------------------------
.../templates/discussionforums/stats_graph.html | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3a75d47e/ForgeDiscussion/forgediscussion/templates/discussionforums/stats_graph.html
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/templates/discussionforums/stats_graph.html b/ForgeDiscussion/forgediscussion/templates/discussionforums/stats_graph.html
index e05506b..39e4ef8 100644
--- a/ForgeDiscussion/forgediscussion/templates/discussionforums/stats_graph.html
+++ b/ForgeDiscussion/forgediscussion/templates/discussionforums/stats_graph.html
@@ -65,9 +65,17 @@
/*global chartProjectStats */
$(document).ready(function () {
var series = function(data){
+ var size;
+ if (data.length < 20) {
+ size = 3;
+ } else if (data.length < 100) {
+ size = 2;
+ } else {
+ size = 1;
+ }
return [{label: "Posts",
- lines: {show: true, lineWidth: 3},
- points: {show:true, radius:2, fill: true, fillColor: '#0685c6'},
+ lines: {show: true, lineWidth: size},
+ points: {show:true, radius:size, fill: true, fillColor: '#0685c6'},
data: data, shadowSize: 0}
];
};
[07/10] git commit: [#6545] add CSS for daterange picker, graph
Posted by br...@apache.org.
[#6545] add CSS for daterange picker, graph
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/75bc10b5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/75bc10b5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/75bc10b5
Branch: refs/heads/db/6545
Commit: 75bc10b55e2492bb6cf6f81085693f8bd18f70d2
Parents: dca43da
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Fri Sep 6 19:58:15 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Fri Sep 6 20:34:28 2013 +0000
----------------------------------------------------------------------
Allura/allura/nf/allura/css/site_style.css | 77 +++++++++++++-
.../public/nf/css/forge/ui.daterangepicker.css | 103 +++++++++++++++++++
Allura/allura/public/nf/js/stats.js | 13 +--
.../templates/discussionforums/stats_graph.html | 1 +
rat-excludes.txt | 1 +
5 files changed, 184 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/75bc10b5/Allura/allura/nf/allura/css/site_style.css
----------------------------------------------------------------------
diff --git a/Allura/allura/nf/allura/css/site_style.css b/Allura/allura/nf/allura/css/site_style.css
index 662b4f6..b85f54d 100644
--- a/Allura/allura/nf/allura/css/site_style.css
+++ b/Allura/allura/nf/allura/css/site_style.css
@@ -1905,7 +1905,6 @@ nav .ico {
-ms-border-radius: 4px;
-khtml-border-radius: 4px;
border-radius: 4px;
- z-index: 1;
position: relative;
width: 785px;
}
@@ -2607,6 +2606,82 @@ div.attachment_thumb .file_type span {
overflow: auto;
}
+/* Stats Graph */
+
+#stats_date_picker {
+ text-align: right;
+ width: 340px;
+ display: inline;
+ float: left;
+ overflow: hidden;
+ *zoom: 1;
+ margin: 0 10px;
+}
+#stats_date_picker input {
+ width: 228px !important;
+}
+
+#stats-viz-container {
+ width: 700px;
+ display: inline;
+ float: left;
+ overflow: hidden;
+ *zoom: 1;
+ margin: 0 10px;
+ overflow: hidden;
+}
+
+#stats-viz {
+ height: 400px;
+}
+#stats-viz td {
+ border-width: 0;
+}
+
+#stats-viz .xaxis {
+ text-align: center;
+}
+#stats-viz .yaxis {
+ -webkit-transform: rotate(270deg); -moz-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ -o-transform: rotate(270deg);
+ transform: rotate(270deg);
+ max-width: 1em;
+}
+
+#project_stats_holder {
+ width: 600px;
+ height: 350px;
+}
+#project_stats_holder div.legend table {
+ width: auto;
+}
+#project_stats_holder .tickLabel {
+ margin-left: -4px;
+}
+#project_stats_holder .tooltip {
+ background: #3f3f3f;
+ border: 1px solid #222;
+ opacity: .8;
+ z-index: 1000;
+ padding: 5px 10px;
+ color: #fff;
+}
+#project_stats_holder .base, #project_stats_holder #content_base {
+ margin: 0;
+ background: none;
+ border-width: 0;
+}
+
+.chart-tooltip {
+ position: absolute;
+ display: none;
+ background: white;
+ border: 1px solid black;
+ border-radius: 0.5em;
+ padding: 0 0.3em;
+}
+
/* Messages */
.error, .notice, .success, .ok, .info {
padding: .8em;
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/75bc10b5/Allura/allura/public/nf/css/forge/ui.daterangepicker.css
----------------------------------------------------------------------
diff --git a/Allura/allura/public/nf/css/forge/ui.daterangepicker.css b/Allura/allura/public/nf/css/forge/ui.daterangepicker.css
new file mode 100644
index 0000000..6c71e83
--- /dev/null
+++ b/Allura/allura/public/nf/css/forge/ui.daterangepicker.css
@@ -0,0 +1,103 @@
+/*styles for jquery ui daterangepicker plugin */
+
+.ui-daterangepickercontain {
+ position: absolute;
+ z-index: 999;
+}
+.ui-daterangepickercontain .ui-daterangepicker {
+ float: left;
+ padding: 5px !important;
+ width: auto;
+ display: inline;
+ background-image: none !important;
+ clear: left;
+}
+.ui-daterangepicker ul, .ui-daterangepicker .ranges, .ui-daterangepicker .range-start, .ui-daterangepicker .range-end {
+ float: left;
+ padding: 0;
+ margin: 0;
+}
+.ui-daterangepicker .ranges {
+ width: auto;
+ position: relative;
+ padding: 5px 5px 40px 0;
+ margin-left: 10px;
+}
+.ui-daterangepicker .range-start, .ui-daterangepicker .range-end {
+ margin-left: 5px;
+}
+.ui-daterangepicker button.btnDone {
+ margin: 0 5px 5px 0;
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ clear: both;
+ cursor: pointer;
+ font-size: 1.1em;
+}
+.ui-daterangepicker ul {
+ width: 17.6em;
+ background: none;
+ border: 0;
+}
+.ui-daterangepicker li {
+ list-style: none;
+ padding: 1px;
+ cursor: pointer;
+ margin: 1px 0;
+}
+.ui-daterangepicker li.ui-state-hover, .ui-daterangepicker li.ui-state-active {
+ padding: 0;
+}
+.ui-daterangepicker li.preset_0 {
+ margin-top: 1.5em !important;
+}
+.ui-daterangepicker .ui-widget-content a {
+ text-decoration: none !important;
+}
+.ui-daterangepicker li a {
+ font-weight: normal;
+ margin: .3em .5em;
+ display: block;
+}
+.ui-daterangepicker li span {
+ float: right;
+ margin: .3em .2em;
+}
+.ui-daterangepicker .title-start, .ui-daterangepicker .title-end {
+ display: block;
+ margin: 0 0 .2em;
+ font-size: 1em;
+ padding: 0 4px 2px;
+}
+.ui-daterangepicker .ui-datepicker-inline {
+ font-size: 1em;
+}
+.ui-daterangepicker-arrows {
+ padding: 2px;
+ width: 204px;
+ position: relative;
+}
+.ui-daterangepicker-arrows input.ui-rangepicker-input {
+ width: 158px;
+ margin: 0 2px 0 20px;
+ padding: 2px;
+ height: 1.1em;
+}
+.ui-daterangepicker-arrows .ui-daterangepicker-prev, .ui-daterangepicker-arrows .ui-daterangepicker-next {
+ position: absolute;
+ top: 2px;
+ padding: 1px;
+}
+.ui-daterangepicker-arrows .ui-daterangepicker-prev {
+ left: 2px;
+}
+.ui-daterangepicker-arrows .ui-daterangepicker-next {
+ right: 2px;
+}
+.ui-daterangepicker-arrows .ui-daterangepicker-prev:hover,
+.ui-daterangepicker-arrows .ui-daterangepicker-next:hover,
+.ui-daterangepicker-arrows .ui-daterangepicker-prev:focus,
+.ui-daterangepicker-arrows .ui-daterangepicker-next:focus {
+ padding: 0;
+}
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/75bc10b5/Allura/allura/public/nf/js/stats.js
----------------------------------------------------------------------
diff --git a/Allura/allura/public/nf/js/stats.js b/Allura/allura/public/nf/js/stats.js
index 72e12dc..efbf938 100644
--- a/Allura/allura/public/nf/js/stats.js
+++ b/Allura/allura/public/nf/js/stats.js
@@ -100,25 +100,18 @@ function chartProjectStats(url, params, series, checkEmpty, tooltipFormat){
if (previousPoint !== item.dataIndex) {
previousPoint = item.dataIndex;
- $("#tooltip").remove();
+ $(".chart-tooltip").remove();
var x = item.datapoint[0].toFixed(0),
y = item.datapoint[1].toFixed(0);
- $('<div id="tooltip" class="tooltip">' + tooltipFormat(x,y,item) + '</div>').css( {
- position: 'absolute',
- display: 'none',
+ $('<div class="chart-tooltip">' + tooltipFormat(x,y,item) + '</div>').css( {
top: item.pageY - 5,
left: item.pageX + 5,
- zIndex: 1,
- background: 'white',
- border: '1px solid black',
- borderRadius: '0.5em',
- padding: '0 0.3em',
}).appendTo("body").fadeIn(200);
}
}
else {
- $("#tooltip").remove();
+ $(".chart-tooltip").remove();
previousPoint = null;
}
});
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/75bc10b5/ForgeDiscussion/forgediscussion/templates/discussionforums/stats_graph.html
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/templates/discussionforums/stats_graph.html b/ForgeDiscussion/forgediscussion/templates/discussionforums/stats_graph.html
index a6587b3..e05506b 100644
--- a/ForgeDiscussion/forgediscussion/templates/discussionforums/stats_graph.html
+++ b/ForgeDiscussion/forgediscussion/templates/discussionforums/stats_graph.html
@@ -54,6 +54,7 @@
{% block extra_css %}
<link rel="stylesheet" type="text/css" href="{{g.forge_static('css/smoothness/jquery-ui-1.8.4.custom.css')}}"/>
+<link rel="stylesheet" type="text/css" href="{{g.forge_static('css/forge/ui.daterangepicker.css')}}"/>
{% endblock %}
{% block extra_js %}
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/75bc10b5/rat-excludes.txt
----------------------------------------------------------------------
diff --git a/rat-excludes.txt b/rat-excludes.txt
index d62c09f..30ded2a 100644
--- a/rat-excludes.txt
+++ b/rat-excludes.txt
@@ -22,6 +22,7 @@ Allura/allura/lib/widgets/resources/js/jquery.textarea.js
Allura/allura/lib/widgets/resources/js/jquery.tools.min.js
Allura/allura/public/nf/css/blueprint/
Allura/allura/public/nf/css/forge/accordion.css
+Allura/allura/public/nf/css/forge/ui.daterangepicker.css
Allura/allura/public/nf/css/smoothness/jquery-ui-1.8.4.custom.css
Allura/allura/public/nf/images/beta_sf.psd
Allura/allura/public/nf/js/jquery-base.js
[06/10] git commit: [#6545] remove SF-specific ticket graph (was
deteriorating anyway)
Posted by br...@apache.org.
[#6545] remove SF-specific ticket graph (was deteriorating anyway)
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/dca43da2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/dca43da2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/dca43da2
Branch: refs/heads/db/6545
Commit: dca43da21bf113d23bd293c6657b5011996deeb6
Parents: 9aef835
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Fri Sep 6 19:37:49 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Fri Sep 6 20:34:28 2013 +0000
----------------------------------------------------------------------
.../forgetracker/templates/tracker/stats.html | 55 +-------------------
ForgeTracker/forgetracker/tracker_main.py | 27 +---------
2 files changed, 2 insertions(+), 80 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/dca43da2/ForgeTracker/forgetracker/templates/tracker/stats.html
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/templates/tracker/stats.html b/ForgeTracker/forgetracker/templates/tracker/stats.html
index 6351cf7..9db3fb3 100644
--- a/ForgeTracker/forgetracker/templates/tracker/stats.html
+++ b/ForgeTracker/forgetracker/templates/tracker/stats.html
@@ -41,57 +41,4 @@
<li>7 days: {{week_comments}}</li>
<li>14 days: {{fortnight_comments}}</li>
<li>30 days: {{month_comments}}</li>
-</ul>
-{% if show_stats %}
-<h2>Open and closed tickets over time</h2>
-<form class="bp" action="{{request.path_url}}">
- <div id="stats_date_picker">
- <label for="dates">Date Range: </label>
- <input value="{{dates}}" type="text" class="text ui-corner-all" name="dates" id="dates">
- </div>
-</form>
-
-<div id="stats-viz-container" class="project_stats">
- <div id="stats-viz" class="ui-corner-left ui-corner-br">
- <table>
- <tr>
- <td class="yaxis">Tickets</td>
- <td>
- <div id="project_stats_holder">
- <div id="grid">
- <div class="busy"></div>
- </div>
- </div>
- </td>
- </tr>
- <tr>
- <td colspan="2" class="xaxis">Date</td>
- </tr>
- </table>
- </div>
-</div>
-{% endif %}
-{% endblock %}
-{% block extra_js %}
-{% if show_stats %}
-<script type="text/javascript" src="{{g.forge_static('js/jquery.flot.js')}}"></script>
-<script type="text/javascript" src="{{g.forge_static('js/jquery.daterangepicker.js')}}"></script>
-<script type="text/javascript" src="{{g.forge_static('js/stats.js')}}"></script>
-<script type="text/javascript">
- /*global chartProjectStats */
- $(document).ready(function () {
- var series = function(data){
- return [{label: "Opened", lines: {show: true, lineWidth: 3}, points: {show:true, radius:2, fill: true, fillColor: '#0685c6'}, data: data.opened, shadowSize: 0},
- {label: "Closed", lines: {show: true, lineWidth: 3}, points: {show:true, radius:2, fill: true, fillColor: '#87c706'}, data: data.closed, shadowSize: 0}];
- };
- var checkEmpty = function(data){
- return !data.opened && !data.closed;
- };
- var tooltipFormat = function(x,y,item){
- return y + " tickets";
- };
- chartProjectStats('{{c.app.url}}stats_data',{},series,checkEmpty,tooltipFormat);
- });
-</script>
-{% endif %}
-{% endblock %}
\ No newline at end of file
+</ul>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/dca43da2/ForgeTracker/forgetracker/tracker_main.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index 4f2d7d2..3727b58 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -57,7 +57,6 @@ from allura.lib import widgets as w
from allura.lib import validators as V
from allura.lib.widgets import form_fields as ffw
from allura.lib.widgets.subscriptions import SubscribeForm
-from allura.lib.zarkov_helpers import zero_fill_zarkov_result
from allura.controllers import AppDiscussionController, AppDiscussionRestController
from allura.controllers import attachments as ac
from allura.controllers import BaseController
@@ -928,10 +927,6 @@ class RootController(BaseController, FeedController):
if dates is None:
today = datetime.utcnow()
dates = "%s to %s" % ((today - timedelta(days=61)).strftime('%Y-%m-%d'), today.strftime('%Y-%m-%d'))
- if c.app.config.get_tool_data('sfx', 'group_artifact_id') and config.get('zarkov.webservice_host'):
- show_stats = True
- else:
- show_stats = False
return dict(
now=str(now),
week_ago=str(week_ago),
@@ -949,28 +944,8 @@ class RootController(BaseController, FeedController):
closed=closed,
globals=globals,
dates=dates,
- show_stats=show_stats)
+ )
- @expose('json:')
- def stats_data(self, begin=None, end=None, **kw):
- if c.app.config.get_tool_data('sfx', 'group_artifact_id') and config.get('zarkov.webservice_host'):
- if begin is None and end is None:
- end_time = datetime.utcnow()
- begin_time = (end_time - timedelta(days=61))
- end = end_time.strftime('%Y-%m-%d')
- begin = begin_time.strftime('%Y-%m-%d')
- else:
- end_time = datetime.strptime(end,'%Y-%m-%d')
- begin_time = datetime.strptime(begin,'%Y-%m-%d')
- time_interval = 'date'
- if end_time - begin_time > timedelta(days=183):
- time_interval = 'month'
- q_filter = 'group-tracker-%s/%s/%s/' % (time_interval,c.project.get_tool_data('sfx', 'group_id'),c.app.config.get_tool_data('sfx', 'group_artifact_id'))
- params = urlencode({'data': '{"c":"tracker","b":"'+q_filter+begin+'","e":"'+q_filter+end+'"}'})
- read_zarkov = json.load(urlopen(config.get('zarkov.webservice_host')+'/q', params))
- return zero_fill_zarkov_result(read_zarkov, time_interval, begin, end)
- else:
- return dict()
@expose()
@validate(W.subscribe_form)
[04/10] git commit: [#6545] Add graph of forum posts
Posted by br...@apache.org.
[#6545] Add graph of forum posts
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/9aef835c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/9aef835c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/9aef835c
Branch: refs/heads/db/6545
Commit: 9aef835c6384d117b50196155308368d8e23e89b
Parents: aac6efc
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Wed Sep 4 22:06:19 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Fri Sep 6 20:34:20 2013 +0000
----------------------------------------------------------------------
Allura/allura/lib/helpers.py | 6 ++
Allura/allura/public/nf/js/stats.js | 29 ++++---
.../forgediscussion/controllers/root.py | 81 +++++++++++++++++++-
ForgeDiscussion/forgediscussion/forum_main.py | 2 +-
.../templates/discussionforums/stats_graph.html | 79 +++++++++++++++++++
.../forgetracker/templates/tracker/stats.html | 4 -
6 files changed, 184 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/9aef835c/Allura/allura/lib/helpers.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/helpers.py b/Allura/allura/lib/helpers.py
index 0e13fad..9c3d9e4 100644
--- a/Allura/allura/lib/helpers.py
+++ b/Allura/allura/lib/helpers.py
@@ -1006,3 +1006,9 @@ def iter_entry_points(group, *a, **kw):
for ep in pkg_resources.iter_entry_points(group, *a, **kw):
if ep.name not in disabled:
yield ep
+
+
+# http://stackoverflow.com/a/1060330/79697
+def daterange(start_date, end_date):
+ for n in range(int((end_date - start_date).days)):
+ yield start_date + timedelta(n)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/9aef835c/Allura/allura/public/nf/js/stats.js
----------------------------------------------------------------------
diff --git a/Allura/allura/public/nf/js/stats.js b/Allura/allura/public/nf/js/stats.js
index 2c803f6..72e12dc 100644
--- a/Allura/allura/public/nf/js/stats.js
+++ b/Allura/allura/public/nf/js/stats.js
@@ -20,26 +20,30 @@
/*global jQuery, $, addCommas */
jQuery(function($) {
// date range picker
- if ($('.picker input').length) {
- $('.picker input').daterangepicker({
+ var input = $('#stats_date_picker input');
+ if (input.length) {
+ input.daterangepicker({
onOpen: function() {
- $('.picker input')[0].prev_value = $('.picker input').val();
+ input[0].prev_value = input.val();
},
onClose: function() {
- if ($('.picker input')[0].prev_value !== $('.picker input').val()) {
- $('.picker input').parents('form').submit();
- //console.log('close',$('.picker input').val());
+ if (input[0].prev_value !== input.val()) {
+ input.parents('form').submit();
}
},
rangeSplitter: 'to',
dateFormat: 'yy-mm-dd', // yy is 4 digit
- earliestDate: new Date($('.picker input').attr('data-start-date')),
+ earliestDate: new Date(input.attr('data-start-date')),
latestDate: new Date()
});
}
});
function chartProjectStats(url, params, series, checkEmpty, tooltipFormat){
+ var timeformat = "%y-%0m-%0d";
+ tooltipFormat = tooltipFormat || function(x,y,item) {
+ return y + " on " + $.plot.formatDate(new Date(parseInt(x, 10)), timeformat);
+ };
var holder = $('#stats-viz');
var dates = $('#dates').val().split(' to ');
var begin = Date.parse(dates[0]).setTimezoneOffset(0);
@@ -64,7 +68,7 @@ function chartProjectStats(url, params, series, checkEmpty, tooltipFormat){
colors: ['#0685c6','#87c706','#c7c706','#c76606'],
xaxis:{
mode: "time",
- timeformat: "%y-%0m-%0d",
+ timeformat: timeformat,
minTickSize: [1, "day"],
min: begin,
max: end,
@@ -103,8 +107,13 @@ function chartProjectStats(url, params, series, checkEmpty, tooltipFormat){
$('<div id="tooltip" class="tooltip">' + tooltipFormat(x,y,item) + '</div>').css( {
position: 'absolute',
display: 'none',
- top: item.pageY + 5,
- left: item.pageX + 5
+ top: item.pageY - 5,
+ left: item.pageX + 5,
+ zIndex: 1,
+ background: 'white',
+ border: '1px solid black',
+ borderRadius: '0.5em',
+ padding: '0 0.3em',
}).appendTo("body").fadeIn(200);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/9aef835c/ForgeDiscussion/forgediscussion/controllers/root.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/controllers/root.py b/ForgeDiscussion/forgediscussion/controllers/root.py
index fa0e97b..9250ad0 100644
--- a/ForgeDiscussion/forgediscussion/controllers/root.py
+++ b/ForgeDiscussion/forgediscussion/controllers/root.py
@@ -18,10 +18,12 @@
import json
import logging
from urllib import unquote
-from itertools import imap
+from datetime import date, datetime, timedelta, time
+from time import mktime
+from collections import OrderedDict
from tg import expose, validate, redirect, flash, response
-from tg.decorators import with_trailing_slash
+from tg.decorators import with_trailing_slash, without_trailing_slash
from pylons import tmpl_context as c, app_globals as g
from pylons import request
from formencode import validators
@@ -212,6 +214,81 @@ class RootController(BaseController, DispatchIndex, FeedController):
'Recent posts to %s' % app.config.options.mount_label,
app.url)
+ @without_trailing_slash
+ @expose('jinja:forgediscussion:templates/discussionforums/stats_graph.html')
+ def stats(self, dates=None, **kw):
+ if not dates:
+ dates = "{} to {}".format(
+ (date.today() - timedelta(days=60)).strftime('%Y-%m-%d'),
+ date.today().strftime('%Y-%m-%d'))
+ return dict(
+ dates=dates,
+ )
+
+ @expose('json')
+ @validate(dict(
+ begin=h.DateTimeConverter(if_empty=None, if_invalid=None),
+ end=h.DateTimeConverter(if_empty=None, if_invalid=None),
+ ))
+ def stats_data(self, begin=None, end=None, **kw):
+ end = end or date.today()
+ begin = begin or end - timedelta(days=60)
+
+ discussion_id_q = {
+ '$in': [d._id for d in c.app.forums]
+ }
+ # must be ordered dict, so that sorting by this works properly
+ grouping = OrderedDict()
+ grouping['year'] = {'$year': '$timestamp'}
+ grouping['month'] = {'$month': '$timestamp'}
+ grouping['day'] = {'$dayOfMonth': '$timestamp'}
+ {
+ 'year': {'$year': '$timestamp'},
+ 'month': {'$month': '$timestamp'},
+ 'day': {'$dayOfMonth': '$timestamp'},
+ }
+ mongo_data = model.ForumPost.query.aggregate([
+ {'$match': {
+ 'discussion_id': discussion_id_q,
+ 'status': 'ok',
+ 'timestamp': {
+ # convert date to datetime to make pymongo happy
+ '$gte': datetime.combine(begin, time.min),
+ '$lte': datetime.combine(end, time.max),
+ },
+ }},
+ {'$group': {
+ '_id': grouping,
+ 'posts': {'$sum': 1},
+ }},
+ {'$sort': {
+ '_id': pymongo.ASCENDING,
+ }},
+ ])['result']
+
+ def reformat_data(mongo_data):
+ def item(day, val):
+ return [
+ mktime(day.timetuple()) * 1000,
+ val
+ ]
+
+ next_expected_date = begin
+ for d in mongo_data:
+ this_date = datetime(d['_id']['year'], d['_id']['month'], d['_id']['day'])
+ for day in h.daterange(next_expected_date, this_date):
+ yield item(day, 0)
+ yield item(this_date, d['posts'])
+ next_expected_date = this_date + timedelta(days=1)
+ for day in h.daterange(next_expected_date, end + timedelta(days=1)):
+ yield item(day, 0)
+
+ return dict(
+ begin=begin,
+ end=end,
+ data=list(reformat_data(mongo_data)),
+ )
+
class RootRestController(BaseController):
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/9aef835c/ForgeDiscussion/forgediscussion/forum_main.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/forum_main.py b/ForgeDiscussion/forgediscussion/forum_main.py
index 54c4bef..2145037 100644
--- a/ForgeDiscussion/forgediscussion/forum_main.py
+++ b/ForgeDiscussion/forgediscussion/forum_main.py
@@ -172,6 +172,7 @@ class ForgeDiscussionApp(Application):
l.append(SitemapEntry(
'Mark as Spam', 'flag_as_spam',
ui_icon=g.icons['flag'], className='sidebar_thread_spam'))
+ l.append(SitemapEntry('Stats Graph', c.app.url + 'stats', ui_icon=g.icons['stats']))
if forum_links:
l.append(SitemapEntry('Forums'))
l = l + forum_links
@@ -301,4 +302,3 @@ class ForumAdminController(DefaultAdminController):
def add_forum(self, add_forum=None, **kw):
f = utils.create_forum(self.app, add_forum)
redirect(f.url())
-
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/9aef835c/ForgeDiscussion/forgediscussion/templates/discussionforums/stats_graph.html
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/templates/discussionforums/stats_graph.html b/ForgeDiscussion/forgediscussion/templates/discussionforums/stats_graph.html
new file mode 100644
index 0000000..a6587b3
--- /dev/null
+++ b/ForgeDiscussion/forgediscussion/templates/discussionforums/stats_graph.html
@@ -0,0 +1,79 @@
+{#-
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-#}
+{% extends g.theme.master %}
+
+{% block title %}{{c.project.name}} / {{c.app.config.options.mount_label}} / Stats{% endblock %}
+
+{% block header %}Stats{% endblock %}
+
+{% block content %}
+<form>
+ <div id="stats_date_picker">
+ <label for="dates">Date Range: </label>
+ <input value="{{dates}}" type="text" class="text ui-corner-all" name="dates" id="dates">
+ </div>
+</form>
+
+<div id="stats-viz-container" class="project_stats">
+ <div id="stats-viz" class="ui-corner-left ui-corner-br">
+ <table>
+ <tr>
+ <td class="yaxis">Posts</td>
+ <td>
+ <div id="project_stats_holder">
+ <div id="grid">
+ <div class="busy"></div>
+ </div>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="xaxis">Date</td>
+ </tr>
+ </table>
+ </div>
+</div>
+
+{% endblock %}
+
+{% block extra_css %}
+<link rel="stylesheet" type="text/css" href="{{g.forge_static('css/smoothness/jquery-ui-1.8.4.custom.css')}}"/>
+{% endblock %}
+
+{% block extra_js %}
+<script type="text/javascript" src="{{g.forge_static('js/jquery.flot.js')}}"></script>
+<script type="text/javascript" src="{{g.forge_static('js/jquery.daterangepicker.js')}}"></script>
+<script type="text/javascript" src="{{g.forge_static('js/stats.js')}}"></script>
+<script type="text/javascript">
+ /*global chartProjectStats */
+ $(document).ready(function () {
+ var series = function(data){
+ return [{label: "Posts",
+ lines: {show: true, lineWidth: 3},
+ points: {show:true, radius:2, fill: true, fillColor: '#0685c6'},
+ data: data, shadowSize: 0}
+ ];
+ };
+ var checkEmpty = function(data){
+ return !data.length;
+ };
+ chartProjectStats('{{c.app.url}}stats_data',{},series,checkEmpty);
+ });
+</script>
+{% endblock %}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/9aef835c/ForgeTracker/forgetracker/templates/tracker/stats.html
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/templates/tracker/stats.html b/ForgeTracker/forgetracker/templates/tracker/stats.html
index f4ac5b9..6351cf7 100644
--- a/ForgeTracker/forgetracker/templates/tracker/stats.html
+++ b/ForgeTracker/forgetracker/templates/tracker/stats.html
@@ -91,10 +91,6 @@
return y + " tickets";
};
chartProjectStats('{{c.app.url}}stats_data',{},series,checkEmpty,tooltipFormat);
-
- $('#dates').change(function(){
- $("form.bp").submit();
- });
});
</script>
{% endif %}
[03/10] git commit: [#6545] remove old indexes and code;
add 'timestamp' to discussion_id,status index
Posted by br...@apache.org.
[#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()
[05/10] git commit: [#6545] ignore query string when checking for
active sidebar item
Posted by br...@apache.org.
[#6545] ignore query string when checking for active sidebar item
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/f6641101
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/f6641101
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/f6641101
Branch: refs/heads/db/6545
Commit: f66411014598f23683e88992ca32655b80baa95b
Parents: 3a75d47
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Fri Sep 6 20:33:41 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Fri Sep 6 20:34:28 2013 +0000
----------------------------------------------------------------------
Allura/allura/templates/jinja_master/sidebar_menu.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/f6641101/Allura/allura/templates/jinja_master/sidebar_menu.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/jinja_master/sidebar_menu.html b/Allura/allura/templates/jinja_master/sidebar_menu.html
index f8b9c8e..08beed2 100644
--- a/Allura/allura/templates/jinja_master/sidebar_menu.html
+++ b/Allura/allura/templates/jinja_master/sidebar_menu.html
@@ -23,7 +23,7 @@
<ul class="sidebarmenu">
{% do ul_active.append(True) %}
{% endif %}
- <li{% if request.url.find(s.url,-s.url.__len__()) != -1 %} class="active"{% endif %}>
+ <li{% if request.path.find(s.url,-s.url.__len__()) != -1 %} class="active"{% endif %}>
<a href="{{s.url}}"{% if s.className %} class="{{s.className or ''}}"{% endif %}>{% if s.ui_icon %}<b data-icon="{{s.ui_icon.char}}" class="ico {{s.ui_icon.css}}"></b> {% endif %}<span{% if s.small != None %} class="has_small"{% endif %}>{{h.really_unicode(s.label)}}</span>{% if s.small != None %}<small>{{s.small}}</small>{% endif %}</a>
</li>
{% else %}
[10/10] git commit: [#6545] tests
Posted by br...@apache.org.
[#6545] tests
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/531d571d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/531d571d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/531d571d
Branch: refs/heads/db/6545
Commit: 531d571de4559aa6579553138a104e1d3dae4101
Parents: a57cbaa
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Fri Sep 6 21:05:29 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Fri Sep 6 21:05:29 2013 +0000
----------------------------------------------------------------------
Allura/allura/tests/test_helpers.py | 7 +++-
.../tests/functional/test_forum.py | 43 ++++++++++++++++++++
2 files changed, 49 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/531d571d/Allura/allura/tests/test_helpers.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/test_helpers.py b/Allura/allura/tests/test_helpers.py
index e9bc8f9..d4e5a0c 100644
--- a/Allura/allura/tests/test_helpers.py
+++ b/Allura/allura/tests/test_helpers.py
@@ -19,8 +19,9 @@
from unittest import TestCase
from os import path
-from mock import Mock, patch
+from datetime import datetime
+from mock import Mock, patch
from pylons import tmpl_context as c
from nose.tools import eq_, assert_equals
from IPython.testing.decorators import skipif, module_not_available
@@ -428,3 +429,7 @@ def test_absurl_no_request():
def test_absurl_with_request():
assert_equals(h.absurl('/p/test/foobar'), 'https://www.mysite.com/p/test/foobar')
+
+def test_daterange():
+ assert_equals(list(h.daterange(datetime(2013, 1, 1), datetime(2013, 1, 4))),
+ [datetime(2013, 1, 1), datetime(2013, 1, 2), datetime(2013, 1, 3)])
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/531d571d/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
index 12238c8..7980bee 100644
--- a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
+++ b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
@@ -762,3 +762,46 @@ class TestForum(TestController):
assert u'téstforum'.encode('utf-8') in r
r = self.app.get(u'/p/test/discussion/create_topic/téstforum/'.encode('utf-8'))
assert u'<option value="téstforum" selected>Tést Forum</option>' in r
+
+
+class TestForumStats(TestController):
+
+ def test_stats(self):
+ self.app.get('/discussion/stats', status=200)
+
+ @mock.patch('ming.session.Session.aggregate') # mim doesn't support aggregate
+ def test_stats_data(self, aggregate):
+ # partial data, some days are implicit 0
+ aggregate.return_value = {'result': [
+ {"_id": {
+ "year": 2013,
+ "month": 1,
+ "day": 2},
+ "posts": 3
+ },
+ {"_id": {
+ "year": 2013,
+ "month": 1,
+ "day": 3},
+ "posts": 5
+ },
+ {"_id": {
+ "year": 2013,
+ "month": 1,
+ "day": 5},
+ "posts": 2
+ },
+ ]}
+ r = self.app.get('/discussion/stats_data?begin=2013-01-01&end=2013-01-06')
+ assert_equal(r.json, {
+ 'begin': '2013-01-01 00:00:00',
+ 'end': '2013-01-06 00:00:00',
+ 'data': [
+ [1356998400000, 0],
+ [1357084800000, 3],
+ [1357171200000, 5],
+ [1357257600000, 0],
+ [1357344000000, 2],
+ [1357430400000, 0],
+ ]
+ })