You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kibble.apache.org by hu...@apache.org on 2017/10/22 21:49:27 UTC

[kibble] branch master updated (e149a7f -> af6ad24)

This is an automated email from the ASF dual-hosted git repository.

humbedooh pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/kibble.git.


    from e149a7f  Filter out robits here
     new e986ca8  reinstate single-person (email-only) timeseries
     new 6e8e951  point to new script
     new af6ad24  regen specs

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../{code/commits.py => mail/timeseries-single.py} | 32 +++++++----------
 api/yaml/openapi.yaml                              | 40 ++++++++++++++++++++++
 api/yaml/widgets.yaml                              |  2 +-
 3 files changed, 54 insertions(+), 20 deletions(-)
 copy api/pages/{code/commits.py => mail/timeseries-single.py} (85%)

-- 
To stop receiving notification emails like this one, please contact
['"commits@kibble.apache.org" <co...@kibble.apache.org>'].

[kibble] 02/03: point to new script

Posted by hu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

humbedooh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kibble.git

commit 6e8e951fd646d4a344b2b1227355f6bfd5bd5768
Author: Daniel Gruno <hu...@apache.org>
AuthorDate: Sun Oct 22 23:49:08 2017 +0200

    point to new script
---
 api/yaml/widgets.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/api/yaml/widgets.yaml b/api/yaml/widgets.yaml
index badf4e8..13856ca 100644
--- a/api/yaml/widgets.yaml
+++ b/api/yaml/widgets.yaml
@@ -615,7 +615,7 @@ widgets:
                 children:
                     -
                         type:   "line"
-                        source: "mail/timeseries"
+                        source: "mail/timeseries-single"
                         name:   "Email sent"
                         blocks: 6
                     -

-- 
To stop receiving notification emails like this one, please contact
"commits@kibble.apache.org" <co...@kibble.apache.org>.

[kibble] 01/03: reinstate single-person (email-only) timeseries

Posted by hu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

humbedooh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kibble.git

commit e986ca8cd9ef048e34ea5e26dca04f62b33178cb
Author: Daniel Gruno <hu...@apache.org>
AuthorDate: Sun Oct 22 23:49:01 2017 +0200

    reinstate single-person (email-only) timeseries
    
    let's call this timeseries-single for now.
---
 api/pages/mail/timeseries-single.py | 163 ++++++++++++++++++++++++++++++++++++
 1 file changed, 163 insertions(+)

