templates/tasks/detail.html
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% load djangocodemirror_tags %}
{% block title %}{{ task.title }}{% endblock title %}
{% block content %}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/codemirror.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/theme/dracula.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/theme/monokai.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/theme/3024-day.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/theme/3024-night.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/theme/cobalt.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/theme/eclipse.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/theme/rubyblue.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/codemirror.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/mode/python/python.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/addon/edit/closebrackets.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/addon/edit/matchbrackets.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/addon/edit/matchtags.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/addon/edit/closetag.min.js"></script>
<h1>
<a href="{% url 'tasks:detail' task.id %}">
{{ task.title }}
</a>
</h1>
<hr>
<div>
<p>
<b>Score:</b> {{ task.score|default:"???" }}
</p>
<p>
<b>Memory limit:</b>
{% if task.memory_limit %}
{{ task.memory_limit|filesizeformat }}
{% else %}
Unlimited
{% endif %}
</p>
<p>
<b>Time limit:</b>
{% if task.time_limit %}
{{ task.time_limit }}
second{{ task.time_limit|pluralize:"s" }}
{% else %}
Unlimited
{% endif %}
</p>
</div>
<hr>
<h4>Description</h4>
<p>{{ task.description }}</p>
<hr>
<h4>Constraints</h4>
<ul>
{% for constraint in task.constraints %}
<li>{{ constraint }}</li>
{% empty %}
<li>None</li>
{% endfor %}
</ul>
<hr>
<form method="post">
{% csrf_token %}
<h4>Submit</h4>
<div style="display: flex; flex-direction: column; gap: 20px; justify-content: center;">
<div style="display: flex; flex-direction: column; gap: 25px; font-size: 0.8rem;">
<textarea
id="id_code"
name="code"
class="form-control"
></textarea>
</div>
<input
type="submit"
class="btn btn-primary"
style="width: 100px;"
value="Submit"
>
</div>
</div>
</form>
<script>
var codemirror = CodeMirror.fromTextArea(
document.getElementById("id_code"),
{
mode: "python",
theme: "dracula",
lineNumbers: true,
autoCloseBrackets: true,
matchBrackets: true,
}
);
</script>
{% endblock content %}