AleksandrKosmylev/python-project-52

View on GitHub
task_manager/tasks/filter.py

Summary

Maintainability
A
0 mins
Test Coverage
B
80%
import django_filters
from task_manager.tasks.models import Task
from task_manager.labels.models import Labels
from django import forms
from django.utils.translation import gettext_lazy as _


class TaskFilter(django_filters.FilterSet):
    label = django_filters.ModelChoiceFilter(queryset=Labels.objects.all(),
                                             label=_('Label'),
                                             field_name='labels')
    author_tasks = django_filters.BooleanFilter(field_name='author',
                                                widget=forms.CheckboxInput,
                                                method='filter_author_tasks',
                                                label=_('Only my tasks'))

    class Meta:
        model = Task
        fields = ['status', 'executor']

    def filter_author_tasks(self, queryset, arg, value):
        if value:
            return queryset.filter(author=self.request.user)
        return queryset