dump
This commit is contained in:
30
Main/migrations/0028_dump.py
Normal file
30
Main/migrations/0028_dump.py
Normal file
@@ -0,0 +1,30 @@
|
||||
# Generated by Django 3.2.4 on 2022-03-15 19:08
|
||||
|
||||
import Main.models.mixins
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('Main', '0027_task_allow_sharing'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Dump',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('timestamp', models.DateTimeField(default=django.utils.timezone.now)),
|
||||
('fs_id', models.IntegerField(null=True)),
|
||||
('ready', models.BooleanField(default=False)),
|
||||
('executor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
('task', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='Main.task')),
|
||||
],
|
||||
bases=(Main.models.mixins.FileStorageMixin, models.Model),
|
||||
),
|
||||
]
|
17
Main/migrations/0029_remove_dump_ready.py
Normal file
17
Main/migrations/0029_remove_dump_ready.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 3.2.4 on 2022-03-15 19:20
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('Main', '0028_dump'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='dump',
|
||||
name='ready',
|
||||
),
|
||||
]
|
@@ -10,3 +10,4 @@ from Main.models.progress import Progress
|
||||
from Main.models.solution_file import SolutionFile
|
||||
from Main.models.friendship import Friendship
|
||||
from Main.models.language_apply import LanguageApply
|
||||
from Main.models.dump import Dump
|
||||
|
25
Main/models/dump.py
Normal file
25
Main/models/dump.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from django.contrib.auth.models import User
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
|
||||
from .mixins import FileStorageMixin
|
||||
|
||||
|
||||
class Dump(FileStorageMixin, models.Model):
|
||||
timestamp = models.DateTimeField(default=timezone.now)
|
||||
fs_id = models.IntegerField(null=True)
|
||||
executor = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
task = models.ForeignKey("Task", on_delete=models.CASCADE, null=True)
|
||||
|
||||
@property
|
||||
def ready(self):
|
||||
return self.fs_id is not None
|
||||
|
||||
@property
|
||||
def str_date(self):
|
||||
return self.timestamp.strftime("%Y-%m-%dT%H:%M:%S")
|
||||
|
||||
@property
|
||||
def filename(self):
|
||||
if self.task is not None:
|
||||
return f"dump-task-{self.task.id}-{self.str_date}"
|
@@ -2,6 +2,7 @@ from django.contrib.postgres.fields import ArrayField
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from Main.models.dump import Dump
|
||||
from Main.models.extrafile import ExtraFile
|
||||
|
||||
|
||||
@@ -21,6 +22,10 @@ class Task(models.Model):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
@property
|
||||
def dumps(self):
|
||||
return Dump.objects.filter(task=self).order_by("-timestamp")
|
||||
|
||||
@property
|
||||
def files(self):
|
||||
return ExtraFile.objects.filter(task=self, is_test=False)
|
||||
|
@@ -1,7 +1,8 @@
|
||||
from django.http import HttpResponse
|
||||
|
||||
from Main.models import ExtraFile
|
||||
from Main.models import ExtraFile, Dump
|
||||
from SprintLib.BaseView import BaseView, AccessError
|
||||
from SprintLib.queue import send_to_queue
|
||||
|
||||
|
||||
class TaskSettingsView(BaseView):
|
||||
@@ -23,6 +24,11 @@ class TaskSettingsView(BaseView):
|
||||
self.entities.task.save()
|
||||
return f"/admin/task?task_id={self.entities.task.id}"
|
||||
|
||||
def post_dump(self):
|
||||
dump = Dump.objects.create(executor=self.request.user, task=self.entities.task)
|
||||
send_to_queue("files", {"id": dump.id})
|
||||
return f"/admin/task?task_id={self.entities.task.id}"
|
||||
|
||||
def _upload(self, is_test):
|
||||
filename = self.request.FILES["file"].name
|
||||
ef, created = None, None
|
||||
|
Reference in New Issue
Block a user