29 lines
1.0 KiB
Python
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 = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
|
|
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'
|