allow to set shortterms and limit their length
This commit is contained in:
@@ -73,6 +73,7 @@ class TaskCreateForm(forms.ModelForm):
|
|||||||
|
|
||||||
fields = [
|
fields = [
|
||||||
"title",
|
"title",
|
||||||
|
"shortterm",
|
||||||
"task_list",
|
"task_list",
|
||||||
"due_date",
|
"due_date",
|
||||||
"assigned_to",
|
"assigned_to",
|
||||||
@@ -81,6 +82,7 @@ class TaskCreateForm(forms.ModelForm):
|
|||||||
|
|
||||||
labels = {
|
labels = {
|
||||||
"title": _("Titel des Tasks"),
|
"title": _("Titel des Tasks"),
|
||||||
|
"shortterm": _("Kürzel für den Link (optional)"),
|
||||||
"task_list": _("Task-Gruppe"),
|
"task_list": _("Task-Gruppe"),
|
||||||
"due_date": _("Fälligkeitsdatum"),
|
"due_date": _("Fälligkeitsdatum"),
|
||||||
"assigned_to": _("Zuweisen an"),
|
"assigned_to": _("Zuweisen an"),
|
||||||
@@ -165,12 +167,14 @@ class DocumentCreateForm(forms.ModelForm):
|
|||||||
|
|
||||||
fields = [
|
fields = [
|
||||||
"title",
|
"title",
|
||||||
|
"shortterm",
|
||||||
"date",
|
"date",
|
||||||
"task",
|
"task",
|
||||||
]
|
]
|
||||||
|
|
||||||
labels = {
|
labels = {
|
||||||
"title": _("Titel"),
|
"title": _("Titel"),
|
||||||
|
"shortterm": _("Kürzel für den Link (optional)"),
|
||||||
"date": _("Datum"),
|
"date": _("Datum"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ from .managers import TaskManager
|
|||||||
class TaskList(models.Model):
|
class TaskList(models.Model):
|
||||||
name = models.CharField(max_length=128)
|
name = models.CharField(max_length=128)
|
||||||
|
|
||||||
shortterm = models.CharField(max_length=128, unique=True, null=True, blank=True)
|
shortterm = models.CharField(max_length=128, unique=True, blank=True)
|
||||||
slug = models.SlugField(unique=True, null=True, blank=True)
|
slug = models.SlugField(unique=True, blank=True)
|
||||||
|
|
||||||
users = models.ManyToManyField(User, blank=True)
|
users = models.ManyToManyField(User, blank=True)
|
||||||
|
|
||||||
@@ -36,17 +36,15 @@ class TaskList(models.Model):
|
|||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
if not self.shortterm:
|
if not self.shortterm:
|
||||||
self.slug = slugify(self.name)
|
self.shortterm = slugify(self.name)
|
||||||
|
self.slug = slugify(self.shortterm)
|
||||||
if not self.slug:
|
|
||||||
self.slug = slugify(self.shortterm)
|
|
||||||
|
|
||||||
|
|
||||||
class Task(models.Model):
|
class Task(models.Model):
|
||||||
title = models.CharField(verbose_name="Titel", max_length=128)
|
title = models.CharField(verbose_name="Titel", max_length=128)
|
||||||
|
|
||||||
shortterm = models.CharField(max_length=128, null=True, blank=True)
|
shortterm = models.CharField(max_length=25, blank=True)
|
||||||
slug = models.SlugField(null=True, blank=True)
|
slug = models.SlugField(max_length=25, blank=True)
|
||||||
|
|
||||||
task_list = models.ForeignKey(
|
task_list = models.ForeignKey(
|
||||||
TaskList, verbose_name="Aufgabenbereich", on_delete=models.CASCADE, null=True
|
TaskList, verbose_name="Aufgabenbereich", on_delete=models.CASCADE, null=True
|
||||||
@@ -93,10 +91,8 @@ class Task(models.Model):
|
|||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
if not self.shortterm:
|
if not self.shortterm:
|
||||||
self.slug = slugify(self.title)
|
self.shortterm = slugify(self.title[:20])
|
||||||
|
self.slug = slugify(self.shortterm)
|
||||||
if not self.slug:
|
|
||||||
self.slug = slugify(self.shortterm)
|
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if self.completed and not self.completed_date:
|
if self.completed and not self.completed_date:
|
||||||
@@ -110,7 +106,9 @@ class Task(models.Model):
|
|||||||
|
|
||||||
class Document(models.Model):
|
class Document(models.Model):
|
||||||
title = models.CharField(verbose_name="Titel", max_length=128)
|
title = models.CharField(verbose_name="Titel", max_length=128)
|
||||||
slug = models.SlugField(null=True, blank=True)
|
|
||||||
|
shortterm = models.CharField(max_length=20, blank=True)
|
||||||
|
slug = models.SlugField(max_length=20, blank=True)
|
||||||
|
|
||||||
etherpad_key = models.CharField(max_length=50, blank=True)
|
etherpad_key = models.CharField(max_length=50, blank=True)
|
||||||
date = models.DateField(verbose_name="Datum", default=date.today)
|
date = models.DateField(verbose_name="Datum", default=date.today)
|
||||||
@@ -131,8 +129,9 @@ class Document(models.Model):
|
|||||||
]
|
]
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
if not self.slug:
|
if not self.shortterm:
|
||||||
self.slug = slugify(self.title)
|
self.shortterm = slugify(self.title[:20])
|
||||||
|
self.slug = slugify(self.shortterm)
|
||||||
|
|
||||||
pad_name = slugify(str(self.date) + "-" + self.task.slug + "-" + self.slug)
|
pad_name = slugify(str(self.date) + "-" + self.task.slug + "-" + self.slug)
|
||||||
if len(pad_name) > 50:
|
if len(pad_name) > 50:
|
||||||
|
|||||||
@@ -28,6 +28,16 @@
|
|||||||
<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" required>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
|
<label>
|
||||||
|
<span class="text-gray-700 dark:text-gray-200">{{ form.shortterm.label }}</span>
|
||||||
|
{% if form.shortterm.errors %}
|
||||||
|
<div class="alert alert-danger">
|
||||||
|
<div class="alert-body">{{ form.shortterm.errors }}</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<input type="text" id="id_shortterm" name="shortterm" 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.date.label }}</span>
|
<span class="text-gray-700 dark:text-gray-200">{{ form.date.label }}</span>
|
||||||
{% if form.date.errors %}
|
{% if form.date.errors %}
|
||||||
|
|||||||
@@ -95,7 +95,7 @@
|
|||||||
<label class="flex justify-between items-start">
|
<label class="flex justify-between items-start">
|
||||||
<div class="inline-flex items-baseline mr-2">
|
<div class="inline-flex items-baseline mr-2">
|
||||||
<input type="checkbox" name="checkbox" value="{{ task.id }}" {% if task.completed %}checked{% endif %} class="rounded border-gray-300 dark:border-none text-proprietary shadow-sm focus:border-blue-300 focus:ring focus:ring-offset-0 focus:ring-blue-200 dark:focus:ring-sky-700 focus:ring-opacity-50">
|
<input type="checkbox" name="checkbox" value="{{ task.id }}" {% if task.completed %}checked{% endif %} class="rounded border-gray-300 dark:border-none text-proprietary shadow-sm focus:border-blue-300 focus:ring focus:ring-offset-0 focus:ring-blue-200 dark:focus:ring-sky-700 focus:ring-opacity-50">
|
||||||
<span class="ml-2">{{ task.title }} <a href="{% url 'tasks:task-detail' task.id %}" class="inline-block text-proprietary dark:text-proprietary-lighter">Link <i class="fa-solid fa-link"></i></a></span>
|
<span class="ml-2">{{ task.title|truncatechars:45 }} <a href="{% url 'tasks:task-detail' task.id %}" class="inline-block text-proprietary dark:text-proprietary-lighter">Link <i class="fa-solid fa-link"></i></a></span>
|
||||||
</div>
|
</div>
|
||||||
{% if task.due_date %}
|
{% if task.due_date %}
|
||||||
<div class="inline-flex gap-2 flex-shrink-0">
|
<div class="inline-flex gap-2 flex-shrink-0">
|
||||||
|
|||||||
@@ -28,6 +28,16 @@
|
|||||||
<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" required>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
|
<label>
|
||||||
|
<span class="text-gray-700 dark:text-gray-200">{{ form.shortterm.label }}</span>
|
||||||
|
{% if form.shortterm.errors %}
|
||||||
|
<div class="alert alert-danger">
|
||||||
|
<div class="alert-body">{{ form.shortterm.errors }}</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<input type="text" id="id_shortterm" name="shortterm" 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.task_list.label }}</span>
|
<span class="text-gray-700 dark:text-gray-200">{{ form.task_list.label }}</span>
|
||||||
{% if form.task_list.errors %}
|
{% if form.task_list.errors %}
|
||||||
|
|||||||
Reference in New Issue
Block a user