set tasks

This commit is contained in:
Egor Matveev 2022-01-21 14:21:15 +03:00
parent 375426dd38
commit a7a7d9532b
5 changed files with 31 additions and 10 deletions

View File

@ -40,3 +40,7 @@ class Set(models.Model):
@cached_property
def tasks(self):
return Task.objects.filter(settasks__set=self).order_by("settasks__name")
@cached_property
def settasks_ordered(self):
return self.settasks.order_by('name')

View File

@ -17,8 +17,12 @@ class TaskView(BaseView):
user=self.request.user, task=self.entities.task
)
self.context["progress"] = progress
self.context["in_set"] = hasattr(self.entities, 'setTask')
def pre_handle(self):
if hasattr(self.entities, 'setTask'):
self.entities.add('task', self.entities.setTask.task)
self.entities.add('set', self.entities.setTask.set)
if self.request.method == "GET":
return
self.solution = Solution.objects.create(

View File

@ -41,7 +41,7 @@ class BaseView:
model_name = key.rstrip("_id")
c.entities.add(
model_name,
eval(model_name.capitalize()).objects.get(
eval(model_name[0].upper() + model_name[1:]).objects.get(
id=int(request.GET[key])
),
)

View File

@ -1,10 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% extends 'base_main.html' %}
</body>
</html>
{% block title %}{{ set.name }}{% endblock %}
{% block main %}
<h3>{{ set.name }}</h3>
<h4>Таски</h4>
{% for settask in set.settasks_ordered %}
<a href="/task?setTask_id={{ settask.id }}">{{ settask.name }}. {{ settask.task.name }}</a><br>
{% endfor %}
{% endblock %}

View File

@ -45,6 +45,8 @@
{% block main %}
<div id="runtime"></div>
<div class="row">
<div class="col">
{% if task.legend %}
<h4>Легенда</h4>
{% autoescape off %}
@ -107,6 +109,16 @@
<hr>
{% endfor %}
{% endif %}
</div>
{% if in_set %}
<div class="col-2">
<h5><a href="/set?set_id={{ set.id }}">{{ set.name }}</a></h5>
{% for settask in setTask.set.settasks_ordered %}
<a href="/task?setTask_id={{ settask.id }}">{% if task == settask.task %}<b>{% endif %}{{ settask.name }}. {{ settask.task.name }}{% if task == settask.task %}</b>{% endif %}</a><br>
{% endfor %}
</div>
{% endif %}
</div>
<h2>Отправить решение</h2>
<table style="margin-bottom: 10px;">
<tr>