task changes

This commit is contained in:
Egor Matveev 2022-03-25 15:34:52 +03:00
parent 2d7dd10c0e
commit 0a5ae8c514
3 changed files with 56 additions and 0 deletions

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.4 on 2022-03-25 12:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Main', '0029_remove_dump_ready'),
]
operations = [
migrations.AddField(
model_name='task',
name='changes',
field=models.JSONField(default=list),
),
]

View File

@ -1,6 +1,8 @@
from django.contrib.postgres.fields import ArrayField
from django.db import models
from django.contrib.auth.models import User
from django.db.models import JSONField
from django.utils import timezone
from Main.models.dump import Dump
from Main.models.extrafile import ExtraFile
@ -18,6 +20,7 @@ class Task(models.Model):
creator = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
editors = ArrayField(models.TextField(), default=list)
allow_sharing = models.BooleanField(default=False)
changes = JSONField(default=list)
def __str__(self):
return self.name

View File

@ -1,4 +1,5 @@
from django.http import HttpResponse
from django.utils import timezone
from Main.models import ExtraFile, Dump, Task
from SprintLib.BaseView import BaseView, AccessError
@ -22,6 +23,11 @@ class TaskSettingsView(BaseView):
for key, value in self.request.POST.items():
setattr(self.task, key, value.strip())
self.task.public = "public" in self.request.POST
self.task.changes.append({
'username': self.request.user.username,
'action': 'Отредактировал условия',
'time': timezone.now().strftime("%d-%m-%Y %H:%M:%s")
})
self.task.save()
return f"/admin/task?task_id={self.task.id}"
@ -55,6 +61,12 @@ class TaskSettingsView(BaseView):
except UnicodeDecodeError:
ef.readable = False
ef.save()
self.task.changes.append({
'username': self.request.user.username,
'action': f'Загрузил файл {filename}',
'time': timezone.now().strftime("%d-%m-%Y %H:%M:%s")
})
self.task.save()
return "/admin/task?task_id=" + str(self.task.id)
def post_file_upload(self):
@ -66,6 +78,12 @@ class TaskSettingsView(BaseView):
def post_delete_file(self):
ef = ExtraFile.objects.get(id=self.request.POST["id"])
ef.delete()
self.task.changes.append({
'username': self.request.user.username,
'action': f'Удалил файл {ef.filename}',
'time': timezone.now().strftime("%d-%m-%Y %H:%M:%s")
})
self.task.save()
return HttpResponse("ok")
def _create(self, is_test):
@ -80,6 +98,12 @@ class TaskSettingsView(BaseView):
ef.is_test = is_test
ef.readable = True
ef.save()
self.task.changes.append({
'username': self.request.user.username,
'action': f'Создал файл {ef.filename}',
'time': timezone.now().strftime("%d-%m-%Y %H:%M:%s")
})
self.task.save()
return f"/admin/task?task_id={self.task.id}"
def post_create_file(self):
@ -94,6 +118,12 @@ class TaskSettingsView(BaseView):
ef.write(self.request.POST["text"].encode("utf-8"))
ef.is_sample = "is_sample" in self.request.POST.keys()
ef.save()
self.task.changes.append({
'username': self.request.user.username,
'action': f'Отредактировал файл {ef.filename}',
'time': timezone.now().strftime("%d-%m-%Y %H:%M:%s")
})
self.task.save()
return f"/admin/task?task_id={self.task.id}"
def post_users_edit(self):
@ -106,5 +136,10 @@ class TaskSettingsView(BaseView):
to_delete = [i for i in current_users if "user_" + i not in self.request.POST and i != self.request.user.username]
for t in to_delete:
self.task.editors.remove(t)
self.task.changes.append({
'username': self.request.user.username,
'action': f'Изменил список редакторов',
'time': timezone.now().strftime("%d-%m-%Y %H:%M:%s")
})
self.task.save()
return "/admin/task?task_id=" + str(self.task.id)