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]