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=gettext_lazy('Funds'), queryset=get_used_funds, field_name='project__submission__page')

status class-attribute instance-attribute

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

lead class-attribute instance-attribute

lead = ModelMultipleChoiceFilter(label=gettext_lazy('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

Bases: FilterSet

project_fund class-attribute instance-attribute

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

project_lead class-attribute instance-attribute

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

project_status class-attribute instance-attribute

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

query class-attribute instance-attribute

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

reporting class-attribute instance-attribute

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

Meta

fields class-attribute instance-attribute
fields = ['project_status', 'project_lead', '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()