Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar_network/node/stats.py
diff options
context:
space:
mode:
Diffstat (limited to 'sugar_network/node/stats.py')
-rw-r--r--sugar_network/node/stats.py32
1 files changed, 17 insertions, 15 deletions
diff --git a/sugar_network/node/stats.py b/sugar_network/node/stats.py
index d1b0d63..1af23d9 100644
--- a/sugar_network/node/stats.py
+++ b/sugar_network/node/stats.py
@@ -101,7 +101,7 @@ _ROUTES = {
('users', -1),
}
-_MAX_STAT_RECORDS = 100
+_LIMIT = 100
_logger = logging.getLogger('node.stats')
@@ -144,12 +144,12 @@ class StatRoutes(object):
stat = stat()
self._stats[stat] += shift
- if stat_rating and r.method == 'POST' and r.resource == 'post':
+ if stat_rating:
rating = None
if stat == 'topics' and this.resource['type'] == 'review':
rating = self._rating['context']
rating = rating.setdefault(this.resource['context'], [0, 0])
- else:
+ elif stat == 'posts':
rating = self._rating['post']
rating = rating.setdefault(this.resource['topic'], [0, 0])
if rating is not None:
@@ -159,28 +159,30 @@ class StatRoutes(object):
return result
@route('GET', cmd='stats', arguments={
- 'start': int, 'end': int, 'records': int, 'source': list},
+ 'start': int, 'end': int, 'limit': int, 'event': list},
mime_type='application/json')
- def stats(self, start, end, records, source):
+ def stats(self, start, end, limit, event):
enforce(self._rrd is not None, 'Statistics disabled')
if not start:
start = self._rrd.first or 0
if not end:
end = self._rrd.last or 0
- if records > _MAX_STAT_RECORDS:
- _logger.debug('Decrease %d stats records number to %d',
- records, _MAX_STAT_RECORDS)
- records = _MAX_STAT_RECORDS
- elif records <= 0:
- records = _MAX_STAT_RECORDS / 10
- resolution = max(1, (end - start) / records)
+ if limit > _LIMIT:
+ _logger.debug('Decrease %d limit by %d', limit, _LIMIT)
+ limit = _LIMIT
+ elif limit <= 0:
+ result = self._rrd.values(end)
+ result['timestamp'] = end
+ return result
+ resolution = max(1, (end - start) / limit)
result = []
for ts, values in self._rrd.get(start, end, resolution):
- if source:
- values = dict([(i, values[i]) for i in source])
- result.append((ts, values))
+ if event:
+ values = dict([(i, values[i]) for i in event])
+ values['timestamp'] = ts
+ result.append(values)
return result
def stats_auto_commit(self):