From 4907959b4cce874f568fce85b85815d6838b21e7 Mon Sep 17 00:00:00 2001 From: Frank Duncan <frank@consxy.com> Date: Fri, 19 May 2023 03:09:15 -0500 Subject: [PATCH] Add search by application number (#3294) Fixes #3289 What's on the tin. A few notes: * I preserved the git history from our repository, but can easily squash them all if you'd prefer such a small change be in one commit * I'm not sure where in the documentation to document this feature --------- Co-authored-by: Chris Zubak-Skees <chriszs@gmail.com> Co-authored-by: Chris Zubak-Skees <chriszs@opentechstrategies.com> Co-authored-by: Ghulam Murtaza <gmurtaza@opentechstrategies.com> Co-authored-by: Frank Duncan <frank@kank.net> --- hypha/apply/funds/tables.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hypha/apply/funds/tables.py b/hypha/apply/funds/tables.py index 90c88a2ea..b5b8fc084 100644 --- a/hypha/apply/funds/tables.py +++ b/hypha/apply/funds/tables.py @@ -1,4 +1,5 @@ import json +import re import textwrap import django_filters as filters @@ -365,9 +366,15 @@ class SubmissionFilter(filters.FilterSet): class SubmissionFilterAndSearch(SubmissionFilter): - query = filters.CharFilter(field_name='search_data', lookup_expr="icontains", widget=forms.HiddenInput) + query = filters.CharFilter(method='search_data_and_id', widget=forms.HiddenInput) archived = filters.BooleanFilter(field_name='is_archive', widget=forms.HiddenInput, method='filter_archived') + def search_data_and_id(self, queryset, name, value): + possible_id = re.search("^#(\\d+)$", value.strip()) + if possible_id: + return queryset.filter(id=possible_id.groups()[0]) + return queryset.filter(search_data__icontains=value) + def filter_archived(self, queryset, name, value): if not value: # if value is 0 or None -- GitLab