Files
fet2020/fet2020/tasks/models.py

76 lines
2.1 KiB
Python

from django.conf import settings
from django.db import models
from django.db.models import Q
from django.utils import timezone
class TaskQuerySet(models.QuerySet):
def get_ordered(self):
return self.order_by('task_list')
class TaskManager(models.Manager):
def get_tasks(self, user, completed):
if completed:
return self.get_queryset().get_ordered().filter(Q(assigned_to=user))
else:
return self.get_queryset().get_ordered().filter(
Q(assigned_to=user)
& Q(completed=completed)
)
def get_queryset(self):
return TaskQuerySet(self.model, using=self._db)
class TaskList(models.Model):
name = models.CharField(max_length=60)
slug = models.SlugField(unique=True, null=True, blank=True)
objects = models.Manager()
def __str__(self):
return self.name
class Task(models.Model):
title = models.CharField(max_length=140)
task_list = models.ForeignKey(TaskList, on_delete=models.CASCADE, null=True)
created_date = models.DateTimeField(auto_now_add=True)
due_date = models.DateField(blank=True, null=True)
completed = models.BooleanField(default=False)
completed_date = models.DateField(blank=True, null=True)
created_by = models.ForeignKey(
settings.AUTH_USER_MODEL,
related_name="todo_created_by",
on_delete=models.CASCADE,
)
assigned_to = models.ForeignKey(
settings.AUTH_USER_MODEL,
blank=True,
null=True,
related_name="todo_assigned_to",
on_delete=models.CASCADE,
)
note = models.TextField(blank=True, null=True)
priority = models.PositiveIntegerField(blank=True, null=True)
objects = models.Manager()
taskmanager = TaskManager()
def __str__(self):
return self.title
def save(self, *args, **kwargs):
if self.completed and not self.completed_date:
self.completed_date = timezone.now().date()
if not self.completed and self.completed_date:
self.completed_date = None
super().save(*args, **kwargs)