From 0a5ae8c514dd1e6d5f962ca28481b356e7dfcc37 Mon Sep 17 00:00:00 2001 From: Egor Matveev Date: Fri, 25 Mar 2022 15:34:52 +0300 Subject: [PATCH] task changes --- Main/migrations/0030_task_changes.py | 18 ++++++++++++++ Main/models/task.py | 3 +++ Main/views/TaskSettingsView.py | 35 ++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 Main/migrations/0030_task_changes.py diff --git a/Main/migrations/0030_task_changes.py b/Main/migrations/0030_task_changes.py new file mode 100644 index 0000000..1892bdc --- /dev/null +++ b/Main/migrations/0030_task_changes.py @@ -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), + ), + ] diff --git a/Main/models/task.py b/Main/models/task.py index 0396945..ade4ab2 100644 --- a/Main/models/task.py +++ b/Main/models/task.py @@ -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 diff --git a/Main/views/TaskSettingsView.py b/Main/views/TaskSettingsView.py index e561592..a217ab0 100644 --- a/Main/views/TaskSettingsView.py +++ b/Main/views/TaskSettingsView.py @@ -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)