progress bar

This commit is contained in:
Egor Matveev 2022-02-23 23:27:35 +03:00
parent 4e9c195d9d
commit 65ee7117cb
7 changed files with 30 additions and 9 deletions

View File

@ -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')),

View File

@ -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):

View File

@ -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):

View File

@ -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]

View File

@ -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 = []

View File

@ -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)])

View File

@ -28,7 +28,13 @@
</td>
<td>
<h4>
<span class="badge badge-{{ solution.badge_style }}">{% if solution.result == testing_status %}<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="circle-notch" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 20px;" class="svg-inline--fa fa-circle-notch fa-w-16 fa-spin fa-lg"><path fill="currentColor" d="M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z" class=""></path></svg> {% endif %}{{ solution.number_result }}</span>
{% if solution.result == testing_status %}
<div class="progress">
<div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" style="width: {{ solution.percentage_done }}%"></div>
</div>
{% else %}
<span class="badge badge-{{ solution.badge_style }}">{{ solution.number_result }}</span>
{% endif %}
</h4>
</td>
</tr>