add task-update
This commit is contained in:
@@ -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",
|
||||||
|
|||||||
@@ -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"),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -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)
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
27
fet2020/templates/tasks/task_update.html
Normal file
27
fet2020/templates/tasks/task_update.html
Normal 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 %}
|
||||||
Reference in New Issue
Block a user