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.contrib.postgres.fields import ArrayField
from django.db import models from django.db import models
from django.contrib.auth.models import User 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.dump import Dump
from Main.models.extrafile import ExtraFile 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) creator = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
editors = ArrayField(models.TextField(), default=list) editors = ArrayField(models.TextField(), default=list)
allow_sharing = models.BooleanField(default=False) allow_sharing = models.BooleanField(default=False)
changes = JSONField(default=list)
def __str__(self): def __str__(self):
return self.name return self.name

View File

@ -1,4 +1,5 @@
from django.http import HttpResponse from django.http import HttpResponse
from django.utils import timezone
from Main.models import ExtraFile, Dump, Task from Main.models import ExtraFile, Dump, Task
from SprintLib.BaseView import BaseView, AccessError from SprintLib.BaseView import BaseView, AccessError
@ -22,6 +23,11 @@ class TaskSettingsView(BaseView):
for key, value in self.request.POST.items(): for key, value in self.request.POST.items():
setattr(self.task, key, value.strip()) setattr(self.task, key, value.strip())
self.task.public = "public" in self.request.POST 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() self.task.save()
return f"/admin/task?task_id={self.task.id}" return f"/admin/task?task_id={self.task.id}"
@ -55,6 +61,12 @@ class TaskSettingsView(BaseView):
except UnicodeDecodeError: except UnicodeDecodeError:
ef.readable = False ef.readable = False
ef.save() 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) return "/admin/task?task_id=" + str(self.task.id)
def post_file_upload(self): def post_file_upload(self):
@ -66,6 +78,12 @@ class TaskSettingsView(BaseView):
def post_delete_file(self): def post_delete_file(self):
ef = ExtraFile.objects.get(id=self.request.POST["id"]) ef = ExtraFile.objects.get(id=self.request.POST["id"])
ef.delete() 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") return HttpResponse("ok")
def _create(self, is_test): def _create(self, is_test):
@ -80,6 +98,12 @@ class TaskSettingsView(BaseView):
ef.is_test = is_test ef.is_test = is_test
ef.readable = True ef.readable = True
ef.save() 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}" return f"/admin/task?task_id={self.task.id}"
def post_create_file(self): def post_create_file(self):
@ -94,6 +118,12 @@ class TaskSettingsView(BaseView):
ef.write(self.request.POST["text"].encode("utf-8")) ef.write(self.request.POST["text"].encode("utf-8"))
ef.is_sample = "is_sample" in self.request.POST.keys() ef.is_sample = "is_sample" in self.request.POST.keys()
ef.save() 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}" return f"/admin/task?task_id={self.task.id}"
def post_users_edit(self): 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] 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: for t in to_delete:
self.task.editors.remove(t) 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() self.task.save()
return "/admin/task?task_id=" + str(self.task.id) return "/admin/task?task_id=" + str(self.task.id)