diff --git a/data_processor/api.py b/data_processor/api.py index 78f6add..7c85a48 100644 --- a/data_processor/api.py +++ b/data_processor/api.py @@ -235,5 +235,13 @@ def issue_distribution(owner, repo): data = queries.issue_distribution(index) return jsonify(data=data) +@app.route('///active_issues') +@crossdomain(origin='*') +@cached() +def active_issues(owner, repo): + index = index_name(owner, repo) + data = queries.active_issues(index) + return jsonify(data=data) + if __name__ == '__main__': app.run(host='0.0.0.0', threaded=True) diff --git a/data_processor/queries.py b/data_processor/queries.py index 70f006a..6b22202 100644 --- a/data_processor/queries.py +++ b/data_processor/queries.py @@ -163,6 +163,24 @@ def total_events(index, start=None, end=None): counts[c['term']] = c['count'] return counts + +def active_issues(index): + """ + Find the issues that have been active during the past week + """ + now = datetime.datetime.now() + limit = now - datetime.timedelta(weeks=1) + issues = S().indexes(index).doctypes('IssuesEvent', 'IssueCommentEvent', 'PullRequestEvent', 'PullRequestReviewCommentEvent') \ + .filter(updated_at__gt=limit).values_dict() + + issues = all(issues) + + active_issues = [i for i in list(issues)] + active_issues = active_issues[:LIMIT] + + return active_issues + + def most_active_issues(index, start=None, end=None): """ Finds the 10 most active open issues - by total number of events.