apply languages
This commit is contained in:
23
Main/migrations/0021_auto_20220215_2211.py
Normal file
23
Main/migrations/0021_auto_20220215_2211.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 3.2.4 on 2022-02-15 19:11
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('Main', '0020_languageapply'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='solution',
|
||||
name='set',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='Main.set'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='solution',
|
||||
index=models.Index(fields=['set', '-time_sent'], name='Main_soluti_set_id_19e6c7_idx'),
|
||||
),
|
||||
]
|
@@ -4,9 +4,14 @@ from SprintLib.utils import get_bytes, write_bytes, delete_file
|
||||
|
||||
|
||||
class FileStorageMixin:
|
||||
|
||||
@cached_property
|
||||
def bytes(self):
|
||||
return get_bytes(self.fs_id)
|
||||
|
||||
@cached_property
|
||||
def text(self):
|
||||
return get_bytes(self.fs_id).decode("utf-8")
|
||||
return self.bytes.decode("utf-8")
|
||||
|
||||
def write(self, bytes):
|
||||
self.fs_id = write_bytes(bytes)
|
||||
|
@@ -7,6 +7,7 @@ from django.contrib.auth.models import User
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
|
||||
from Main.models import Set
|
||||
from Main.models.solution_file import SolutionFile
|
||||
from Main.models.task import Task
|
||||
from Sprint.settings import CONSTS
|
||||
@@ -20,11 +21,13 @@ class Solution(models.Model):
|
||||
time_sent = models.DateTimeField(default=timezone.now)
|
||||
result = models.TextField(default=CONSTS["in_queue_status"])
|
||||
test = models.IntegerField(default=None, null=True)
|
||||
set = models.ForeignKey(Set, null=True, on_delete=models.SET_NULL)
|
||||
|
||||
class Meta:
|
||||
indexes = [
|
||||
models.Index(fields=['task', 'user', '-time_sent']),
|
||||
models.Index(fields=['task', '-time_sent'])
|
||||
models.Index(fields=['task', '-time_sent']),
|
||||
models.Index(fields=['set', '-time_sent']),
|
||||
]
|
||||
|
||||
@property
|
||||
|
@@ -1,6 +1,6 @@
|
||||
from django import template
|
||||
|
||||
from Main.models import Solution
|
||||
from Main.models import Solution, SetTask
|
||||
|
||||
register = template.Library()
|
||||
|
||||
@@ -13,3 +13,8 @@ def solved(user, task):
|
||||
if len(solutions) != 0:
|
||||
return False
|
||||
return None
|
||||
|
||||
|
||||
@register.filter('settask')
|
||||
def settask(set, task):
|
||||
return SetTask.objects.get(set=set, task=task)
|
||||
|
24
Main/views/CheckersView.py
Normal file
24
Main/views/CheckersView.py
Normal file
@@ -0,0 +1,24 @@
|
||||
import datetime
|
||||
from typing import Optional
|
||||
|
||||
import pytz
|
||||
from django.utils import timezone
|
||||
|
||||
from Checker.models import Checker
|
||||
from Main.models import SetTask, Set
|
||||
from SprintLib.BaseView import BaseView, AccessError
|
||||
from SprintLib.language import languages
|
||||
|
||||
|
||||
class CheckersView(BaseView):
|
||||
required_login = True
|
||||
view_file = "checkers.html"
|
||||
endpoint = "admin/checkers"
|
||||
|
||||
def pre_handle(self):
|
||||
self.current_set = self.entities.set
|
||||
if (
|
||||
self.request.user != self.current_set.creator
|
||||
and self.request.user.username not in self.current_set.editors
|
||||
):
|
||||
raise AccessError()
|
@@ -4,6 +4,7 @@ from typing import Optional
|
||||
import pytz
|
||||
from django.utils import timezone
|
||||
|
||||
from Checker.models import Checker
|
||||
from Main.models import SetTask, Set
|
||||
from SprintLib.BaseView import BaseView, AccessError
|
||||
from SprintLib.language import languages
|
||||
@@ -114,3 +115,11 @@ class SetSettingsView(BaseView):
|
||||
self.entities.set.languages.remove(t)
|
||||
self.entities.set.save()
|
||||
return "/admin/set?set_id=" + str(self.entities.set.id)
|
||||
|
||||
def post_new_checker(self):
|
||||
Checker.objects.create(name=self.request.POST['name'], set=self.entities.set, last_request=timezone.now() - datetime.timedelta(days=1))
|
||||
return '/admin/set?set_id=' + str(self.entities.set.id)
|
||||
|
||||
def post_delete_checker(self):
|
||||
Checker.objects.get(id=self.request.POST['checker_id']).delete()
|
||||
return '/admin/set?set_id=' + str(self.entities.set.id)
|
||||
|
@@ -37,6 +37,7 @@ class TaskView(BaseView):
|
||||
task=self.entities.task,
|
||||
user=self.request.user,
|
||||
language_id=int(self.request.POST["language"]),
|
||||
set=self.entities.set if hasattr(self.entities, 'setTask') else None
|
||||
)
|
||||
|
||||
def post_0(self):
|
||||
@@ -47,8 +48,8 @@ class TaskView(BaseView):
|
||||
solution=self.solution,
|
||||
fs_id=fs_id,
|
||||
)
|
||||
send_testing(self.solution.id)
|
||||
return "task?task_id=" + str(self.entities.task.id)
|
||||
send_testing(self.solution)
|
||||
return ("/task?setTask_id=" + str(self.entities.setTask.id)) if hasattr(self.entities, 'setTask') else ("/task?task_id=" + str(self.entities.task.id))
|
||||
|
||||
def post_1(self):
|
||||
# отправка решения через файл
|
||||
@@ -73,5 +74,5 @@ class TaskView(BaseView):
|
||||
solution=self.solution,
|
||||
fs_id=fs_id,
|
||||
)
|
||||
send_testing(self.solution.id)
|
||||
return "task?task_id=" + str(self.entities.task.id)
|
||||
send_testing(self.solution)
|
||||
return ("/task?setTask_id=" + str(self.entities.setTask.id)) if hasattr(self.entities, 'setTask') else ("/task?task_id=" + str(self.entities.task.id))
|
||||
|
@@ -20,3 +20,4 @@ from Main.views.ChatWithView import ChatWithView
|
||||
from Main.views.MessagesView import MessagesView
|
||||
from Main.views.SetView import SetView
|
||||
from Main.views.GroupView import GroupView
|
||||
from Main.views.CheckersView import CheckersView
|
||||
|
Reference in New Issue
Block a user