From a7a7d9532ba05f7f57983ec72c47df78dff52e90 Mon Sep 17 00:00:00 2001 From: Egor Matveev Date: Fri, 21 Jan 2022 14:21:15 +0300 Subject: [PATCH] set tasks --- Main/models/set.py | 4 ++++ Main/views/TaskView.py | 4 ++++ SprintLib/BaseView.py | 2 +- templates/set.html | 19 ++++++++++--------- templates/task.html | 12 ++++++++++++ 5 files changed, 31 insertions(+), 10 deletions(-) diff --git a/Main/models/set.py b/Main/models/set.py index cddf999..3fd352f 100644 --- a/Main/models/set.py +++ b/Main/models/set.py @@ -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') diff --git a/Main/views/TaskView.py b/Main/views/TaskView.py index 1d567a3..fff7a48 100644 --- a/Main/views/TaskView.py +++ b/Main/views/TaskView.py @@ -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( diff --git a/SprintLib/BaseView.py b/SprintLib/BaseView.py index 9251784..f753273 100644 --- a/SprintLib/BaseView.py +++ b/SprintLib/BaseView.py @@ -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]) ), ) diff --git a/templates/set.html b/templates/set.html index 566549b..77d1463 100644 --- a/templates/set.html +++ b/templates/set.html @@ -1,10 +1,11 @@ - - - - - Title - - +{% extends 'base_main.html' %} - - \ No newline at end of file +{% block title %}{{ set.name }}{% endblock %} + +{% block main %} +

{{ set.name }}

+

Таски

+ {% for settask in set.settasks_ordered %} + {{ settask.name }}. {{ settask.task.name }}
+ {% endfor %} +{% endblock %} \ No newline at end of file diff --git a/templates/task.html b/templates/task.html index 2dc7bcf..d09d4ef 100644 --- a/templates/task.html +++ b/templates/task.html @@ -45,6 +45,8 @@ {% block main %}
+
+
{% if task.legend %}

Легенда

{% autoescape off %} @@ -107,6 +109,16 @@
{% endfor %} {% endif %} +
+{% if in_set %} + +{% endif %} +

Отправить решение