move manager method in managers file

This commit is contained in:
2022-01-19 09:33:27 +00:00
parent d3453755a2
commit a9473c154f
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.core.validators import ValidationError
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.db import models from django.db import models
from django.db.models import Q
from django.db.models.constraints import UniqueConstraint from django.db.models.constraints import UniqueConstraint
from django.urls import reverse from django.urls import reverse
from django.utils import timezone from django.utils import timezone
@@ -11,36 +10,7 @@ from django.utils.text import slugify
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from documents import createPadifNotExists from documents import createPadifNotExists
from .managers import TaskManager
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)
class TaskList(models.Model): class TaskList(models.Model):