Skip to content

Commit 8aa916e

Browse files
Removed html form form the browsable api
1 parent d92da63 commit 8aa916e

File tree

4 files changed

+39
-65
lines changed

4 files changed

+39
-65
lines changed

eap/serializers.py

Lines changed: 13 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
CountrySerializer,
99
MiniDistrictSerializer,
1010
)
11+
from api.models import District
1112

1213
from eap.models import (
1314
EAP,
@@ -60,7 +61,7 @@ class Meta:
6061
read_only_fields = ('early_action',)
6162

6263

63-
class PrioritizedRiskSerializer(serializers.ModelSerializer):
64+
class PrioritizedRiskSerializer(serializers.ModelSerializer):
6465
class Meta:
6566
model = PrioritizedRisk
6667
fields = ('__all__')
@@ -118,74 +119,26 @@ class EAPSerializer(
118119

119120
class Meta:
120121
model = EAP
121-
fields = [
122-
"id",
123-
"created_at",
124-
"modified_at",
125-
"eap_number",
126-
"approval_date",
127-
"status",
128-
"operational_timeframe",
129-
"lead_time",
130-
"eap_timeframe",
131-
"num_of_people",
132-
"total_budget",
133-
"readiness_budget",
134-
"pre_positioning_budget",
135-
"early_action_budget",
136-
"trigger_statement",
137-
"overview",
138-
"originator_name",
139-
"originator_title",
140-
"originator_email",
141-
"originator_phone",
142-
"nsc_name",
143-
"nsc_title",
144-
"nsc_email",
145-
"nsc_phone",
146-
"ifrc_focal_name",
147-
"ifrc_focal_title",
148-
"ifrc_focal_email",
149-
"ifrc_focal_phone",
150-
"created_by",
151-
"created_by_details",
152-
"modified_by",
153-
"modified_by_details",
154-
"country",
155-
"country_details",
156-
# "districts",
157-
"districts_details",
158-
"disaster_type",
159-
"hazard_type_details",
160-
"status_display",
161-
"references",
162-
"partners",
163-
"documents",
164-
"documents_details",
165-
"early_actions",
166-
]
167-
168-
def validate(self, validated_data):
169-
if self.partial:
170-
return validated_data
171-
districts = validated_data.get('districts', None)
172-
if districts:
122+
fields = ('__all__')
123+
124+
def validate(self, data):
125+
if 'districts' in data:
126+
districts = data.get('districts') or []
127+
country = data.get('country')
173128
for district in districts:
174-
if district.country != validated_data['country']:
129+
if district.country != country:
175130
raise serializers.ValidationError({
176-
'district': ugettext('Different districts found for given country')
131+
'districts': ugettext('Different districts found for given country')
177132
})
178-
return validated_data
133+
return data
179134

180135
def create(self, validated_data):
181136
validated_data['created_by'] = self.context['request'].user
182-
eap = super().create(validated_data)
183-
return eap
137+
return super().create(validated_data)
184138

185139
def update(self, instance, validated_data):
186140
validated_data['modified_by'] = self.context['request'].user
187-
eap = super().update(instance, validated_data)
188-
return eap
141+
return super().update(instance, validated_data)
189142

190143

191144
class EAPActivationSerializer(serializers.ModelSerializer):

eap/views.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
# Create your views here.
2-
32
from rest_framework import (
43
views,
54
viewsets,
@@ -57,16 +56,16 @@ class EAPViewSet(viewsets.ModelViewSet):
5756
permission_classes = [permissions.IsAuthenticated]
5857

5958
def get_queryset(self):
60-
# return EAP.objects.all()
61-
return EAP.objects.all().order_by(
59+
result = EAP.objects.all().order_by(
6260
'-created_at'
6361
).select_related(
6462
'country',
6563
'created_by',
66-
# 'modified_by',
64+
'modified_by',
6765
'disaster_type',
6866
).prefetch_related(
6967
'districts',
68+
'districts__country',
7069
'documents',
7170
'early_actions',
7271
'early_actions__action',
@@ -75,6 +74,7 @@ def get_queryset(self):
7574
'eap_reference',
7675
'eap_partner',
7776
)
77+
return result
7878

7979

8080
class EAPActivationReportViewSet(viewsets.ModelViewSet):

main/settings.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,8 @@
176176
),
177177
'DEFAULT_RENDERER_CLASSES': (
178178
'rest_framework.renderers.JSONRenderer',
179-
'rest_framework.renderers.BrowsableAPIRenderer',
179+
# 'rest_framework.renderers.BrowsableAPIRenderer', # it is comment out to reduce load time in browsable api
180+
'main.utils.BrowsableAPIRendererWithRawForms', # it is added to reduce load time in browsable api
180181
'rest_framework_csv.renderers.PaginatedCSVRenderer',
181182
),
182183
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',

main/utils.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from collections import defaultdict
22

3+
from rest_framework.renderers import BrowsableAPIRenderer
4+
35

46
def is_tableau(request):
57
""" Checking the request for the 'tableau' parameter
@@ -24,3 +26,21 @@ def get_merged_items_by_fields(items, fields, seperator=', '):
2426
field: seperator.join(data[field])
2527
for field in fields
2628
}
29+
30+
31+
class BrowsableAPIRendererWithRawForms(BrowsableAPIRenderer): # It is done to reduce load time in browsable api.
32+
"""
33+
Renders the browsable api, but excludes the normal forms.
34+
Only show raw form.
35+
"""
36+
37+
def get_context(self, *args, **kwargs):
38+
ctx = super().get_context(*args, **kwargs)
39+
ctx['post_form'] = None
40+
return ctx
41+
42+
def get_rendered_html_form(self, data, view, method, request):
43+
"""Why render _any_ forms at all. This method should return
44+
rendered HTML, so let's simply return an empty string.
45+
"""
46+
return ""

0 commit comments

Comments
 (0)