move manager method in managers file

This commit is contained in:
2022-01-19 09:33:27 +00:00
parent f436a43f53
commit 3e06f1b1c4
2 changed files with 32 additions and 31 deletions

31
fet2020/tasks/managers.py Normal file
View File

@@ -0,0 +1,31 @@
from django.db import models
from django.db.models import Q
class TaskQuerySet(models.QuerySet):
def get_ordered(self):
return self.order_by("task_list")
class TaskManager(models.Manager):
def get_tasks(self, user, completed, task_list, all_tasks):
# None ... assigned to all users
qs_all = self.get_queryset().get_ordered()
qs = qs_all.filter(assigned_to__id=user)
if all_tasks:
qs_tmp = qs_all.filter(
Q(assigned_to=None) & Q(task_list__users__id__exact=user)
)
qs = (qs | qs_tmp).distinct()
if not completed:
qs = qs.filter(completed=completed)
if task_list:
qs = qs.filter(task_list=task_list)
return qs
def get_queryset(self):
return TaskQuerySet(self.model, using=self._db)

View File

@@ -3,7 +3,6 @@ from django.conf import settings
from django.core.validators import ValidationError
from django.contrib.auth.models import User
from django.db import models
from django.db.models import Q
from django.db.models.constraints import UniqueConstraint
from django.urls import reverse
from django.utils import timezone
@@ -11,36 +10,7 @@ from django.utils.text import slugify
from django.utils.translation import gettext_lazy as _
from documents import createPadifNotExists
class TaskQuerySet(models.QuerySet):
def get_ordered(self):
return self.order_by("task_list")
class TaskManager(models.Manager):
def get_tasks(self, user, completed, task_list, all_tasks):
# None ... assigned to all users
qs = self.get_queryset().get_ordered().filter(assigned_to__id=user)
if all_tasks:
qs_tmp = (
self.get_queryset()
.get_ordered()
.filter(Q(assigned_to=None) & Q(task_list__users__id__exact=user))
)
qs = (qs | qs_tmp).distinct()
if not completed:
qs = qs.filter(completed=completed)
if task_list:
qs = qs.filter(task_list=task_list)
return qs
def get_queryset(self):
return TaskQuerySet(self.model, using=self._db)
from .managers import TaskManager
class TaskList(models.Model):