in lnt/server/ui/regression_views.py [0:0]
def v4_regression_list():
ts = request.get_testsuite()
form = MergeRegressionForm(request.form)
machine_filter = request.args.get('machine_filter')
state_filter = int(request.args.get('state', RegressionState.ACTIVE))
# Merge requested regressions.
if request.method == 'POST' and \
request.form['merge_btn'] == "Merge Regressions":
reg_inds, regressions = _get_regressions_from_selected_form(form, ts)
links = []
target = 0
for i, r in enumerate(regressions):
if r.bug:
target = i
links.append(r.bug)
new_regress = new_regression(ts, [x.field_change_id for x in reg_inds])
new_regress.state = regressions[target].state
new_regress.title = regressions[target].title
new_regress.bug = ' '.join(links)
for r in regressions:
r.bug = v4_url_for("v4_regression_detail", id=new_regress.id)
r.title = "Merged into Regression " + str(new_regress.id)
r.state = RegressionState.IGNORED
[ts.delete(x) for x in reg_inds]
ts.commit()
flash("Created: " + new_regress.title, FLASH_SUCCESS)
return redirect(v4_url_for("v4_regression_detail", id=new_regress.id))
# Delete requested regressions.
if request.method == 'POST' and \
request.form['merge_btn'] == "Delete Regressions":
reg_inds, regressions = _get_regressions_from_selected_form(form, ts)
titles = [r.title for r in regressions]
for res_ind in reg_inds:
ts.delete(res_ind)
for reg in regressions:
ts.delete(reg)
ts.commit()
flash(' Deleted: '.join(titles), FLASH_SUCCESS)
return redirect(v4_url_for("v4_regression_list", state=state_filter))
q = ts.query(ts.Regression)
title = "All Regressions"
if state_filter != -1:
q = q.filter(ts.Regression.state == state_filter)
title = RegressionState.names[state_filter]
regression_info = q.all()[::-1]
form.regression_checkboxes.choices = list()
regression_sizes = []
impacts = []
ages = []
filtered_regressions = []
for regression in regression_info:
reg_inds = ts.query(ts.RegressionIndicator) \
.filter(ts.RegressionIndicator.regression_id ==
regression.id) \
.all()
if machine_filter:
machine_names = set([x.field_change.machine.name for x in reg_inds])
if machine_filter in machine_names:
filtered_regressions.append(regression)
else:
continue
else:
filtered_regressions.append(regression)
form.regression_checkboxes.choices.append((regression.id, 1,))
regression_sizes.append(len(reg_inds))
impacts.append(calc_impact(ts, [x.field_change for x in reg_inds]))
# Now guess the regression age:
if len(reg_inds) and reg_inds[0].field_change and reg_inds[0].field_change.run:
age = reg_inds[0].field_change.run.end_time
else:
age = EmptyDate()
ages.append(age)
return render_template("v4_regression_list.html",
testsuite_name=g.testsuite_name,
regressions=filtered_regressions,
highlight=request.args.get('highlight'),
title=title,
RegressionState=RegressionState,
state_filter=state_filter,
form=form,
sizes=regression_sizes,
impacts=impacts,
ages=ages,
analysis=lnt.server.reporting.analysis)