set title from file; set shortterm to slug

This commit is contained in:
2022-04-14 13:53:24 +00:00
parent a9a0729a73
commit 119bdf71b3
3 changed files with 49 additions and 33 deletions

View File

@@ -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,7 +43,6 @@ class TopicGroup(models.Model):
return reverse("intern:index") + "#" + self.slug
def clean(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.shortterm)
@@ -76,7 +76,6 @@ 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)
@@ -115,7 +114,6 @@ class Attachment(models.Model):
return reverse("intern:attachment", kwargs=kwargs)
def clean(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.shortterm)
@@ -158,11 +156,10 @@ class Etherpad(models.Model):
)
def clean(self):
if not self.slug:
self.slug = slugify(self.title)
if not self.etherpad_key:
pad_name = self.__get_pad_name()
if len(pad_name) > 50:
raise ValidationError(
_(
@@ -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

View File

@@ -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,13 +243,17 @@ 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)

View File

@@ -18,6 +18,16 @@
</div>
{% endif %}
<label>
<span class="text-gray-700 dark:text-gray-200">{{ form.file_field.label }}</span>
{% if form.file_field.errors %}
<div class="alert alert-danger">
<div class="alert-body">{{ form.file_field.errors }}</div>
</div>
{% endif %}
<input type="file" id="id_file_field" name="file_field" class="text-gray-700 dark:text-gray-200 block w-full mt-1 rounded-md border-gray-300 dark:border-none shadow-sm focus:border-none focus:ring focus:ring-blue-200 dark:focus:ring-sky-700 focus:ring-opacity-50" required>
</label>
<label class="block">
<span class="text-gray-700 dark:text-gray-200">{{ form.title.label }}</span>
{% if form.title.errors %}
@@ -25,13 +35,9 @@
<div class="alert-body">{{ form.title.errors }}</div>
</div>
{% endif %}
<input type="text" id="id_title" name="title" class="mt-1 block w-full rounded-md border-gray-300 dark:border-none shadow-sm focus:border-none focus:ring focus:ring-blue-200 dark:focus:ring-sky-700 focus:ring-opacity-50" required>
<input type="text" id="id_title" name="title" class="mt-1 block w-full rounded-md border-gray-300 dark:border-none shadow-sm focus:border-none focus:ring focus:ring-blue-200 dark:focus:ring-sky-700 focus:ring-opacity-50">
</label>
<label>
<span class="text-gray-700 dark:text-gray-200">{{ form.file_field.label }}</span>
<input type="file" id="id_file_field" name="file_field" class="text-gray-700 dark:text-gray-200 block w-full mt-1 rounded-md border-gray-300 dark:border-none shadow-sm focus:border-none focus:ring focus:ring-blue-200 dark:focus:ring-sky-700 focus:ring-opacity-50" required>
</label>
<input type="hidden" name="attachment" value="{{ attachment.id }}" id="id_attachment">