diff --git a/Checker/migrations/0001_initial.py b/Checker/migrations/0001_initial.py index 64f1621..3b1814d 100644 --- a/Checker/migrations/0001_initial.py +++ b/Checker/migrations/0001_initial.py @@ -1,9 +1,10 @@ # Generated by Django 3.2.4 on 2022-02-15 18:22 -import Checker.models from django.db import migrations, models import django.db.models.deletion +import SprintLib.utils + class Migration(migrations.Migration): @@ -18,7 +19,7 @@ class Migration(migrations.Migration): name='Checker', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('token', models.CharField(db_index=True, default=Checker.models.generate_token, max_length=30)), + ('token', models.CharField(db_index=True, default=SprintLib.utils.generate_token, max_length=30)), ('last_request', models.DateTimeField()), ('set', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Main.set')), ('testing_solution', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='Main.solution')), diff --git a/Checker/models.py b/Checker/models.py index a0d4f48..9f9e18c 100644 --- a/Checker/models.py +++ b/Checker/models.py @@ -4,11 +4,7 @@ from django.db import models from django.utils import timezone from Main.models import Solution, Set - - -def generate_token(): - letters = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM' - return ''.join([choice(letters) for _ in range(30)]) +from SprintLib.utils import generate_token class Checker(models.Model): diff --git a/Checker/views.py b/Checker/views.py index 3308086..26d432e 100644 --- a/Checker/views.py +++ b/Checker/views.py @@ -7,9 +7,10 @@ from django.http import JsonResponse, HttpResponse from django.utils import timezone -from Checker.models import Checker, generate_token +from Checker.models import Checker from FileStorage.sync import synchronized_method from Main.models import Solution, SolutionFile, ExtraFile +from SprintLib.utils import generate_token def get_dynamic(request): diff --git a/Main/models/solution.py b/Main/models/solution.py index 2de34f1..f71823d 100644 --- a/Main/models/solution.py +++ b/Main/models/solution.py @@ -30,6 +30,12 @@ class Solution(models.Model): models.Index(fields=['set', '-time_sent']), ] + @property + def percentage_done(self): + if self.test is None: + return 0 + return self.test * 100 // self.task.tests_count + @property def language(self): return languages[self.language_id] diff --git a/Main/models/task.py b/Main/models/task.py index 2633f83..701d1c5 100644 --- a/Main/models/task.py +++ b/Main/models/task.py @@ -28,6 +28,10 @@ class Task(models.Model): def tests(self): return ExtraFile.objects.filter(task=self, is_test=True).order_by('filename') + @property + def tests_count(self): + return len(self.tests) // 2 + @property def samples(self): data = [] diff --git a/SprintLib/utils.py b/SprintLib/utils.py index 738bc7b..fda8778 100644 --- a/SprintLib/utils.py +++ b/SprintLib/utils.py @@ -1,3 +1,5 @@ +from random import choice + from requests import get, post from Sprint import settings @@ -19,3 +21,8 @@ def delete_file(num: int): url = settings.FS_HOST + ":" + str(settings.FS_PORT) + "/delete_file?id=" + str(num) print(url) post(url) + + +def generate_token(): + letters = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM' + return ''.join([choice(letters) for _ in range(30)]) diff --git a/templates/solutions_table.html b/templates/solutions_table.html index cceb022..e884d42 100644 --- a/templates/solutions_table.html +++ b/templates/solutions_table.html @@ -28,7 +28,13 @@

- {% if solution.result == testing_status %} {% endif %}{{ solution.number_result }} + {% if solution.result == testing_status %} +
+
+
+ {% else %} + {{ solution.number_result }} + {% endif %}