cacompliance/main.py (48 lines of code) (raw):
# [START gae_python311_app]
from flask import Flask, render_template, request, jsonify, make_response
from collections import Counter
import datetime
from datetime import datetime, timedelta, date
import bugzilla
app = Flask(__name__)
app.config.from_object('config.Config')
bzapi = bugzilla.Bugzilla(app.config['BZ_URL'])
def query_bugs():
#no query params to search based on time
fields = [ 'id', 'weburl', 'summary', 'status', 'resolution', 'creator', 'last_change_time', 'is_open', 'is_confirmed', 'creation_time',
'assigned_to' ]
#version=app.config['BUG_VERSION'],
#status="NEW"
query = bzapi.build_query(
product=app.config['BUG_PRODUCT'],
component=app.config['BUG_COMPONENT'],
include_fields=fields)
print("Fetching bugs...")
bugs = bzapi.query(query)
print("Got {} bugs form bugzilla".format(len(bugs)))
return bugs
def extract_bug_info(bugs):
time_delta = datetime.today() - timedelta(weeks=1)
#unresolved_bugs = list(filter(lambda x: x.status != 'RESOLVED' or x.status != 'FIXED', bugs))
unresolved_bugs = list(filter(lambda x: x.is_open, bugs))
recent_bugs = list(filter(lambda x: x.creation_time > time_delta, bugs))
updated_bugs = list(filter(lambda x: x.last_change_time > time_delta and x not in recent_bugs, bugs))
return unresolved_bugs, recent_bugs, updated_bugs
@app.template_filter('parse_user')
def parse_user(email_str):
return email_str.split('@')[0]
@app.template_filter('parse_timedelta')
def parse_timedelta(ts):
ts_datetime = datetime.strptime(ts.value, "%Y%m%dT%H:%M:%S")
now = datetime.now()
now.replace(microsecond=0)
timediff = now - ts_datetime
return "{} days, {} hours, and {} minutes ago".format(timediff.days, timediff.seconds // 3600, (timediff.seconds // 60)% 60)
@app.route('/')
def root():
"""
Renders CAChecker index page.
"""
today = datetime.today()
last_week = today - timedelta(weeks=1)
un_b, re_b, up_b = extract_bug_info( query_bugs() )
resp = make_response( render_template( 'index.html', unresolved_bugs=un_b,
recent_bugs=re_b,
updated_bugs=up_b,
date_start=last_week.date(),
date_end=today.date() ) )
return resp
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080, debug=True)
# [END gae_python311_app]