diff --git a/api/pages/mail/timeseries-single.py b/api/pages/mail/timeseries-single.py
new file mode 100644
index 0000000..855539c
--- /dev/null
+++ b/api/pages/mail/timeseries-single.py
@@ -0,0 +1,163 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# 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.
+########################################################################
+# OPENAPI-URI: /api/mail/timeseries-single
+########################################################################
+# get:
+#   responses:
+#     '200':
+#       content:
+#         application/json:
+#           schema:
+#             $ref: '#/components/schemas/Timeseries'
+#       description: 200 Response
+#     default:
+#       content:
+#         application/json:
+#           schema:
+#             $ref: '#/components/schemas/Error'
+#       description: unexpected error
+#   security:
+#   - cookieAuth: []
+#   summary: Shows email sent over time
+# post:
+#   requestBody:
+#     content:
+#       application/json:
+#         schema:
+#           $ref: '#/components/schemas/defaultWidgetArgs'
+#   responses:
+#     '200':
+#       content:
+#         application/json:
+#           schema:
+#             $ref: '#/components/schemas/Timeseries'
+#       description: 200 Response
+#     default:
+#       content:
+#         application/json:
+#           schema:
+#             $ref: '#/components/schemas/Error'
+#       description: unexpected error
+#   security:
+#   - cookieAuth: []
+#   summary: Shows email sent over time
+# 
+########################################################################
+
+
+
+
+
+"""
+This is the email-only timeseries renderer for Kibble
+unlike timeseries.py, this only shows mail sent, not topics or authors.
+"""
+
+import json
+import time
+import hashlib
+
+def run(API, environ, indata, session):
+    
+    # We need to be logged in for this!
+    if not session.user:
+        raise API.exception(403, "You must be logged in to use this API endpoint! %s")
+    
+    now = time.time()
+    
+    # First, fetch the view if we have such a thing enabled
+    viewList = []
+    if indata.get('view'):
+        viewList = session.getView(indata.get('view'))
+    if indata.get('subfilter'):
+        viewList = session.subFilter(indata.get('subfilter'), view = viewList) 
+    
+    
+    dateTo = indata.get('to', int(time.time()))
+    dateFrom = indata.get('from', dateTo - (86400*30*6)) # Default to a 6 month span
+    
+    interval = indata.get('interval', 'month')
+    
+    
+    ####################################################################
+    ####################################################################
+    dOrg = session.user['defaultOrganisation'] or "apache"
+    query = {
+                'query': {
+                    'bool': {
+                        'must': [
+                            {'range':
+                                {
+                                    'ts': {
+                                        'from': dateFrom,
+                                        'to': dateTo
+                                    }
+                                }
+                            },
+                            {
+                                'term': {
+                                    'organisation': dOrg
+                                }
+                            }
+                        ]
+                    }
+                }
+            }
+    # Source-specific or view-specific??
+    if indata.get('source'):
+        query['query']['bool']['must'].append({'term': {'sourceID': indata.get('source')}})
+    elif viewList:
+        query['query']['bool']['must'].append({'terms': {'sourceID': viewList}})
+    if indata.get('email'):
+        query['query']['bool']['should'] = [{'term': {'sender': indata.get('email')}}]
+        query['query']['bool']['minimum_should_match'] = 1
+    
+    # Get number of committers, this period
+    query['aggs'] = {
+            'timeseries': {
+                'date_histogram': {
+                    'field': 'date',
+                    'interval': interval
+                }
+            }
+        }
+    res = session.DB.ES.search(
+            index=session.DB.dbname,
+            doc_type="email",
+            size = 0,
+            body = query
+        )
+    
+    timeseries = []
+    for bucket in res['aggregations']['timeseries']['buckets']:
+        ts = int(bucket['key'] / 1000)
+        timeseries.append({
+            'date': ts,
+            'emails': bucket['doc_count']
+        })
+    
+    JSON_OUT = {
+        'widgetType': {
+            'chartType': 'bar'  # Recommendation for the UI
+        },
+        'timeseries': timeseries,
+        'interval': interval,
+        'okay': True,
+        'responseTime': time.time() - now
+    }
+    yield json.dumps(JSON_OUT)

-- 
To stop receiving notification emails like this one, please contact
"commits@kibble.apache.org" <co...@kibble.apache.org>.

[kibble] 03/03: regen specs

Posted by hu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

humbedooh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kibble.git

commit af6ad243e14b1d6d60cc3b98137bd36bb0350f89
Author: Daniel Gruno <hu...@apache.org>
AuthorDate: Sun Oct 22 23:49:20 2017 +0200

    regen specs
---
 api/yaml/openapi.yaml | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/api/yaml/openapi.yaml b/api/yaml/openapi.yaml
index eb68027..628c7a8 100644
--- a/api/yaml/openapi.yaml
+++ b/api/yaml/openapi.yaml
@@ -1789,6 +1789,46 @@ paths:
       security:
       - cookieAuth: []
       summary: Shows email sent over time
+  /api/mail/timeseries-single:
+    get:
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Timeseries'
+          description: 200 Response
+        default:
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Error'
+          description: unexpected error
+      security:
+      - cookieAuth: []
+      summary: Shows email sent over time
+    post:
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/defaultWidgetArgs'
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Timeseries'
+          description: 200 Response
+        default:
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Error'
+          description: unexpected error
+      security:
+      - cookieAuth: []
+      summary: Shows email sent over time
   /api/mail/top-authors:
     get:
       responses:

-- 
To stop receiving notification emails like this one, please contact
"commits@kibble.apache.org" <co...@kibble.apache.org>.