Create models and admin for Checklist

This commit is contained in:
Benbb96
2023-04-22 22:55:41 +02:00
parent eadf23ce3f
commit 9e9ebd45a7
3 changed files with 143 additions and 1 deletions

View File

@ -2002,3 +2002,73 @@ class TicketDependency(models.Model):
def __str__(self):
return '%s / %s' % (self.ticket, self.depends_on)
def is_a_list_without_empty_element(task_list):
if not isinstance(task_list, list):
raise ValidationError(f'{task_list} is not a list')
for task in task_list:
if not isinstance(task, str):
raise ValidationError(f'{task} is not a string')
if task == '':
raise ValidationError('A task cannot be an empty string')
class ChecklistTemplate(models.Model):
name = models.CharField(
verbose_name=_('Name'),
max_length=100
)
task_list = models.JSONField(verbose_name=_('Task List'), validators=[is_a_list_without_empty_element])
class Meta:
verbose_name = _('Checklist Template')
verbose_name_plural = _('Checklist Templates')
def __str__(self):
return self.name
class Checklist(models.Model):
ticket = models.ForeignKey(
Ticket,
on_delete=models.CASCADE,
verbose_name=_('Ticket'),
related_name='checklists',
)
name = models.CharField(
verbose_name=_('Name'),
max_length=100
)
class Meta:
verbose_name = _('Checklist')
verbose_name_plural = _('Checklists')
def __str__(self):
return self.name
class ChecklistTask(models.Model):
checklist = models.ForeignKey(
Checklist,
on_delete=models.CASCADE,
verbose_name=_('Checklist'),
related_name='tasks',
)
description = models.CharField(
verbose_name=_('Description'),
max_length=250
)
completion_date = models.DateTimeField(
verbose_name=_('Completion Date'),
null=True,
blank=True
)
class Meta:
verbose_name = _('Checklist Task')
verbose_name_plural = _('Checklist Tasks')
def __str__(self):
return self.description