add add_log_action

This commit is contained in:
2022-01-19 13:37:06 +00:00
parent ee1a1c4c17
commit a9c26476e3

View File

@@ -1,8 +1,11 @@
import logging import logging
from collections import deque 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.mixins import LoginRequiredMixin
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
from django.shortcuts import render from django.shortcuts import render
from django.views.generic.detail import DetailView from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView, UpdateView from django.views.generic.edit import CreateView, UpdateView
@@ -75,6 +78,26 @@ def index(request):
return render(request, "tasks/index.html", context) 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): class TaskCreate(LoginRequiredMixin, CreateView):
model = Task model = Task
success_url = reverse_lazy("tasks") success_url = reverse_lazy("tasks")
@@ -83,6 +106,8 @@ class TaskCreate(LoginRequiredMixin, CreateView):
def form_valid(self, form): def form_valid(self, form):
form.instance.created_by = self.request.user form.instance.created_by = self.request.user
__add_log_action(self.request, form, True)
return super().form_valid(form) return super().form_valid(form)
@@ -92,6 +117,10 @@ class TaskUpdate(LoginRequiredMixin, UpdateView):
template_name = "tasks/task_create.html" template_name = "tasks/task_create.html"
form_class = TaskForm form_class = TaskForm
def form_valid(self, form):
__add_log_action(self.request, form, False)
return super().form_valid(form)
class TaskDetail(LoginRequiredMixin, DetailView): class TaskDetail(LoginRequiredMixin, DetailView):
model = Task model = Task