Skip to content

Filters

hypha.apply.projects.filters

User module-attribute

User = get_user_model()

REPORTING_CHOICES module-attribute

REPORTING_CHOICES = ((0, _('Up to date')), (1, _('Behind schedule')))

InvoiceListFilter

Bases: FilterSet

fund class-attribute instance-attribute

fund = ModelMultipleChoiceFilter(label=_('Funds'), queryset=get_used_funds, field_name='project__submission__page')

status class-attribute instance-attribute

status = MultipleChoiceFilter(label=_('Status'), choices=INVOICE_STATUS_CHOICES)

lead class-attribute instance-attribute

lead = ModelMultipleChoiceFilter(label=_('Lead'), queryset=get_project_leads, field_name='project__lead')

Meta

fields class-attribute instance-attribute
fields = ['lead', 'fund', 'status']
model class-attribute instance-attribute
model = Invoice

ProjectListFilter

ProjectListFilter(*args, exclude=None, **kwargs)

Bases: FilterSet

Source code in hypha/apply/projects/filters.py
def __init__(self, *args, exclude=None, **kwargs):
    if exclude is None:
        exclude = []

    super().__init__(*args, **kwargs)

    exclude = {self.COLUMN_TO_FILTER.get(field, field) for field in exclude}

    self.filters = {
        field: filter
        for field, filter in self.filters.items()
        if field not in exclude
    }

project_fund class-attribute instance-attribute

project_fund = ModelMultipleChoiceFilter(field_name='submission__page', label=_('Funds'), queryset=get_used_funds)

project_lead class-attribute instance-attribute

project_lead = ModelMultipleChoiceFilter(field_name='lead', label=_('Lead'), queryset=get_project_leads)

project_contractor class-attribute instance-attribute

project_contractor = ModelMultipleChoiceFilter(field_name='user', label=_('Contractor'), queryset=get_project_contractors)

project_status class-attribute instance-attribute

project_status = MultipleChoiceFilter(field_name='status', label=_('Status'), choices=PROJECT_STATUS_CHOICES)

query class-attribute instance-attribute

query = filters.CharFilter(field_name='title', lookup_expr='icontains', widget=forms.HiddenInput)

reporting class-attribute instance-attribute

reporting = MultipleChoiceFilter(choices=REPORTING_CHOICES, method='filter_reporting', field_name='reporting', label=_('Reporting'))

COLUMN_TO_FILTER class-attribute instance-attribute

COLUMN_TO_FILTER = {'fund': 'project_fund', 'lead': 'project_lead', 'status': 'project_status', 'contractor': 'project_contractor'}

filters instance-attribute

filters = {field: filter for field, filter in self.filters.items() if field not in exclude}

Meta

fields class-attribute instance-attribute
fields = ['project_status', 'project_lead', 'project_contractor', 'project_fund']
model class-attribute instance-attribute
model = Project

filter_reporting

filter_reporting(queryset, name, value)
Source code in hypha/apply/projects/filters.py
def filter_reporting(self, queryset, name, value):
    if value == "1":
        return queryset.filter(outstanding_reports__gt=0)
    return queryset.filter(
        Q(outstanding_reports__lt=1) | Q(outstanding_reports__isnull=True),
        status__in=(INVOICING_AND_REPORTING, CLOSING),
    )

get_project_leads

get_project_leads(request)
Source code in hypha/apply/projects/filters.py
def get_project_leads(request):
    return User.objects.filter(lead_projects__isnull=False).distinct()

get_project_contractors

get_project_contractors(request)
Source code in hypha/apply/projects/filters.py
def get_project_contractors(request):
    return User.objects.filter(owned_projects__isnull=False).distinct()