Skip to content

Commit aba9191

Browse files
Merge pull request #1727 from IFRCGo/feature/search-page-fixes
Feature/search page fixes
2 parents 537bb10 + e3023c6 commit aba9191

File tree

4 files changed

+49
-5
lines changed

4 files changed

+49
-5
lines changed

api/views.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
from notifications.models import Subscription, SurgeAlert
3232
from notifications.notification import send_notification
3333
from registrations.models import Recovery, Pending
34-
from deployments.models import Project, ERU
34+
from deployments.models import Project, ERU, Personnel
3535
from flash_update.models import FlashUpdate
3636
from dref.models import Dref, DrefOperationalUpdate
3737

@@ -201,7 +201,11 @@ def get(self, request):
201201
dref_operational_update_response = SearchQuerySet().models(DrefOperationalUpdate).filter(
202202
SQ(name__contains=phrase) | SQ(code__contains=phrase) | SQ(iso3__contains=phrase)
203203
).order_by('-_score')
204-
204+
rapid_response_deployments = SearchQuerySet().models(Personnel).filter(
205+
SQ(deploying_country_name__contains=phrase) |
206+
SQ(deployed_to_country_name__contains=phrase) |
207+
SQ(event_name__content=phrase)
208+
).order_by('-_score')
205209
appeals_list = []
206210
dref = [
207211
{
@@ -355,7 +359,24 @@ def get(self, request):
355359
} for data in surge_deployments[:50]
356360
],
357361
"reports": sorted(field_report, key=lambda d: d["score"], reverse=True)[:50],
358-
"emergency_planning": sorted(appeals_list, key=lambda d: d["score"], reverse=True)[:50]
362+
"emergency_planning": sorted(appeals_list, key=lambda d: d["score"], reverse=True)[:50],
363+
"rapid_response_deployments": [
364+
{
365+
"id": int(data.id.split(".")[-1]),
366+
"name": data.name,
367+
"start_date": data.start_date,
368+
"end_date": data.end_date,
369+
"postion": data.postion,
370+
"type": data.type,
371+
"deploying_country_name": data.deploying_country_name,
372+
"deploying_country_id": data.deploying_country_id,
373+
"deployed_to_country_name": data.deployed_to_country_name,
374+
"deployed_to_country_id": data.deployed_to_country_id,
375+
"event_name": data.event_name,
376+
"event_id": data.event_id,
377+
"score": data.score,
378+
} for data in rapid_response_deployments[:50]
379+
],
359380
}
360381
return Response(result)
361382

deployments/models.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,6 @@ class StatusChoices(models.TextChoices):
204204
molnix_status = models.CharField(verbose_name=_('molnix status'), max_length=8, choices=StatusChoices.choices, default=StatusChoices.ACTIVE)
205205
is_active = models.BooleanField(default=True) # Active in Molnix API
206206

207-
208207
def __str__(self):
209208
return '%s: %s - %s' % (self.type.upper(), self.name, self.role)
210209

deployments/search_indexes.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from haystack import indexes
22

3-
from deployments.models import Project, ERU
3+
from deployments.models import Project, ERU, Personnel
44

55

66
class ProjectIndex(indexes.SearchIndex, indexes.Indexable):
@@ -45,3 +45,24 @@ def get_model(self):
4545

4646
def index_queryset(self, using=None):
4747
return self.get_model().objects.all()
48+
49+
50+
class PersonnelIndex(indexes.SearchIndex, indexes.Indexable):
51+
text = indexes.EdgeNgramField(document=True, use_template=True)
52+
name = indexes.CharField(model_attr='name', null=True)
53+
start_date = indexes.DateTimeField(model_attr='start_date', null=True)
54+
end_date = indexes.DateTimeField(model_attr='end_date', null=True)
55+
position = indexes.CharField(model_attr='role', null=True)
56+
type = indexes.CharField(model_attr='get_type_display', null=True)
57+
deploying_country_name = indexes.CharField(model_attr='country_from__society_name', null=True)
58+
deploying_country_id = indexes.IntegerField(model_attr='country_from__id', null=True)
59+
deployed_to_country_name = indexes.CharField(model_attr='country_to__name', null=True)
60+
deployed_to_country_id = indexes.IntegerField(model_attr='country_to__id', null=True)
61+
event_name = indexes.EdgeNgramField(model_attr='deployment__event_deployed_to__name')
62+
event_id = indexes.IntegerField(model_attr='deployment__event_deployed_to__id', null=True)
63+
64+
def get_model(self):
65+
return Personnel
66+
67+
def index_queryset(self, using=None):
68+
return self.get_model().objects.all()
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{{object.event_name}}
2+
{{object.deploying_country_name}}
3+
{{object.deployed_to_country_name}}

0 commit comments

Comments
 (0)