diff --git a/fet2020/tasks/admin.py b/fet2020/tasks/admin.py index 878f9176..e94fc261 100644 --- a/fet2020/tasks/admin.py +++ b/fet2020/tasks/admin.py @@ -22,6 +22,7 @@ class TaskAdmin(admin.ModelAdmin): { "fields": ( "title", + "slug", "task_list", "assigned_to", "due_date", diff --git a/fet2020/tasks/forms.py b/fet2020/tasks/forms.py index 0fa8aac4..79e9a307 100644 --- a/fet2020/tasks/forms.py +++ b/fet2020/tasks/forms.py @@ -18,6 +18,7 @@ class DocumentInlineForm(forms.ModelForm): model = Document fields = [ "title", + "slug", "date", ] diff --git a/fet2020/tasks/models.py b/fet2020/tasks/models.py index fdb3cbe2..b9701090 100644 --- a/fet2020/tasks/models.py +++ b/fet2020/tasks/models.py @@ -14,7 +14,7 @@ from .managers import TaskManager class TaskList(models.Model): - name = models.CharField(max_length=60) + name = models.CharField(max_length=128) slug = models.SlugField(unique=True, null=True, blank=True) users = models.ManyToManyField(User, blank=True) @@ -31,9 +31,17 @@ class TaskList(models.Model): def get_absolute_url(self): return reverse("tasks") + def save(self, *args, **kwargs): + if not self.slug: + self.slug = slugify(self.name) + + super().save(*args, **kwargs) + class Task(models.Model): - title = models.CharField(verbose_name="Titel", max_length=140) + title = models.CharField(verbose_name="Titel", max_length=128) + slug = models.SlugField(unique=True, null=True, blank=True) + task_list = models.ForeignKey( TaskList, verbose_name="Aufgabenbereich", on_delete=models.CASCADE, null=True ) @@ -77,6 +85,9 @@ class Task(models.Model): return reverse("task-detail", kwargs={"pk": self.id}) def save(self, *args, **kwargs): + if not self.slug: + self.slug = slugify(self.title) + if self.completed and not self.completed_date: self.completed_date = timezone.now().date() @@ -88,6 +99,8 @@ class Task(models.Model): class Document(models.Model): title = models.CharField(verbose_name="Titel", max_length=128) + slug = models.SlugField(unique=True, null=True, blank=True) + etherpad_key = models.CharField(max_length=50, blank=True) date = models.DateField(verbose_name="Datum", default=date.today) @@ -107,9 +120,10 @@ class Document(models.Model): ] def clean(self): - pad_name = slugify( - str(self.date) + "-" + self.task.title + "-" + slugify(self.title) - ) + if not self.slug: + self.slug = slugify(self.title) + + pad_name = slugify(str(self.date) + "-" + self.task.slug + "-" + self.slug) if len(pad_name) > 50: raise ValidationError( @@ -121,7 +135,7 @@ class Document(models.Model): def save(self, *args, **kwargs): self.etherpad_key = createPadifNotExists( - slugify(str(self.date) + "-" + self.task.title + "-" + slugify(self.title)) + slugify(str(self.date) + "-" + self.task.slug + "-" + self.slug) ) super().save(*args, **kwargs)