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 import logging
from datetime import date from datetime import date
from pathlib import Path
from django.core.validators import ValidationError from django.core.validators import ValidationError
from django.db import models from django.db import models
from django.db.models.constraints import UniqueConstraint from django.db.models.constraints import UniqueConstraint
@@ -42,8 +43,7 @@ class TopicGroup(models.Model):
return reverse("intern:index") + "#" + self.slug return reverse("intern:index") + "#" + self.slug
def clean(self, *args, **kwargs): def clean(self, *args, **kwargs):
if not self.slug: self.slug = slugify(self.shortterm)
self.slug = slugify(self.shortterm)
class Topic(models.Model): class Topic(models.Model):
@@ -76,8 +76,7 @@ class Topic(models.Model):
return reverse("intern:topic", kwargs={"slug": self.slug}) return reverse("intern:topic", kwargs={"slug": self.slug})
def clean(self, *args, **kwargs): def clean(self, *args, **kwargs):
if not self.slug: self.slug = slugify(self.shortterm)
self.slug = slugify(self.shortterm)
class Attachment(models.Model): class Attachment(models.Model):
@@ -115,8 +114,7 @@ class Attachment(models.Model):
return reverse("intern:attachment", kwargs=kwargs) return reverse("intern:attachment", kwargs=kwargs)
def clean(self, *args, **kwargs): def clean(self, *args, **kwargs):
if not self.slug: self.slug = slugify(self.shortterm)
self.slug = slugify(self.shortterm)
class Etherpad(models.Model): class Etherpad(models.Model):
@@ -158,24 +156,23 @@ class Etherpad(models.Model):
) )
def clean(self): 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: if not self.etherpad_key:
raise ValidationError( pad_name = self.__get_pad_name()
_(f"Etherpad '{pad_name}' konnte nicht erstellt werden."), 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 @property
def etherpad_html(self): def etherpad_html(self):
@@ -186,7 +183,7 @@ class Etherpad(models.Model):
class FileUpload(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( file_field = models.FileField(
verbose_name="Dokument", upload_to="uploads/intern/files/" verbose_name="Dokument", upload_to="uploads/intern/files/"
) )
@@ -202,3 +199,7 @@ class FileUpload(models.Model):
def __str__(self): def __str__(self):
return self.title 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 slug = None
def form_valid(self, form): def form_valid(self, form):
form.instance.created_by = self.request.user
add_log_action(self.request, form, "intern", "topic", False) 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) return super().form_valid(form)
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@@ -238,13 +243,17 @@ class AttachmentUpdateView(LoginRequiredMixin, UpdateView):
slug = None slug = None
def form_valid(self, form): 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) return super().form_valid(form)
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
context["topic_slug"] = self.topic_slug context["topic"] = Topic.objects.get(slug=self.topic_slug)
context["slug"] = self.slug
attachment = Attachment.objects.get( attachment = Attachment.objects.get(
Q(slug=self.slug) & Q(topic__slug=self.topic_slug) Q(slug=self.slug) & Q(topic__slug=self.topic_slug)

View File

@@ -18,6 +18,16 @@
</div> </div>
{% endif %} {% 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"> <label class="block">
<span class="text-gray-700 dark:text-gray-200">{{ form.title.label }}</span> <span class="text-gray-700 dark:text-gray-200">{{ form.title.label }}</span>
{% if form.title.errors %} {% if form.title.errors %}
@@ -25,13 +35,9 @@
<div class="alert-body">{{ form.title.errors }}</div> <div class="alert-body">{{ form.title.errors }}</div>
</div> </div>
{% endif %} {% 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>
<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"> <input type="hidden" name="attachment" value="{{ attachment.id }}" id="id_attachment">