AleksandrKosmylev/python-project-52

View on GitHub
task_manager/tasks/models.py

Summary

Maintainability
A
0 mins
Test Coverage
A
94%
from django.db import models
from task_manager.users.models import CustomUser
from task_manager.statuses.models import Status
from task_manager.labels.models import Labels
from django.utils.translation import gettext as _


class Task(models.Model):
    name = models.CharField(max_length=255, unique=True, verbose_name=_('Name'))  # noqa: E501
    description = models.TextField(blank=True, verbose_name=_('Description'))
    author = models.ForeignKey(CustomUser,
                               on_delete=models.PROTECT,
                               related_name='task_author',
                               verbose_name=_('Author'))
    timestamp = models.DateTimeField("time_stamp",
                                     auto_now_add=True)
    status = models.ForeignKey(Status,
                               on_delete=models.PROTECT,
                               verbose_name=_('Status'))
    executor = models.ForeignKey(CustomUser,
                                 on_delete=models.PROTECT,
                                 blank=True,
                                 null=True,
                                 related_name='task_executor',
                                 verbose_name=_('Executor'))
    labels = models.ManyToManyField(Labels,
                                    blank=True,
                                    through="IntermediateModel",
                                    verbose_name=_('Labels'))

    def __str__(self):
        return '{} {} {} {} {} {}'.format(self.author,
                                          self.name,
                                          self.description,
                                          self.status,
                                          self.executor,
                                          self.labels)


class IntermediateModel(models.Model):
    label = models.ForeignKey(Labels,
                              on_delete=models.PROTECT,
                              null=True)
    task = models.ForeignKey(Task, on_delete=models.CASCADE)