Skip to content

Commit b6fdb43

Browse files
Merge pull request #1483 from IFRCGo/fix/surge-performance-2419
Adding SurgeEventSerializer to eliminate FR fields
2 parents 5cd7163 + b3bf600 commit b6fdb43

File tree

6 files changed

+51
-24
lines changed

6 files changed

+51
-24
lines changed

api/serializers.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,22 @@ class Meta:
510510
)
511511

512512

513+
class SurgeEventSerializer(ModelSerializer):
514+
appeals = RelatedAppealSerializer(many=True, read_only=True)
515+
countries = MiniCountrySerializer(many=True)
516+
dtype = DisasterTypeSerializer()
517+
ifrc_severity_level_display = serializers.CharField(source='get_ifrc_severity_level_display', read_only=True)
518+
519+
class Meta:
520+
model = Event
521+
fields = (
522+
'name', 'dtype', 'countries', 'summary', 'num_affected', 'ifrc_severity_level', 'ifrc_severity_level_display',
523+
'glide', 'disaster_start_date', 'created_at', 'auto_generated', 'appeals', 'is_featured', 'is_featured_region',
524+
'updated_at', 'id', 'slug', 'parent_event', 'tab_one_title', 'tab_two_title', 'tab_three_title',
525+
'emergency_response_contact_email', # omitted intentionally: field_reports
526+
)
527+
528+
513529
class ListEventTableauSerializer(EnumSupportSerializerMixin, serializers.ModelSerializer):
514530
appeals = serializers.SerializerMethodField()
515531
field_reports = serializers.SerializerMethodField()

deployments/drf_views.py

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
from api.models import (
2424
Country,
2525
Region,
26-
FieldReport,
2726
)
2827
from api.view_filters import ListFilter
2928
from api.visibility_class import ReadOnlyVisibilityViewsetMixin
@@ -148,24 +147,17 @@ def get_queryset(self):
148147
if self.request.GET.get('format', 'json') != 'csv':
149148
qs = qs.filter(is_active=True)
150149
qs = qs.select_related(
151-
'country_from',
152150
'deployment__country_deployed_to',
153151
'deployment__event_deployed_to',
154-
'deployment__event_deployed_to__dtype'
152+
'deployment__event_deployed_to__dtype',
155153
).prefetch_related(
156154
'deployment__event_deployed_to__countries',
157155
'deployment__event_deployed_to__appeals',
156+
'country_from',
157+
'country_to',
158+
'molnix_tags',
158159
)
159-
160-
if self.request.GET.get('format') == 'csv':
161-
return qs.prefetch_related(
162-
models.Prefetch(
163-
'deployment__event_deployed_to__field_reports',
164-
queryset=FieldReport.objects.only('id', 'event_id')
165-
)
166-
).distinct()
167-
168-
return qs.prefetch_related('deployment__event_deployed_to__field_reports').distinct()
160+
return qs
169161

170162
def get_serializer_class(self):
171163
request_format_type = self.request.GET.get('format', 'json')
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 2.2.27 on 2022-07-27 07:08
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('deployments', '0065_emergencyproject_visibility'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='deployedperson',
15+
name='end_date',
16+
field=models.DateTimeField(db_index=True, null=True, verbose_name='end date'),
17+
),
18+
]

deployments/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ def __str__(self):
182182
@reversion.register()
183183
class DeployedPerson(models.Model):
184184
start_date = models.DateTimeField(verbose_name=_('start date'), null=True)
185-
end_date = models.DateTimeField(verbose_name=_('end date'), null=True)
185+
end_date = models.DateTimeField(verbose_name=_('end date'), null=True, db_index=True)
186186
name = models.CharField(verbose_name=_('name'), null=True, blank=True, max_length=255)
187187
role = models.CharField(verbose_name=_('role'), null=True, blank=True, max_length=512)
188188

deployments/serializers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from api.serializers import (
1616
DisasterTypeSerializer,
1717
ListEventSerializer,
18+
SurgeEventSerializer,
1819
SmallEventForPersonnelCsvSerializer,
1920
MiniEventSerializer,
2021
MiniCountrySerializer,
@@ -106,7 +107,7 @@ class Meta:
106107

107108
class PersonnelDeploymentSerializer(ModelSerializer):
108109
country_deployed_to = MiniCountrySerializer()
109-
event_deployed_to = ListEventSerializer()
110+
event_deployed_to = SurgeEventSerializer()
110111

111112
class Meta:
112113
model = PersonnelDeployment

deployments/snapshots/snap_tests.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -449,16 +449,16 @@
449449
}
450450

451451
snapshots['TestProjectAPI::test_personnel_csv_api 1'] = '''event_id,event_glide_id,event_name,event_ifrc_severity_level,event_disaster_type,event_country_name,event_country_iso3,event_country_nationalsociety,event_country_regionname,role,type,name,deployed_id,deployed_to_name,deployed_to_iso3,deployed_to_nationalsociety,deployed_to_regionname,deployed_from_name,deployed_from_iso3,deployed_from_nationalsociety,deployed_from_regionname,start_date,end_date,ongoing,is_active,molnix_id,molnix_sector,molnix_role_profile,molnix_language,molnix_region,molnix_scope,molnix_modality,molnix_operation\r
452-
,,,,,,,,,,,,1,,,,,,,,,,,True,True,,,,,,,,\r
453-
,,,,,,,,,,,,2,,,,,,,,,,,True,True,,,,,,,,\r
454-
,,,,,,,,,,,,3,,,,,,,,,,,True,True,,,,,,,,\r
455-
,,,,,,,,,,,,4,,,,,,,,,,,True,True,,,,,,,,\r
456-
,,,,,,,,,,,,5,,,,,,,,,,,True,True,,,,,,,,\r
457-
,,,,,,,,,,,,6,,,,,,,,,,,True,True,,,,,,,,\r
458-
,,,,,,,,,,,,7,,,,,,,,,,,True,True,,,,,,,,\r
459-
,,,,,,,,,,,,8,,,,,,,,,,,True,True,,,,,,,,\r
460-
,,,,,,,,,,,,9,,,,,,,,,,,True,True,,,,,,,,\r
461452
,,,,,,,,,,,,10,,,,,,,,,,,True,True,,,,,,,,\r
453+
,,,,,,,,,,,,9,,,,,,,,,,,True,True,,,,,,,,\r
454+
,,,,,,,,,,,,8,,,,,,,,,,,True,True,,,,,,,,\r
455+
,,,,,,,,,,,,7,,,,,,,,,,,True,True,,,,,,,,\r
456+
,,,,,,,,,,,,6,,,,,,,,,,,True,True,,,,,,,,\r
457+
,,,,,,,,,,,,5,,,,,,,,,,,True,True,,,,,,,,\r
458+
,,,,,,,,,,,,4,,,,,,,,,,,True,True,,,,,,,,\r
459+
,,,,,,,,,,,,3,,,,,,,,,,,True,True,,,,,,,,\r
460+
,,,,,,,,,,,,2,,,,,,,,,,,True,True,,,,,,,,\r
461+
,,,,,,,,,,,,1,,,,,,,,,,,True,True,,,,,,,,\r
462462
'''
463463

464464
snapshots['TestProjectAPI::test_project_create 1'] = {

0 commit comments

Comments
 (0)