Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • devel
  • fo
  • fo-base
  • honza/add-contestant
  • honza/kolo-vs-soutez
  • honza/mr6
  • honza/mr7
  • honza/mra
  • honza/mrd
  • honza/mrf
  • honza/submit-images
  • jh-stress-test-wip
  • jirka/typing
  • jk/issue-196
  • jk/issue-96
  • master
  • mj/submit-images
  • shorten-schools
18 results

Target

Select target project
  • mo-p/osmo
1 result
Select Git revision
  • devel
  • fo
  • fo-base
  • honza/add-contestant
  • honza/kolo-vs-soutez
  • honza/mr6
  • honza/mr7
  • honza/mra
  • honza/mrd
  • honza/mrf
  • honza/submit-images
  • jh-stress-test-wip
  • jirka/typing
  • jk/issue-196
  • jk/issue-96
  • master
  • mj/submit-images
  • shorten-schools
18 results
Show changes

Commits on Source 3

......@@ -1400,10 +1400,6 @@ def org_contest_advance(ct_id: int):
def redirect_back():
return redirect(ctx.url_for('org_contest'))
if contest.state != db.RoundState.preparing or master_contest.state != db.RoundState.preparing:
flash('Tato soutěž není ve stavu přípravy', 'danger')
return redirect_back()
prev_round = get_prev_round(round)
if not prev_round:
return redirect_back()
......@@ -1520,6 +1516,9 @@ def org_contest_advance(ct_id: int):
for place_id in prev_pions_by_place_id:
prev_pions_by_place_id[place_id].sort(key=lambda x: (x[1] or 0, x[0].user.sort_key()), reverse=True)
if contest.state != db.RoundState.preparing or master_contest.state != db.RoundState.preparing:
flash('Tato soutěž není ve stavu přípravy.', 'warning')
if any(pc.state != db.RoundState.closed for pc in prev_contests):
flash('Předchozí kolo dosud nebylo ukončeno. Počty bodů nemusí být finální.', 'warning')
......@@ -1965,7 +1964,7 @@ def org_contest_scans_process(ct_id: int, job_id: int, site_id: Optional[int] =
@app.route('/org/contest/c/<int:ct_id>/scans/<int:job_id>/file/<file>')
@app.route('/org/contest/c/<int:ct_id>/site/<int:site_id>/scans/<int:job_id>/file/<file>')
def org_contest_scans_file(ct_id: int, job_id: int, file: str, site_id: Optional[int] = None):
get_context(ct_id=ct_id, site_id=site_id, right_needed=Right.upload_solutions)
get_context(ct_id=ct_id, site_id=site_id)
sess = db.get_session()
......
......@@ -153,7 +153,7 @@ tlačítkem <b>[Uložit]</b>. Poté můžete celou dávku odeslat ke zpracován
</div>
<span tabindex=5 onfocus="document.getElementById('user_input').focus();"></span>
</div>
<div class="pages">
<div class="pages" id="rows_scroller">
<table class="data">
<thead>
<th title="Číslo skenu">#
......@@ -217,6 +217,7 @@ var task_input = document.getElementById('task_input');
var seq_input = document.getElementById('seq_input');
var process_all_button = document.getElementById('process-all-button');
var save_data_field = document.getElementById('save-data');
var rows_scroller = document.getElementById('rows_scroller');
PAGE_FIX = -1;
PAGE_EMPTY = -2;
......@@ -372,17 +373,28 @@ seq_input.addEventListener("blur", function(e) {
refreshActiveRow();
});
function scrollToRow(i) {
var top = rows[i].offsetTop;
var bottom = top + rows[i].offsetHeight;
if (rows_scroller.scrollTop > top - 45) {
rows_scroller.scrollTo({ top: top - 45, behavior: 'smooth'});
} else if (rows_scroller.scrollTop + rows_scroller.offsetHeight < bottom + 30) {
rows_scroller.scrollTo({ top: bottom - rows_scroller.offsetHeight + 30, behavior: 'smooth' });
}
}
function prevPage() {
if (activeRow > 0) {
selectRow(activeRow - 1);
rows[activeRow].scrollIntoView({ behavior: 'smooth', block: 'center' });
scrollToRow(activeRow);
}
}
function nextPage() {
if (activeRow < pages.length - 1) {
selectRow(activeRow + 1);
rows[activeRow].scrollIntoView({ behavior: 'smooth', block: 'center' });
scrollToRow(activeRow);
}
}
......@@ -446,6 +458,7 @@ for (let i = 0; i < pages.length; i++) {
}
selectRow(0);
scrollToRow(0);
</script>
{% endif %}
......