This commit is contained in:
Egor Matveev
2021-07-11 10:28:12 +03:00
commit 9c0123cbf2
102 changed files with 6285 additions and 0 deletions

View File

@@ -0,0 +1,327 @@
{% extends 'base.html' %}
{% load filters %}
{% block title %}{{ task.name }}|настройки{% endblock %}
{% block scripts %}
function uploaded() {
document.getElementById('is_uploaded').style.display = 'block';
document.getElementById('is_uploaded').nodeValue = document.getElementById('file-upload').nodeValue;
}
function uploaded1() {
document.getElementById('send').style.display = 'block';
document.getElementById('is_uploaded1').nodeValue = document.getElementById('file-upload1').nodeValue;
}
function valueChanged() {
const other = document.getElementById('show_details');
other.disabled = !document.getElementById('show_result').checked;
console.log('changed');
if (other.disabled) {
other.checked = false;
}
}
function set_checkboxes() {
if (!document.getElementById('show_result').checked) {
document.getElementById('show_details').disabled = true;
}
}
{% endblock %}
{% block onload %}set_checkboxes(){% endblock %}
{% block styles %}
input[type="file"] {
display: none;
}
input[name="new_file"] {
display: none;
}
.my_td {
vertical-align: middle;
height: 20px;
}
.params {
margin-top: 20px;
}
.in {
width: 500%;
}
{% endblock %}
{% block content %}
<h5><a href="/admin/block?id={{ task.block.id }}">{{ task.block.name }}</a></h5>
<h2>{{ task.name }} <a style="color: black;" href="/task?id={{ task.id }}"><i class="fa fa-eye"></i></a></h2>
<form action="" method="POST" id="main_form" enctype="multipart/form-data">
{% csrf_token %}
<table>
<tr class="params">
<td>
Легенда
</td>
<td>
<textarea form="main_form" rows="15" class="in" style="resize: none;" name="legend">{{ task.legend }}</textarea>
</td>
</tr>
<tr class="params">
<td>
Формат входных данных
</td>
<td>
<textarea form="main_form" rows="15" class="in" style="resize: none;" name="input">{{ task.input }}</textarea>
</td>
</tr>
<tr class="params">
<td>
Формат выходных данных
</td>
<td>
<textarea form="main_form" rows="15" class="in" style="resize: none;" name="output">{{ task.output }}</textarea>
</td>
</tr>
<tr class="params">
<td>
Спецификации
</td>
<td>
<textarea form="main_form" rows="15" class="in" style="resize: none;" name="specifications">{{ task.specifications }}</textarea>
</td>
</tr>
<tr>
<td>
Ограничения по времени
</td>
<td>
<input form="main_form" type="text" name="time_limit" class="in" value="{{ task.time_limit }}">
</td>
</tr>
<tr>
<td>
Вес задачи
</td>
<td>
<input form="main_form" type="text" name="weight" class="in" value="{{ task.weight }}">
</td>
</tr>
<tr>
<td>
Максимальная оценка
</td>
<td>
<input form="main_form" type="text" name="max_mark" class="in" value="{{ task.max_mark }}">
</td>
</tr>
<tr>
<td>
Максимум решений
</td>
<td>
<input form="main_form" type="text" name="max_solutions_count" class="in" value="{{ task.max_solutions_count }}">
</td>
</tr>
<tr>
<td>
Формула оценки
</td>
<td>
<input form="main_form" type="text" name="mark_formula" class="in" value="{{ task.mark_formula }}">
</td>
</tr>
<tr>
<td>
Сдается полное решение
</td>
<td>
<input form="main_form" type="checkbox" name="full_solution" {{ task.is_full_solution }}>
</td>
</tr>
<tr>
<td>
Показывать результат тестирования
</td>
<td>
<input form="main_form" type="checkbox" id="show_result" name="show_result" onchange="valueChanged()" {% if task.show_result %}checked{% endif %}>
</td>
</tr>
<tr>
<td>
Показывать детали тестирования
</td>
<td>
<input form="main_form" type="checkbox" id="show_details" name="show_details" {{ task.showable }}>
</td>
</tr>
<tr>
<td>
Приоритет
</td>
<td>
<select name="priority">
{% for i in 10|num_range %}
<option {% if task.priority == i %}selected{% endif %}>{{ i }}</option>
{% endfor %}
</select>
</td>
</tr>
<tr>
<td>
Тесты
</td>
<td>
<!-- Button trigger modal -->
<button type="button" class="btn btn-link" data-toggle="modal" data-target="#exampleModalLong">
Посмотреть
</button>
<!-- Modal -->
<div class="modal fade bd-example-modal-lg" id="exampleModalLong" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle">Unit тесты</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<textarea cols="82" rows="30" name="tests_text">{{ task.tests_text }}</textarea>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal"><i class="fa fa-times"></i> Close</button>
<button type="submit" class="btn btn-primary" name="ACTION" value="SAVE_TESTS"><i class="fa fa-save"></i> Save</button>
</div>
</div>
</div>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top; padding-top: 10px;">
Дополнительные файлы и самплы
</td>
<td style="vertical-align: top;">
<table>
{% for file in task.files %}
<tr>
<td>
{% if file.can_be_sample %}
<input form="main_form" type="checkbox" name="sample_{{ file.id }}" {{ file.is_sample }}>
{% endif %}
</td>
<td>
<button type="submit" class="close" name="ACTION" value="DELETE_FILE_{{ file.id }}">
<span aria-hidden="true">&times;</span>
</button>
</td>
<td>
<img width="14px" height="14px" src="https://image.flaticon.com/icons/svg/876/876755.svg">
</td>
<td>
{% if file.readable %}
<button type="button" class="btn btn-link" data-toggle="modal" data-target="#filesModalLong{{ file.id }}">
{{ file.filename }}
</button>
<!-- Modal -->
<div class="modal fade bd-example-modal-lg" id="filesModalLong{{ file.id }}" tabindex="-1" role="dialog" aria-labelledby="filesModalLongTitle{{ file.id }}" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="filesModalLongTitle{{ file.id }}">{{ file.filename }}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<textarea cols="82" rows="30" name="extra_file_text_{{ file.id }}">{{ file.text }}</textarea>
</div>
</div>
</div>
</div>
<div class="modal-footer">
Файл для компиляции <input type="checkbox" name="{{ file.id }}_for_compilation" {{ file.is_for_compilation }}>
<button type="button" class="btn btn-secondary" data-dismiss="modal"><i class="fa fa-times"></i> Close</button>
<button type="submit" class="btn btn-primary" name="ACTION" value="SAVE_EXTRA_FILE_{{ file.id }}"><i class="fa fa-save"></i> Save</button>
</div>
</div>
</div>
</div>
{% else %}
<button type="button" class="btn btn-link" style="color: red;">
{{ file.filename }}
</button>
{% endif %}
</td>
</tr>
{% endfor %}
</table>
<label for="files" class="btn btn-primary">
<i class="fa fa-upload"></i> Загрузить файл
</label>
<form method="POST">
<input type="file" class="btn form-control-file" id="files" value="Выбрать файл" name="file" onchange="uploaded1()">
</form>
<label for="add_file" class="btn btn-success">
<i class="fa fa-plus"></i>
</label>
<input type="button" class="btn btn-success" id="add_file" value="Создать файл" name="new_file" data-toggle="modal" data-target="#exampleModalLongnewfile">
<button name="ACTION" value="UPLOAD_EXTRA_FILE" type="submit" class="btn btn-success" style="display: none;" id="send">Отправить</button>
<form method="POST">
{% csrf_token %}
<div class="modal fade" id="exampleModalLongnewfile" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitlenewfile" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitlenewfile">Создать новый файл</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<input type="text" placeholder="Имя файла" name="newfile_name">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal"><i class="fa fa-times"></i> Закрыть</button>
<button name="ACTION" value="CREATE_EXTRA_FILE" type="submit" class="btn btn-primary"><i class="fa fa-file"></i> Создать</button>
</div>
</div>
</div>
</div>
</form>
</td>
</tr>
</table>
<hr>
<button type="submit" name="ACTION" value="SAVE" class="btn btn-dark"><i class="fa fa-save"></i> Сохранить</button>
</form>
{% if is_superuser %}
<form style="margin-top: 15px;" id="another_form" method="POST">
{% csrf_token %}
<input type="hidden" name="ACTION" value="DELETE" form="another_form">
<button form="another_form" type="button" onclick="let del = confirm('Данное действие приведет к удалению условия, тестов, дополнительных файлов и решений, привязанных к этому таску. Точно удаляем?'); if (del) {this.form.submit();}" class="btn btn-dark"><i class="fa fa-trash"></i> Удалить таск</button>
</form>
{% endif %}
{% endblock %}