Skip to content

Commit

Permalink
feat: updates to project search
Browse files Browse the repository at this point in the history
- Search by user
- Search by project id as string
- see dbca-wa/science-projects-client#550
- fixes dbca-wa/science-projects-client#549
  • Loading branch information
idabblewith committed Feb 27, 2025
1 parent fdc985d commit 88faa26
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 5 deletions.
6 changes: 3 additions & 3 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 16 additions & 2 deletions projects/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,15 @@

from django.conf import settings
from django.db import IntegrityError, transaction
from django.db.models import Q, Case, When, Value, F, IntegerField
from django.db.models import Q, Case, When, Value, F, IntegerField, CharField
from django.core.files.base import ContentFile
from django.http import HttpResponse
from django.core.files.base import ContentFile
from django.core.files.storage import default_storage

from django.db.models.functions import Cast


from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.permissions import IsAuthenticated
Expand Down Expand Up @@ -173,6 +176,11 @@ def get(self, request):
only_inactive = bool(request.GET.get("only_inactive", False))
ba_pk = request.GET.get("businessarea", "All")

selected_user = request.GET.get("selected_user", None)

# # print the req data
# print(selected_user)

# Get the search term
search_term = request.GET.get("searchTerm")
# Handle search by project id string
Expand All @@ -189,13 +197,19 @@ def get(self, request):
projects = Project.objects.all()

if search_term:
projects = projects.filter(
projects = projects.annotate(
number_as_text=Cast("number", output_field=CharField())
).filter(
Q(title__icontains=search_term)
| Q(description__icontains=search_term)
| Q(tagline__icontains=search_term)
| Q(keywords__icontains=search_term)
| Q(number_as_text__icontains=search_term)
)

if selected_user:
projects = projects.filter(members__user__pk=selected_user)

if ba_pk != "All":
projects = projects.filter(business_area__pk=ba_pk)

Expand Down

0 comments on commit 88faa26

Please sign in to comment.