From 728af8eb72640bc27623089e05414199376b5fb2 Mon Sep 17 00:00:00 2001 From: Patrick Mayr Date: Wed, 19 Jan 2022 16:51:35 +0000 Subject: [PATCH] add task-update --- fet2020/tasks/forms.py | 34 +++++++++++++++++++++++- fet2020/tasks/urls.py | 1 + fet2020/tasks/views.py | 34 +++++++++++------------- fet2020/templates/tasks/task_detail.html | 2 +- fet2020/templates/tasks/task_update.html | 27 +++++++++++++++++++ 5 files changed, 78 insertions(+), 20 deletions(-) create mode 100644 fet2020/templates/tasks/task_update.html diff --git a/fet2020/tasks/forms.py b/fet2020/tasks/forms.py index 266c46a6..95014b86 100644 --- a/fet2020/tasks/forms.py +++ b/fet2020/tasks/forms.py @@ -1,6 +1,8 @@ from django import forms from django.contrib.admin.widgets import FilteredSelectMultiple from django.contrib.auth.models import User +from django.forms.widgets import HiddenInput +from django.utils import timezone from django.utils.translation import gettext_lazy as _ from .models import Task, TaskList, Document @@ -34,7 +36,7 @@ class TaskAdminForm(forms.ModelForm): ].queryset.order_by("username") -class TaskForm(forms.ModelForm): +class TaskCreateForm(forms.ModelForm): class Meta: model = Task @@ -66,6 +68,36 @@ class TaskForm(forms.ModelForm): ].queryset.order_by("username") +class TaskUpdateForm(forms.ModelForm): + class Meta: + model = Task + + fields = [ + "assigned_to", + "due_date", + "priority", + "note", + ] + + labels = { + "due_date": _("Fälligkeitsdatum"), + "assigned_to": _("Zuweisen an"), + } + + widgets = { + "due_date": DateInput( + format=("%d-%m-%Y"), + ) + } + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) # to get the self.fields set + self.fields["assigned_to"].empty_label = "Alle" + self.fields["assigned_to"].queryset = self.fields[ + "assigned_to" + ].queryset.order_by("username") + + class TaskListForm(forms.ModelForm): users = forms.ModelMultipleChoiceField( label="Benutzer", diff --git a/fet2020/tasks/urls.py b/fet2020/tasks/urls.py index d95b33d0..8bed9422 100644 --- a/fet2020/tasks/urls.py +++ b/fet2020/tasks/urls.py @@ -8,5 +8,6 @@ urlpatterns = [ path("", views.index, name="tasks"), path("task-create/", TaskCreate.as_view(), name="task-create"), path("/docu-create/", DocumentCreate.as_view(), name="docu-create"), + path("/update/", TaskUpdate.as_view(), name="task-update"), path("/detail/", TaskDetail.as_view(), name="task-detail"), ] diff --git a/fet2020/tasks/views.py b/fet2020/tasks/views.py index 21555b71..fc11ab76 100644 --- a/fet2020/tasks/views.py +++ b/fet2020/tasks/views.py @@ -16,8 +16,8 @@ from authentications.decorators import authenticated_user from documents.api import get_pad_link from documents.etherpadlib import add_ep_cookie -from .forms import TaskForm, DocumentForm -from .models import Task, TaskList, Document +from .forms import DocumentForm, TaskCreateForm, TaskUpdateForm +from .models import Document, Task, TaskList logger = logging.getLogger(__name__) @@ -54,7 +54,6 @@ def index(request): else: show_all_tasks = False - form = TaskForm() tasks = deque( Task.taskmanager.get_tasks( user=request.user.id, @@ -66,7 +65,6 @@ def index(request): tasklists = deque(TaskList.objects.all()) context = { - "formset": form, "tasks": tasks, "tasklists": tasklists, "current_user": request.user.id, @@ -78,7 +76,7 @@ def index(request): return render(request, "tasks/index.html", context) -def __add_log_action(request, form, add=True): +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) @@ -102,25 +100,29 @@ class TaskCreate(LoginRequiredMixin, CreateView): model = Task success_url = reverse_lazy("tasks") template_name = "tasks/task_create.html" - form_class = TaskForm + form_class = TaskCreateForm def form_valid(self, form): form.instance.created_by = self.request.user - __add_log_action(self.request, form, True) - + add_log_action(self.request, form, True) return super().form_valid(form) class TaskUpdate(LoginRequiredMixin, UpdateView): model = Task - success_url = reverse_lazy("tasks") - template_name = "tasks/task_create.html" - form_class = TaskForm + template_name = "tasks/task_update.html" + form_class = TaskUpdateForm def form_valid(self, form): - __add_log_action(self.request, form, False) + add_log_action(self.request, form, False) return super().form_valid(form) + def get_success_url(self): + kwargs = { + "pk": self.kwargs.get("pk"), + } + return reverse("task-detail", kwargs=kwargs) + class TaskDetail(LoginRequiredMixin, DetailView): model = Task @@ -161,7 +163,6 @@ class TaskDetail(LoginRequiredMixin, DetailView): class DocumentCreate(LoginRequiredMixin, CreateView): model = Document - # success_url = reverse_lazy('tasks') template_name = "tasks/docu_create.html" form_class = DocumentForm @@ -169,12 +170,10 @@ class DocumentCreate(LoginRequiredMixin, CreateView): def get_initial(self): self.task_id = self.kwargs.get("pk") - task = Task.objects.get(pk=self.task_id) context = { "task": task, } - return context def get_context_data(self, **kwargs): @@ -184,8 +183,7 @@ class DocumentCreate(LoginRequiredMixin, CreateView): return context def get_success_url(self): - context = { + kwargs = { "pk": self.task_id, } - - return reverse("task-detail", kwargs=context) + return reverse("task-detail", kwargs=kwargs) diff --git a/fet2020/templates/tasks/task_detail.html b/fet2020/templates/tasks/task_detail.html index 3c60a5af..b190cead 100644 --- a/fet2020/templates/tasks/task_detail.html +++ b/fet2020/templates/tasks/task_detail.html @@ -7,7 +7,7 @@ Zurück
Etherpad hinzufügen diff --git a/fet2020/templates/tasks/task_update.html b/fet2020/templates/tasks/task_update.html new file mode 100644 index 00000000..6b185bc2 --- /dev/null +++ b/fet2020/templates/tasks/task_update.html @@ -0,0 +1,27 @@ +{% extends 'layout.html' %} +{% block content %} + +
+ +
+ +

Task {{ task.title }} bearbeiten

+
+
+
+ {% csrf_token %} + {{ form }} + +
+
+
+
+ +{% endblock %}