You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.7 KiB
68 lines
1.7 KiB
import pydash as _;
|
|
from rest_framework_filters import FilterSet, RelatedFilter, AllLookupsFilter, MethodFilter
|
|
|
|
_.map = _.map_;
|
|
_.filter = _.filter_
|
|
|
|
from .models import User, Team, ContractorResumeFiles, ContractorResume
|
|
|
|
|
|
class UserFilterSet(FilterSet):
|
|
email = AllLookupsFilter()
|
|
first_name = AllLookupsFilter()
|
|
id = AllLookupsFilter()
|
|
is_active = AllLookupsFilter()
|
|
is_admin = AllLookupsFilter()
|
|
is_contractor = MethodFilter()
|
|
is_customer = MethodFilter()
|
|
last_name = AllLookupsFilter()
|
|
username = AllLookupsFilter()
|
|
|
|
projects = RelatedFilter('projects.filters.ProjectFilterSet')
|
|
|
|
class Meta:
|
|
model = User
|
|
|
|
def filter_is_contractor(self, name, qs, value):
|
|
if value == 'true':
|
|
# return _.filter(qs, lambda user: user.is_contractor())
|
|
return qs.filter(groups__name='Исполнители')
|
|
|
|
return qs
|
|
|
|
def filter_is_customer(self, name, qs, value):
|
|
if value == 'true':
|
|
# return _.filter(qs, lambda user: user.is_customer())
|
|
return qs.filter(groups__name='Заказчики')
|
|
|
|
return qs
|
|
|
|
|
|
class TeamFilterSet(FilterSet):
|
|
id = AllLookupsFilter()
|
|
name = AllLookupsFilter()
|
|
|
|
owner = RelatedFilter('users.filters.UserFilterSet')
|
|
|
|
class Meta:
|
|
model = Team
|
|
|
|
|
|
class ContractorResumeFilterSet(FilterSet):
|
|
id = AllLookupsFilter()
|
|
resume_file = AllLookupsFilter()
|
|
text = AllLookupsFilter()
|
|
|
|
class Meta:
|
|
model = ContractorResume
|
|
|
|
|
|
class ContractorResumeFilesFilterSet(FilterSet):
|
|
id = AllLookupsFilter()
|
|
img = AllLookupsFilter()
|
|
title = AllLookupsFilter()
|
|
|
|
resume = RelatedFilter('users.filters.ContractorResumeFilterSet')
|
|
|
|
class Meta:
|
|
model = ContractorResumeFiles
|
|
|