From 3e06f1b1c4e893dbf1ff205156f637f28d1fced4 Mon Sep 17 00:00:00 2001 From: Patrick Mayr Date: Wed, 19 Jan 2022 09:33:27 +0000 Subject: [PATCH] move manager method in managers file --- fet2020/tasks/managers.py | 31 +++++++++++++++++++++++++++++++ fet2020/tasks/models.py | 32 +------------------------------- 2 files changed, 32 insertions(+), 31 deletions(-) create mode 100644 fet2020/tasks/managers.py diff --git a/fet2020/tasks/managers.py b/fet2020/tasks/managers.py new file mode 100644 index 00000000..65df48f0 --- /dev/null +++ b/fet2020/tasks/managers.py @@ -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) diff --git a/fet2020/tasks/models.py b/fet2020/tasks/models.py index 31717c43..fdb3cbe2 100644 --- a/fet2020/tasks/models.py +++ b/fet2020/tasks/models.py @@ -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):