Milimetric has uploaded a new change for review.
https://gerrit.wikimedia.org/r/72533
Change subject: got the rest of the bytes added tests passing
......................................................................
got the rest of the bytes added tests passing
Change-Id: Ide03c4c29bba68d17911c57cb650e4b71697f212
---
M tests/test_controllers/test_metrics.py
M tests/test_metrics/test_bytes_added.py
M wikimetrics/metrics/bytes_added.py
3 files changed, 35 insertions(+), 31 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/analytics/wikimetrics
refs/changes/33/72533/1
diff --git a/tests/test_controllers/test_metrics.py
b/tests/test_controllers/test_metrics.py
index 02d20e3..68b5975 100644
--- a/tests/test_controllers/test_metrics.py
+++ b/tests/test_controllers/test_metrics.py
@@ -36,7 +36,7 @@
def test_configure_get(self):
response = self.app.get('/metrics/configure/BytesAdded')
assert_not_equal(
- response.data.find('name="positive_total"'),
+ response.data.find('name="positive_only_sum"'),
-1,
'A form to configure a BytesAdded metric was not rendered'
)
diff --git a/tests/test_metrics/test_bytes_added.py
b/tests/test_metrics/test_bytes_added.py
index 250c638..0e9b639 100644
--- a/tests/test_metrics/test_bytes_added.py
+++ b/tests/test_metrics/test_bytes_added.py
@@ -44,6 +44,7 @@
start_date='2013-07-01',
end_date='2013-08-01',
)
+ metric.csrf_token.data = metric.generate_csrf_token({})
assert_true(metric.validate())
results = metric(list(self.cohort), self.mwSession)
@@ -56,7 +57,6 @@
assert_equal(
results[self.dan_id],
dan_expected,
- 'did not get the results expected'
)
def test_uses_summation_options(self):
@@ -65,9 +65,10 @@
namespaces=[0],
start_date='2013-06-01',
end_date='2013-08-01',
- positive_total=False,
- negative_total=False,
+ positive_only_sum=False,
+ negative_only_sum=False,
)
+ metric.csrf_token.data = metric.generate_csrf_token({})
assert_true(metric.validate())
results = metric(list(self.cohort), self.mwSession)
@@ -78,5 +79,4 @@
assert_equal(
results[self.dan_id],
dan_expected,
- 'did not get the results expected'
)
diff --git a/wikimetrics/metrics/bytes_added.py
b/wikimetrics/metrics/bytes_added.py
index 4955ba0..21cc4fc 100644
--- a/wikimetrics/metrics/bytes_added.py
+++ b/wikimetrics/metrics/bytes_added.py
@@ -2,7 +2,7 @@
from metric import Metric
from form_fields import BetterBooleanField, CommaSeparatedIntegerListField
from wtforms import DateField
-from sqlalchemy import func, case
+from sqlalchemy import func, case, between
from sqlalchemy.sql.expression import label
@@ -17,10 +17,10 @@
An instance of the class is callable and will compute four different
aggregations of
the bytes contributed or removed from a mediawiki instance:
- * net_sum: bytes added minus bytes removed
- * abs_sum: bytes added plus bytes removed
- * pos_sum: bytes added
- * neg_sum: bytes removed
+ * net_sum : bytes added minus bytes removed
+ * absolute_sum : bytes added plus bytes removed
+ * positive_only_sum : bytes added
+ * negative_only_sum : bytes removed
This sql query was used as a starting point for the sqlalchemy query:
@@ -29,19 +29,19 @@
) as net_sum
,sum(
abs(cast(r.rev_len as signed) -
cast(coalesce(previous_r.rev_len, 0) as signed))
- ) as abs_sum
+ ) as absolute_sum
,sum(case
when cast(r.rev_len as signed) -
cast(coalesce(previous_r.rev_len, 0) as signed) > 0
then cast(r.rev_len as signed) -
cast(coalesce(previous_r.rev_len, 0) as signed)
else 0
- end) as pos_sum
+ end) as positive_only_sum
,sum(case
when cast(r.rev_len as signed) -
cast(coalesce(previous_r.rev_len, 0) as signed) < 0
then abs(
cast(r.rev_len as signed) -
cast(coalesce(previous_r.rev_len, 0) as signed)
)
else 0
- end) as neg_sum
+ end) as negative_only_sum
from revision r
inner join
page p on p.page_id = r.rev_page
@@ -57,13 +57,14 @@
description = 'Compute different aggregations of the bytes contributed or
removed from a\
mediawiki project'
- start_date = DateField()
- end_date = DateField()
- namespaces = CommaSeparatedIntegerListField(default=[0],
description='0, 2, 4, etc.')
- positive_total = BetterBooleanField(default=True)
- negative_total = BetterBooleanField(default=True)
- absolute_total = BetterBooleanField(default=True)
- net_total = BetterBooleanField(default=True)
+
+ start_date = DateField()
+ end_date = DateField()
+ namespaces = CommaSeparatedIntegerListField(default=[0],
description='0, 2, 4, etc.')
+ positive_only_sum = BetterBooleanField(default=True)
+ negative_only_sum = BetterBooleanField(default=True)
+ absolute_sum = BetterBooleanField(default=True)
+ net_sum = BetterBooleanField(default=True)
def __call__(self, user_ids, session):
"""
@@ -88,6 +89,7 @@
.outerjoin(PreviousRevision, Revision.rev_parent_id ==
PreviousRevision.c.rev_id)\
.filter(Page.page_namespace.in_(self.namespaces.data))\
.filter(Revision.rev_user.in_(user_ids))\
+ .filter(between(Revision.rev_timestamp, self.start_date.data,
self.end_date.data))\
.subquery()
bytes_added_by_user = session.query(
@@ -103,18 +105,20 @@
)\
.group_by(BC.c.rev_user)\
.all()
- print bytes_added_by_user
- result_dict = {
- user_id: {
- 'net_sum': net_sum,
- 'absolute_sum': absolute_sum,
- 'positive_only_sum': positive_only_sum,
- 'negative_only_sum': negative_only_sum,
- }
- for user_id, net_sum, absolute_sum, positive_only_sum,
negative_only_sum
- in bytes_added_by_user
- }
+ result_dict = {}
+ for user_id, net, absolute, positive, negative in bytes_added_by_user:
+
+ result_dict[user_id] = {}
+ if self.net_sum.data:
+ result_dict[user_id]['net_sum'] = net
+ if self.absolute_sum.data:
+ result_dict[user_id]['absolute_sum'] = absolute
+ if self.positive_only_sum.data:
+ result_dict[user_id]['positive_only_sum'] = positive
+ if self.negative_only_sum.data:
+ result_dict[user_id]['negative_only_sum'] = negative
+
return {user_id: result_dict.get(user_id, {
'net_sum': None,
'absolute_sum': None,
--
To view, visit https://gerrit.wikimedia.org/r/72533
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ide03c4c29bba68d17911c57cb650e4b71697f212
Gerrit-PatchSet: 1
Gerrit-Project: analytics/wikimetrics
Gerrit-Branch: master
Gerrit-Owner: Milimetric <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits