progress bar
This commit is contained in:
parent
4e9c195d9d
commit
65ee7117cb
@ -1,9 +1,10 @@
|
|||||||
# Generated by Django 3.2.4 on 2022-02-15 18:22
|
# Generated by Django 3.2.4 on 2022-02-15 18:22
|
||||||
|
|
||||||
import Checker.models
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
import SprintLib.utils
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
@ -18,7 +19,7 @@ class Migration(migrations.Migration):
|
|||||||
name='Checker',
|
name='Checker',
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('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()),
|
('last_request', models.DateTimeField()),
|
||||||
('set', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Main.set')),
|
('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')),
|
('testing_solution', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='Main.solution')),
|
||||||
|
@ -4,11 +4,7 @@ from django.db import models
|
|||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
from Main.models import Solution, Set
|
from Main.models import Solution, Set
|
||||||
|
from SprintLib.utils import generate_token
|
||||||
|
|
||||||
def generate_token():
|
|
||||||
letters = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
|
|
||||||
return ''.join([choice(letters) for _ in range(30)])
|
|
||||||
|
|
||||||
|
|
||||||
class Checker(models.Model):
|
class Checker(models.Model):
|
||||||
|
@ -7,9 +7,10 @@ from django.http import JsonResponse, HttpResponse
|
|||||||
|
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
from Checker.models import Checker, generate_token
|
from Checker.models import Checker
|
||||||
from FileStorage.sync import synchronized_method
|
from FileStorage.sync import synchronized_method
|
||||||
from Main.models import Solution, SolutionFile, ExtraFile
|
from Main.models import Solution, SolutionFile, ExtraFile
|
||||||
|
from SprintLib.utils import generate_token
|
||||||
|
|
||||||
|
|
||||||
def get_dynamic(request):
|
def get_dynamic(request):
|
||||||
|
@ -30,6 +30,12 @@ class Solution(models.Model):
|
|||||||
models.Index(fields=['set', '-time_sent']),
|
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
|
@property
|
||||||
def language(self):
|
def language(self):
|
||||||
return languages[self.language_id]
|
return languages[self.language_id]
|
||||||
|
@ -28,6 +28,10 @@ class Task(models.Model):
|
|||||||
def tests(self):
|
def tests(self):
|
||||||
return ExtraFile.objects.filter(task=self, is_test=True).order_by('filename')
|
return ExtraFile.objects.filter(task=self, is_test=True).order_by('filename')
|
||||||
|
|
||||||
|
@property
|
||||||
|
def tests_count(self):
|
||||||
|
return len(self.tests) // 2
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def samples(self):
|
def samples(self):
|
||||||
data = []
|
data = []
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
from random import choice
|
||||||
|
|
||||||
from requests import get, post
|
from requests import get, post
|
||||||
|
|
||||||
from Sprint import settings
|
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)
|
url = settings.FS_HOST + ":" + str(settings.FS_PORT) + "/delete_file?id=" + str(num)
|
||||||
print(url)
|
print(url)
|
||||||
post(url)
|
post(url)
|
||||||
|
|
||||||
|
|
||||||
|
def generate_token():
|
||||||
|
letters = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
|
||||||
|
return ''.join([choice(letters) for _ in range(30)])
|
||||||
|
@ -28,7 +28,13 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<h4>
|
<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>
|
</h4>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
Loading…
Reference in New Issue
Block a user