crashclouseau/__init__.py (74 lines of code) (raw):
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
from flask import Flask, send_from_directory
from flask_cors import CORS, cross_origin
from flask_sqlalchemy import SQLAlchemy
from libmozdata.socorro import Socorro
import logging
import os
from . import config
app = Flask(__name__, template_folder="../templates")
Socorro.TOKEN = os.getenv("SOCORRO_TOKEN", config.get_socorro())
uri = os.getenv("DATABASE_URL", config.get_database())
# Workaround for Heroku
if uri.startswith("postgres://"):
uri = uri.replace("postgres://", "postgresql://", 1)
app.config["SQLALCHEMY_DATABASE_URI"] = uri
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)
cors = CORS(app)
app.config["CORS_HEADERS"] = "Content-Type"
log = logging.getLogger(__name__)
app.app_context().push()
@app.route("/crashstack.html")
def crashstack_html():
from crashclouseau import html
return html.crashstack()
@app.route("/diff.html")
def diff_html():
from crashclouseau import html
return html.diff()
@app.route("/")
@app.route("/reports.html")
def reports_html():
from crashclouseau import html
return html.reports()
@app.route("/reports_no_score.html")
def reports_no_scorehtml():
from crashclouseau import html
return html.reports_no_score()
@app.route("/bug.html")
def bug_html():
from crashclouseau import html
return html.bug()
@app.route("/pushlog.html")
def pushlog_html():
from crashclouseau import html
return html.pushlog()
@app.route("/favicon.ico")
def favicon():
return send_from_directory("../static", "clouseau.ico")
@app.route("/<image>.png")
def image(image):
return send_from_directory("../static", image + ".png")
@app.route("/ZillaSlabHighlight-Bold.woff2")
def zilla():
return send_from_directory("../static", "ZillaSlabHighlight-Bold.woff2")
@app.route("/clouseau.js")
def stop_js():
return send_from_directory("../static", "clouseau.js")
@app.route("/clouseau.css")
def stop_css():
return send_from_directory("../static", "clouseau.css")
@app.route("/api/javast", methods=["POST"])
@cross_origin()
def api_javast():
from crashclouseau import api
return api.javast()
@app.route("/api/bugs", methods=["GET"])
@cross_origin()
def api_bugs():
from crashclouseau import api
return api.bugs()
@app.route("/api/reports", methods=["GET"])
@cross_origin()
def api_reports():
from crashclouseau import api
return api.reports()