diff --git a/fet2020/tasks/views.py b/fet2020/tasks/views.py index daaa50e5..21555b71 100644 --- a/fet2020/tasks/views.py +++ b/fet2020/tasks/views.py @@ -1,8 +1,11 @@ import logging from collections import deque +from django.contrib.admin.models import ADDITION, CHANGE, LogEntry +from django.contrib.admin.utils import construct_change_message from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.models import User +from django.contrib.contenttypes.models import ContentType from django.shortcuts import render from django.views.generic.detail import DetailView from django.views.generic.edit import CreateView, UpdateView @@ -75,6 +78,26 @@ def index(request): return render(request, "tasks/index.html", context) +def __add_log_action(request, form, add=True): + obj = form.save() + content_type = ContentType.objects.get(app_label="tasks", model="task") + change_message = construct_change_message(form, None, add) + + if add: + action_flag = ADDITION + else: + action_flag = CHANGE + + LogEntry.objects.log_action( + user_id=request.user.pk, + content_type_id=content_type.pk, + object_id=obj.pk, + object_repr=str(obj), + action_flag=action_flag, + change_message=change_message, + ) + + class TaskCreate(LoginRequiredMixin, CreateView): model = Task success_url = reverse_lazy("tasks") @@ -83,6 +106,8 @@ class TaskCreate(LoginRequiredMixin, CreateView): def form_valid(self, form): form.instance.created_by = self.request.user + __add_log_action(self.request, form, True) + return super().form_valid(form) @@ -92,6 +117,10 @@ class TaskUpdate(LoginRequiredMixin, UpdateView): template_name = "tasks/task_create.html" form_class = TaskForm + def form_valid(self, form): + __add_log_action(self.request, form, False) + return super().form_valid(form) + class TaskDetail(LoginRequiredMixin, DetailView): model = Task