change db schema
root of all is requests
This commit is contained in:
parent
0e1addcbd7
commit
ea7152130f
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,6 +1,5 @@
|
||||
*~
|
||||
*.pyc
|
||||
*.html
|
||||
.*.swp
|
||||
.coverage
|
||||
.coveralls.yml
|
||||
|
@ -40,30 +40,23 @@ app.config.from_object(__name__)
|
||||
@app.route('/')
|
||||
def list():
|
||||
session = db_session()
|
||||
reports = session.query(ABICheck).all()
|
||||
requests = session.query(Request).all()
|
||||
|
||||
return render_template('index.html', reports = reports)
|
||||
return render_template('index.html', requests = requests)
|
||||
|
||||
@app.route('/request/<int:request_id>')
|
||||
def request(request_id):
|
||||
session = db_session()
|
||||
reports = session.query(ABICheck).filter(ABICheck.request_id == request_id)
|
||||
request = session.query(Request).filter(Request.id == request_id).one()
|
||||
|
||||
return render_template('index.html', reports = reports)
|
||||
return render_template('request.html', request = request)
|
||||
|
||||
|
||||
@app.route('/report/<int:report_id>')
|
||||
def show(report_id):
|
||||
session = db_session()
|
||||
report = session.query(ABICheck).filter(ABICheck.id == report_id).one()
|
||||
|
||||
return render_template('libreport.html', report = report)
|
||||
|
||||
@app.route('/report/<int:report_id>/<int:libreport_id>')
|
||||
def libreport(report_id, libreport_id):
|
||||
def report(report_id):
|
||||
session = db_session()
|
||||
|
||||
report = session.query(LibReport).filter(LibReport.id == libreport_id).one()
|
||||
report = session.query(LibReport).filter(LibReport.id == report_id).one()
|
||||
|
||||
fn = os.path.join(CACHEDIR, report.htmlreport)
|
||||
|
||||
|
@ -325,8 +325,6 @@ class ABIChecker(ReviewBot.ReviewBot):
|
||||
self.text_summary = ''
|
||||
ret = ReviewBot.ReviewBot.check_one_request(self, req)
|
||||
|
||||
self.save_reports_to_db(req)
|
||||
|
||||
result = None
|
||||
if ret is not None:
|
||||
state = 'done'
|
||||
@ -337,6 +335,9 @@ class ABIChecker(ReviewBot.ReviewBot):
|
||||
#if state is None and not self.text_summary:
|
||||
# self.text_summary = 'abichecker will take a look later'
|
||||
state = 'seen'
|
||||
|
||||
self.save_reports_to_db(req, state, result)
|
||||
|
||||
if commentid:
|
||||
self.commentapi.delete(commentid)
|
||||
self.post_comment(req, state, result)
|
||||
@ -348,10 +349,20 @@ class ABIChecker(ReviewBot.ReviewBot):
|
||||
|
||||
return ret
|
||||
|
||||
def save_reports_to_db(self, req):
|
||||
def save_reports_to_db(self, req, state, result):
|
||||
request = self.session.query(DB.Request).filter(DB.Request.id == req.reqid).one()
|
||||
if request:
|
||||
self.session.query(DB.ABICheck).filter(DB.ABICheck.request_id == req.reqid).delete()
|
||||
else:
|
||||
request = DB.Request(id = req.reqid,
|
||||
state = state,
|
||||
result = result,
|
||||
)
|
||||
self.session.add(request)
|
||||
self.session.commit()
|
||||
for r in self.reports:
|
||||
abicheck = DB.ABICheck(
|
||||
request_id = req.reqid,
|
||||
request = request,
|
||||
src_project = r.src_project,
|
||||
src_package = r.src_package,
|
||||
src_rev = r.src_rev,
|
||||
@ -379,9 +390,9 @@ class ABIChecker(ReviewBot.ReviewBot):
|
||||
)
|
||||
self.session.add(libreport)
|
||||
self.session.commit()
|
||||
self.text_summary += "* %s: [%s](%s/%d/%d)\n"%(lr.dst_lib,
|
||||
self.text_summary += "* %s: [%s](%s/report/%d)\n"%(lr.dst_lib,
|
||||
"compatible" if lr.result else "***INCOMPATIBLE***",
|
||||
WEB_URL, abicheck.id, libreport.id)
|
||||
WEB_URL, libreport.id)
|
||||
|
||||
self.reports = []
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
import os
|
||||
import sys
|
||||
from datetime import datetime
|
||||
from sqlalchemy import Column, ForeignKey, Integer, String, Boolean, DateTime
|
||||
from sqlalchemy import Column, ForeignKey, Integer, String, Boolean, DateTime, Text
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import relationship, backref
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
@ -30,10 +30,22 @@ from sqlalchemy import create_engine
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
class Request(Base):
|
||||
__tablename__ = 'request'
|
||||
id = Column(Integer, primary_key=True)
|
||||
state = Column(String(32), nullable=False)
|
||||
result = Column(String(32), nullable=True)
|
||||
log = Column(Text(), nullable=True)
|
||||
|
||||
t_created = Column(DateTime, default=datetime.now)
|
||||
t_updated = Column(DateTime, default=datetime.now, onupdate=datetime.now)
|
||||
|
||||
class ABICheck(Base):
|
||||
__tablename__ = 'abicheck'
|
||||
id = Column(Integer, primary_key=True)
|
||||
request_id = Column(Integer, nullable=True)
|
||||
request_id = Column(Integer, ForeignKey('request.id'))
|
||||
request = relationship(Request, backref=backref('abichecks', order_by=id, cascade="all, delete-orphan"))
|
||||
|
||||
src_project = Column(String(255), nullable=False)
|
||||
src_package = Column(String(255), nullable=False)
|
||||
src_rev = Column(String(255), nullable=True)
|
||||
|
34
abichecker/templates/index.html
Normal file
34
abichecker/templates/index.html
Normal file
@ -0,0 +1,34 @@
|
||||
{% extends "layout.html" %}
|
||||
{% block title %}{{ super() }}ABI Check results{% endblock %}
|
||||
{% block body %}
|
||||
{{ super() }}
|
||||
<h1>ABI Check results</h1>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>ID</td>
|
||||
<td>State</td>
|
||||
<td>Result</td>
|
||||
<td>Created</td>
|
||||
<td>Updated</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for r in requests %}
|
||||
<tr>
|
||||
<td><a href="{{ url_for('request', request_id=r.id) }}">{{ r.id }}</a></td>
|
||||
<!--
|
||||
<td><a href="https://build.opensuse.org/request/show/{{r.request_id}}">{{ r.request_id }}</a></td>
|
||||
-->
|
||||
<td>{{ r.state }}</td>
|
||||
<td>{{ r.result }}</td>
|
||||
<td>{{ r.t_created }}</td>
|
||||
<td>{{ r.t_updated }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
||||
<!-- vim: sw=4 et
|
||||
-->
|
11
abichecker/templates/layout.html
Normal file
11
abichecker/templates/layout.html
Normal file
@ -0,0 +1,11 @@
|
||||
<!doctype html>
|
||||
{% block head %}
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
<meta charset=utf-8>
|
||||
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
|
||||
<link rel="stylesheet" href="https://static.opensuse.org/themes/bento/css/style.fluid.css" media="screen" />
|
||||
{% endblock %}
|
||||
{% for message in get_flashed_messages() %}
|
||||
<p class=message>{{ message }}
|
||||
{% endfor %}
|
||||
{% block body %}{% endblock %}
|
48
abichecker/templates/request.html
Normal file
48
abichecker/templates/request.html
Normal file
@ -0,0 +1,48 @@
|
||||
{% extends "layout.html" %}
|
||||
{% block title %}{{ super() }}ABI Check results for request {{ request.id }}{% endblock %}
|
||||
{% block body %}
|
||||
{{ super() }}
|
||||
<h1>ABI Check results for request <a href="https://build.opensuse.org/request/show/{{request.id}}">{{ request.id}}</a></h1>
|
||||
<ul>
|
||||
{% for check in request.abichecks %}
|
||||
<li>
|
||||
{{ check.src_project }}/{{ check.src_package
|
||||
}}@{{ check.src_rev }} -> {{
|
||||
check.dst_project }}/{{ check.dst_package }}:
|
||||
<span class="boolean_{{ check.result }}">{{ "compatible" if check.result else "INCOMPATIBLE" }}</span>
|
||||
{% for check in request.abichecks %}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Repo</td>
|
||||
<td>Lib</td>
|
||||
<td>Repo</td>
|
||||
<td>Lib</td>
|
||||
<td>Arch</td>
|
||||
<td>Result</td>
|
||||
<td>Created</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for r in check.reports %}
|
||||
<tr>
|
||||
<td>{{ r.src_repo }}</td>
|
||||
<td>{{ r.src_lib }}</td>
|
||||
<td>{{ r.dst_repo }}</td>
|
||||
<td>{{ r.dst_lib }}</td>
|
||||
<td>{{ r.arch }}</td>
|
||||
<td><a href="{{ url_for('report', report_id = r.id) }}">
|
||||
<span class="boolean_{{ r.result }}">{{ "compatible" if r.result else "INCOMPATIBLE" }}</span></a></td>
|
||||
<td>{{ r.t_created }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endfor %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endblock %}
|
||||
|
||||
<!-- vim: sw=4 et
|
||||
-->
|
Loading…
x
Reference in New Issue
Block a user