From 3e79143946e6b26449555bae9cf245e38e1ae455 Mon Sep 17 00:00:00 2001 From: Patrick Mayr Date: Sat, 30 Jul 2022 21:45:12 +0000 Subject: [PATCH] optimize views --- fet2020/tasks/models.py | 10 ++-- fet2020/tasks/urls.py | 10 ++-- fet2020/tasks/views.py | 62 ++++-------------------- fet2020/templates/tasks/task_detail.html | 2 +- fet2020/templates/tasks/task_update.html | 2 +- 5 files changed, 23 insertions(+), 63 deletions(-) diff --git a/fet2020/tasks/models.py b/fet2020/tasks/models.py index 3c7f5844..f20dc8f1 100644 --- a/fet2020/tasks/models.py +++ b/fet2020/tasks/models.py @@ -12,6 +12,7 @@ from django.utils.text import slugify from django.utils.translation import gettext_lazy as _ from documents import create_pad +from documents.api import get_pad_link from fet2020.utils import create_random_id from .managers import TaskManager @@ -124,6 +125,12 @@ class Document(models.Model): verbose_name = "Dokument" verbose_name_plural = "Dokumente" + def __str__(self): + return self.title + + def get_absolute_url(self): + return get_pad_link(self.etherpad_key) + def clean(self): pad_name = slugify(str(self.slug_id) + "-" + self.title[:40]) if len(pad_name) > 50: @@ -139,6 +146,3 @@ class Document(models.Model): raise ValidationError( _(f"Etherpad '{pad_name}' konnte nicht erstellt werden."), ) - - def __str__(self): - return self.title diff --git a/fet2020/tasks/urls.py b/fet2020/tasks/urls.py index f0a1d6f5..50662bb2 100644 --- a/fet2020/tasks/urls.py +++ b/fet2020/tasks/urls.py @@ -2,15 +2,15 @@ from django.urls import path from . import apps from . import views -from .views import TaskCreate, TaskDetail, TaskUpdate, DocumentCreate +from .views import TaskCreateView, TaskDetailView, TaskUpdateView, DocumentCreateView app_name = apps.TasksConfig.name urlpatterns = [ path("", views.index, name="index"), - path("add/", TaskCreate.as_view(), name="task-create"), - path("/", TaskDetail.as_view(), name="task-detail"), - path("/update/", TaskUpdate.as_view(), name="task-update"), - path("/add/", DocumentCreate.as_view(), name="docu-create"), + path("add/", TaskCreateView.as_view(), name="task-create"), + path("/", TaskDetailView.as_view(), name="task-detail"), + path("/update/", TaskUpdateView.as_view(), name="task-update"), + path("/add/", DocumentCreateView.as_view(), name="docu-create"), ] diff --git a/fet2020/tasks/views.py b/fet2020/tasks/views.py index 3a5e957e..82e64303 100644 --- a/fet2020/tasks/views.py +++ b/fet2020/tasks/views.py @@ -75,7 +75,7 @@ def index(request): return render(request, "tasks/index.html", context) -class TaskCreate(LoginRequiredMixin, CreateView): +class TaskCreateView(LoginRequiredMixin, CreateView): model = Task success_url = reverse_lazy("tasks:index") template_name = "tasks/task_create.html" @@ -92,42 +92,18 @@ class TaskCreate(LoginRequiredMixin, CreateView): return kwargs -class TaskUpdate(LoginRequiredMixin, UpdateView): +class TaskUpdateView(LoginRequiredMixin, UpdateView): form_class = TaskUpdateForm model = Task template_name = "tasks/task_update.html" - slug = None - task_list = None - def form_valid(self, form): add_log_action(self.request, form, "tasks", "task", False) return super().form_valid(form) - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - context["task_list"] = self.task_list - return context - def get_form_kwargs(self): - kwargs = super().get_form_kwargs() - kwargs["task_list"] = self.task_list - return kwargs - - def get_initial(self): - self.slug = self.kwargs.get("slug") - self.task_list = Task.objects.get(slug=self.slug).task_list - - def get_success_url(self): - kwargs = { - "slug": self.slug, - } - return reverse("tasks:task-detail", kwargs=kwargs) - - -class TaskDetail(LoginRequiredMixin, DetailView): +class TaskDetailView(LoginRequiredMixin, DetailView): model = Task - success_url = reverse_lazy("tasks:index") template_name = "tasks/task_detail.html" def get(self, request, *args, **kwargs): @@ -144,30 +120,16 @@ class TaskDetail(LoginRequiredMixin, DetailView): context = super().get_context_data(**kwargs) docus = Document.objects.filter(task__id=self.object.id).order_by("-date") - documents = deque([]) - # list of etherpad url-link of any documents - for elem in docus: - documents.append( - { - "title": elem.title, - "date": elem.date, - "etherpad_key": get_pad_link(elem.etherpad_key), - } - ) - context["documents"] = documents - - context["topic"] = Topic.objects.filter(task_list=self.object.task_list).first() - + context["documents"] = docus + context["topic"] = Topic.objects.get(task_list=self.object.task_list) return context -class DocumentCreate(LoginRequiredMixin, CreateView): +class DocumentCreateView(LoginRequiredMixin, CreateView): model = Document template_name = "tasks/attachment_create.html" form_class = DocumentCreateForm - slug = None - def form_valid(self, form): form.instance.created_by = self.request.user add_log_action(self.request, form, "tasks", "document", True) @@ -175,15 +137,9 @@ class DocumentCreate(LoginRequiredMixin, CreateView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["task"] = Task.objects.get(slug=self.slug) - + slug = self.kwargs.get("slug") + context["task"] = Task.objects.get(slug=slug) return context - def get_initial(self): - self.slug = self.kwargs.get("slug") - def get_success_url(self): - kwargs = { - "slug": self.slug, - } - return reverse("tasks:task-detail", kwargs=kwargs) + return reverse("tasks:task-detail", kwargs=self.kwargs) diff --git a/fet2020/templates/tasks/task_detail.html b/fet2020/templates/tasks/task_detail.html index 3ecbb45a..305718e1 100644 --- a/fet2020/templates/tasks/task_detail.html +++ b/fet2020/templates/tasks/task_detail.html @@ -31,7 +31,7 @@ {% for document in documents %} - +

{{ document.title }}

{{ document.date }}
diff --git a/fet2020/templates/tasks/task_update.html b/fet2020/templates/tasks/task_update.html index 5a21560b..df4fa42e 100644 --- a/fet2020/templates/tasks/task_update.html +++ b/fet2020/templates/tasks/task_update.html @@ -77,7 +77,7 @@ {{ form.note }} - +