sprint/Checker/models.py
2022-02-16 17:40:46 +03:00

29 lines
1.0 KiB
Python

from random import choice
from django.db import models
from django.utils import timezone
from Main.models import Solution, Set
def generate_token():
letters = '1234567890qwertyuiopasdfghjklzxcvbnm!@#$%^&*()QWERTYUIOPASDFGHJKLZXCVBNM'
return ''.join([choice(letters) for _ in range(30)])
class Checker(models.Model):
token = models.CharField(max_length=30, default=generate_token, db_index=True, unique=True)
dynamic_token = models.CharField(max_length=30, default=generate_token, db_index=True, unique=True)
testing_solution = models.ForeignKey(Solution, on_delete=models.SET_NULL, null=True)
set = models.ForeignKey(Set, on_delete=models.CASCADE, related_name="checkers")
last_request = models.DateTimeField()
name = models.CharField(max_length=50, default='')
@property
def status(self):
if self.testing_solution is not None:
return 'Testing'
if (timezone.now() - self.last_request).total_seconds() > 3:
return 'Disabled'
return 'Active'