set title from file; set shortterm to slug
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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,14 +243,18 @@ 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)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user