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

Reply via email to