add task-update

This commit is contained in:
2022-01-19 16:51:35 +00:00
parent 8cfa3d6578
commit 728af8eb72
5 changed files with 78 additions and 20 deletions

View File

@@ -1,6 +1,8 @@
from django import forms from django import forms
from django.contrib.admin.widgets import FilteredSelectMultiple from django.contrib.admin.widgets import FilteredSelectMultiple
from django.contrib.auth.models import User 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 django.utils.translation import gettext_lazy as _
from .models import Task, TaskList, Document from .models import Task, TaskList, Document
@@ -34,7 +36,7 @@ class TaskAdminForm(forms.ModelForm):
].queryset.order_by("username") ].queryset.order_by("username")
class TaskForm(forms.ModelForm): class TaskCreateForm(forms.ModelForm):
class Meta: class Meta:
model = Task model = Task
@@ -66,6 +68,36 @@ class TaskForm(forms.ModelForm):
].queryset.order_by("username") ].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): class TaskListForm(forms.ModelForm):
users = forms.ModelMultipleChoiceField( users = forms.ModelMultipleChoiceField(
label="Benutzer", label="Benutzer",

View File

@@ -8,5 +8,6 @@ urlpatterns = [
path("", views.index, name="tasks"), path("", views.index, name="tasks"),
path("task-create/", TaskCreate.as_view(), name="task-create"), path("task-create/", TaskCreate.as_view(), name="task-create"),
path("<int:pk>/docu-create/", DocumentCreate.as_view(), name="docu-create"), path("<int:pk>/docu-create/", DocumentCreate.as_view(), name="docu-create"),
path("<int:pk>/update/", TaskUpdate.as_view(), name="task-update"),
path("<int:pk>/detail/", TaskDetail.as_view(), name="task-detail"), path("<int:pk>/detail/", TaskDetail.as_view(), name="task-detail"),
] ]

View File

@@ -16,8 +16,8 @@ from authentications.decorators import authenticated_user
from documents.api import get_pad_link from documents.api import get_pad_link
from documents.etherpadlib import add_ep_cookie from documents.etherpadlib import add_ep_cookie
from .forms import TaskForm, DocumentForm from .forms import DocumentForm, TaskCreateForm, TaskUpdateForm
from .models import Task, TaskList, Document from .models import Document, Task, TaskList
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -54,7 +54,6 @@ def index(request):
else: else:
show_all_tasks = False show_all_tasks = False
form = TaskForm()
tasks = deque( tasks = deque(
Task.taskmanager.get_tasks( Task.taskmanager.get_tasks(
user=request.user.id, user=request.user.id,
@@ -66,7 +65,6 @@ def index(request):
tasklists = deque(TaskList.objects.all()) tasklists = deque(TaskList.objects.all())
context = { context = {
"formset": form,
"tasks": tasks, "tasks": tasks,
"tasklists": tasklists, "tasklists": tasklists,
"current_user": request.user.id, "current_user": request.user.id,
@@ -78,7 +76,7 @@ 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): def add_log_action(request, form, add=True):
obj = form.save() obj = form.save()
content_type = ContentType.objects.get(app_label="tasks", model="task") content_type = ContentType.objects.get(app_label="tasks", model="task")
change_message = construct_change_message(form, None, add) change_message = construct_change_message(form, None, add)
@@ -102,25 +100,29 @@ class TaskCreate(LoginRequiredMixin, CreateView):
model = Task model = Task
success_url = reverse_lazy("tasks") success_url = reverse_lazy("tasks")
template_name = "tasks/task_create.html" template_name = "tasks/task_create.html"
form_class = TaskForm form_class = TaskCreateForm
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) add_log_action(self.request, form, True)
return super().form_valid(form) return super().form_valid(form)
class TaskUpdate(LoginRequiredMixin, UpdateView): class TaskUpdate(LoginRequiredMixin, UpdateView):
model = Task model = Task
success_url = reverse_lazy("tasks") template_name = "tasks/task_update.html"
template_name = "tasks/task_create.html" form_class = TaskUpdateForm
form_class = TaskForm
def form_valid(self, form): def form_valid(self, form):
__add_log_action(self.request, form, False) add_log_action(self.request, form, False)
return super().form_valid(form) 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): class TaskDetail(LoginRequiredMixin, DetailView):
model = Task model = Task
@@ -161,7 +163,6 @@ class TaskDetail(LoginRequiredMixin, DetailView):
class DocumentCreate(LoginRequiredMixin, CreateView): class DocumentCreate(LoginRequiredMixin, CreateView):
model = Document model = Document
# success_url = reverse_lazy('tasks')
template_name = "tasks/docu_create.html" template_name = "tasks/docu_create.html"
form_class = DocumentForm form_class = DocumentForm
@@ -169,12 +170,10 @@ class DocumentCreate(LoginRequiredMixin, CreateView):
def get_initial(self): def get_initial(self):
self.task_id = self.kwargs.get("pk") self.task_id = self.kwargs.get("pk")
task = Task.objects.get(pk=self.task_id) task = Task.objects.get(pk=self.task_id)
context = { context = {
"task": task, "task": task,
} }
return context return context
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@@ -184,8 +183,7 @@ class DocumentCreate(LoginRequiredMixin, CreateView):
return context return context
def get_success_url(self): def get_success_url(self):
context = { kwargs = {
"pk": self.task_id, "pk": self.task_id,
} }
return reverse("task-detail", kwargs=kwargs)
return reverse("task-detail", kwargs=context)

View File

@@ -7,7 +7,7 @@
<a class="button" href="{% url 'tasks' %}">Zurück</a> <a class="button" href="{% url 'tasks' %}">Zurück</a>
</div> </div>
<div class="cell large-3 medium-4 small-12"> <div class="cell large-3 medium-4 small-12">
<a class="button" href="{% url 'admin:tasks_task_change' task.id %}">Task bearbeiten</a> <a class="button" href="{% url 'task-update' task.id %}">Task bearbeiten</a>
</div> </div>
<div class="cell large-3 medium-4 small-12"> <div class="cell large-3 medium-4 small-12">
<a class="button" href="{% url 'docu-create' task.id %}">Etherpad hinzufügen</a> <a class="button" href="{% url 'docu-create' task.id %}">Etherpad hinzufügen</a>

View File

@@ -0,0 +1,27 @@
{% extends 'layout.html' %}
{% block content %}
<div class="grid-container">
<div class="grid-x padding-top-1">
<div class="cell large-3 medium-4 small-12">
<a class="button" href="{% url 'task-detail' task.id %}">Zurück</a>
</div>
<div class="cell large-3 medium-4 small-12">
<a class="button" href="{% url 'admin:tasks_task_change' task.id %}">Task im Admin bearbeiten</a>
</div>
</div>
<hr>
<h2>Task {{ task.title }} bearbeiten</h2>
<div class="grid-x">
<div class="cell">
<form action="" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" class="button" name="btn_input" value="Bearbeiten">
</form>
</div>
</div>
</div>
{% endblock %}