From 119bdf71b324a80cdd9b300fa0b118ff62a3befc Mon Sep 17 00:00:00 2001 From: Patrick Mayr Date: Thu, 14 Apr 2022 13:53:24 +0000 Subject: [PATCH] set title from file; set shortterm to slug --- fet2020/intern/models.py | 49 ++++++++++++----------- fet2020/intern/views.py | 17 ++++++-- fet2020/templates/intern/file_create.html | 16 +++++--- 3 files changed, 49 insertions(+), 33 deletions(-) diff --git a/fet2020/intern/models.py b/fet2020/intern/models.py index 6cffd8a0..cdaec67b 100644 --- a/fet2020/intern/models.py +++ b/fet2020/intern/models.py @@ -1,6 +1,7 @@ import logging - from datetime import date +from pathlib import Path + from django.core.validators import ValidationError from django.db import models from django.db.models.constraints import UniqueConstraint @@ -42,8 +43,7 @@ class TopicGroup(models.Model): return reverse("intern:index") + "#" + self.slug def clean(self, *args, **kwargs): - if not self.slug: - self.slug = slugify(self.shortterm) + self.slug = slugify(self.shortterm) class Topic(models.Model): @@ -76,8 +76,7 @@ class Topic(models.Model): return reverse("intern:topic", kwargs={"slug": self.slug}) def clean(self, *args, **kwargs): - if not self.slug: - self.slug = slugify(self.shortterm) + self.slug = slugify(self.shortterm) class Attachment(models.Model): @@ -115,8 +114,7 @@ class Attachment(models.Model): return reverse("intern:attachment", kwargs=kwargs) def clean(self, *args, **kwargs): - if not self.slug: - self.slug = slugify(self.shortterm) + self.slug = slugify(self.shortterm) class Etherpad(models.Model): @@ -158,24 +156,23 @@ class Etherpad(models.Model): ) def clean(self): - if not self.slug: - self.slug = slugify(self.title) + self.slug = slugify(self.title) - pad_name = self.__get_pad_name() - - if len(pad_name) > 50: - raise ValidationError( - _( - "Name zum Erstellen des Etherpads ist zu lange - max. 50 Zeichen. (Länge: %(length)s, Name: %(pad_name)s)" - ), - params={"length": len(pad_name), "pad_name": pad_name}, - ) - - self.etherpad_key = create_pad(pad_name) if not self.etherpad_key: - raise ValidationError( - _(f"Etherpad '{pad_name}' konnte nicht erstellt werden."), - ) + pad_name = self.__get_pad_name() + if len(pad_name) > 50: + raise ValidationError( + _( + "Name zum Erstellen des Etherpads ist zu lange - max. 50 Zeichen. (Länge: %(length)s, Name: %(pad_name)s)" + ), + params={"length": len(pad_name), "pad_name": pad_name}, + ) + + self.etherpad_key = create_pad(pad_name) + if not self.etherpad_key: + raise ValidationError( + _(f"Etherpad '{pad_name}' konnte nicht erstellt werden."), + ) @property def etherpad_html(self): @@ -186,7 +183,7 @@ class Etherpad(models.Model): class FileUpload(models.Model): - title = models.CharField(verbose_name="Titel", max_length=128) + title = models.CharField(verbose_name="Titel", max_length=128, blank=True) file_field = models.FileField( verbose_name="Dokument", upload_to="uploads/intern/files/" ) @@ -202,3 +199,7 @@ class FileUpload(models.Model): def __str__(self): return self.title + + def clean(self): + if not self.title: + self.title = Path(self.file_field.name).stem diff --git a/fet2020/intern/views.py b/fet2020/intern/views.py index aadfec52..f78cda28 100644 --- a/fet2020/intern/views.py +++ b/fet2020/intern/views.py @@ -178,7 +178,12 @@ class TopicUpdateView(LoginRequiredMixin, UpdateView): slug = None def form_valid(self, form): + form.instance.created_by = self.request.user add_log_action(self.request, form, "intern", "topic", False) + + # get new slug + obj = form.save(commit=False) + self.slug = obj.slug return super().form_valid(form) def get_context_data(self, **kwargs): @@ -238,14 +243,18 @@ class AttachmentUpdateView(LoginRequiredMixin, UpdateView): slug = None def form_valid(self, form): - add_log_action(self.request, form, "tasks", "attachment", False) + form.instance.created_by = self.request.user + add_log_action(self.request, form, "intern", "attachment", False) + + # get new slug + obj = form.save(commit=False) + self.slug = obj.slug return super().form_valid(form) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["topic_slug"] = self.topic_slug - context["slug"] = self.slug - + context["topic"] = Topic.objects.get(slug=self.topic_slug) + attachment = Attachment.objects.get( Q(slug=self.slug) & Q(topic__slug=self.topic_slug) ) diff --git a/fet2020/templates/intern/file_create.html b/fet2020/templates/intern/file_create.html index 9a9a6460..16090e22 100644 --- a/fet2020/templates/intern/file_create.html +++ b/fet2020/templates/intern/file_create.html @@ -18,6 +18,16 @@ {% endif %} + + -