Skip to content

Commit 1b2e3ce

Browse files
Merge pull request #1827 from IFRCGo/fix/list-final-report
Remove dref filter in active operations
2 parents 7c51bf7 + 513c7a8 commit 1b2e3ce

File tree

6 files changed

+69
-26
lines changed

6 files changed

+69
-26
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 3.2.19 on 2023-06-19 09:29
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('dref', '0060_dreffinalreport_date_of_approval'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='dref',
15+
name='is_active',
16+
field=models.BooleanField(blank=True, null=True, verbose_name='Is Active'),
17+
),
18+
]
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Generated by Django 3.2.19 on 2023-06-19 09:31
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
def update_dref(apps, schema_editor):
9+
Dref = apps.get_model('dref', 'Dref')
10+
drefs = Dref.objects.all()
11+
for dref in drefs:
12+
if hasattr(dref, 'dreffinalreport'):
13+
if dref.dreffinalreport.is_published == True:
14+
dref.is_active = False
15+
else:
16+
dref.is_active = True
17+
else:
18+
dref.is_active = True
19+
dref.save(update_fields=['is_active'])
20+
21+
dependencies = [
22+
('dref', '0061_dref_is_active'),
23+
]
24+
25+
operations = [
26+
migrations.RunPython(
27+
update_dref,
28+
reverse_code=migrations.RunPython.noop
29+
),
30+
]

dref/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,7 @@ class Status(models.IntegerChoices):
575575
risk_security_concern = models.TextField(blank=True, null=True, verbose_name=_("Risk Security Concern"))
576576
is_man_made_event = models.BooleanField(verbose_name=_("Is Man-made Event"), null=True, blank=True)
577577
__budget_file_id = None
578+
is_active = models.BooleanField(verbose_name=_("Is Active"), null=True, blank=True)
578579

579580
class Meta:
580581
verbose_name = _("dref")

dref/serializers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,7 @@ def validate_operation_timeframe(self, operation_timeframe):
424424

425425
def create(self, validated_data):
426426
validated_data["created_by"] = self.context["request"].user
427+
validated_data["is_active"] = True
427428
type_of_dref = validated_data.get("type_of_dref")
428429
if type_of_dref and type_of_dref == Dref.DrefType.ASSESSMENT:
429430
# Previous Operations

dref/test_views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1236,13 +1236,13 @@ def test_filter_active_dref(self):
12361236

12371237
# create some dref
12381238
dref_1 = DrefFactory.create(
1239-
is_published=False,
1239+
is_active=True,
12401240
type_of_dref=Dref.DrefType.ASSESSMENT,
12411241
country=country_1,
12421242
created_by=self.root_user
12431243
)
12441244
dref_2 = DrefFactory.create(
1245-
is_published=False,
1245+
is_active=True,
12461246
type_of_dref=Dref.DrefType.LOAN,
12471247
country=country_2,
12481248
created_by=self.root_user

dref/views.py

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -161,10 +161,9 @@ def get_published(self, request, pk=None, version=None):
161161
field_report.is_published = True
162162
field_report.status = Dref.Status.COMPLETED
163163
field_report.save(update_fields=["is_published", "status"])
164-
if not field_report.dref.is_final_report_created:
165-
field_report.dref.is_final_report_created = True
166-
field_report.date_of_approval = timezone.now().date()
167-
field_report.dref.save(update_fields=["is_final_report_created", "date_of_approval"])
164+
field_report.dref.is_active = False
165+
field_report.date_of_approval = timezone.now().date()
166+
field_report.dref.save(update_fields=["is_active", "date_of_approval"])
168167
serializer = DrefFinalReportSerializer(field_report, context={"request": request})
169168
return response.Response(serializer.data)
170169

@@ -251,9 +250,9 @@ def get_queryset(self):
251250
new_dref = DrefFinalReport.objects.filter(id__in=id).first()
252251
final.append(new_dref.id)
253252
if len(final):
254-
return DrefFinalReport.objects.filter(id__in=final).order_by('-created_at')
253+
return DrefFinalReport.objects.filter(id__in=final, is_published=True).order_by('-created_at')
255254
else:
256-
return DrefFinalReport.get_for(user)
255+
return DrefFinalReport.get_for(user).filter(is_published=True)
257256

258257

259258
class ActiveDrefOperationsViewSet(viewsets.ReadOnlyModelViewSet):
@@ -267,9 +266,7 @@ def get_queryset(self):
267266
dref = (
268267
Dref.objects.prefetch_related(
269268
"planned_interventions", "needs_identified", "national_society_actions", "users"
270-
)
271-
.filter(is_final_report_created=False)
272-
.distinct()
269+
).distinct()
273270
)
274271
dref_op_update = (
275272
DrefOperationalUpdate.objects.select_related(
@@ -289,17 +286,13 @@ def get_queryset(self):
289286
"users",
290287
"images",
291288
"photos",
292-
)
293-
.filter(dref__is_final_report_created=False)
294-
.order_by('-operational_update_number').distinct()
289+
).order_by('-operational_update_number').distinct()
295290
)
296291
dref_final_report = (
297292
DrefFinalReport.objects.prefetch_related(
298293
"dref__planned_interventions",
299294
"dref__needs_identified",
300-
)
301-
.filter(dref__is_final_report_created=False)
302-
.distinct()
295+
).distinct()
303296
)
304297
result_list = sorted(chain(dref, dref_op_update, dref_final_report), key=attrgetter("created_at"), reverse=True)
305298
dref_list = []
@@ -337,7 +330,7 @@ def get_queryset(self):
337330
for dref in annoatated_drefs:
338331
new_dref = Dref.objects.get(id=dref.id)
339332
dref_list.append(new_dref.id)
340-
return Dref.objects.filter(id__in=dref_list).order_by("-created_at")
333+
return Dref.objects.filter(id__in=dref_list, is_active=True).order_by("-created_at")
341334
elif not user.is_superuser:
342335
# get current user dref regions
343336
regions = [0, 1, 2, 3, 4]
@@ -349,7 +342,7 @@ def get_queryset(self):
349342
Dref.objects.prefetch_related(
350343
"planned_interventions", "needs_identified", "national_society_actions", "users"
351344
)
352-
.filter(country__region=region, is_final_report_created=False)
345+
.filter(country__region=region)
353346
.distinct()
354347
)
355348
dref_op_update = (
@@ -371,15 +364,15 @@ def get_queryset(self):
371364
"images",
372365
"photos",
373366
)
374-
.filter(country__region=region, dref__is_final_report_created=False)
367+
.filter(country__region=region)
375368
.order_by('-operational_update_number').distinct()
376369
)
377370
dref_final_report = (
378371
DrefFinalReport.objects.prefetch_related(
379372
"dref__planned_interventions",
380373
"dref__needs_identified",
381374
)
382-
.filter(country__region=region, dref__is_final_report_created=False)
375+
.filter(country__region=region)
383376
.distinct()
384377
)
385378
result_list = sorted(chain(dref, dref_op_update, dref_final_report), key=attrgetter("created_at"), reverse=True)
@@ -421,11 +414,11 @@ def get_queryset(self):
421414
new_dref = Dref.objects.get(id=dref.id)
422415
dref_list.append(new_dref.id)
423416
if len(dref_list):
424-
return Dref.objects.filter(id__in=dref_list).order_by("-created_at")
417+
return Dref.objects.filter(id__in=dref_list, is_active=True).order_by("-created_at")
425418
else:
426-
dref = Dref.get_for(user).filter(is_final_report_created=False)
427-
dref_op_update = DrefOperationalUpdate.get_for(user).filter(dref__is_final_report_created=False)
428-
dref_final_report = DrefFinalReport.get_for(user).filter(dref__is_final_report_created=False)
419+
dref = Dref.get_for(user)
420+
dref_op_update = DrefOperationalUpdate.get_for(user)
421+
dref_final_report = DrefFinalReport.get_for(user)
429422
result_list = sorted(chain(dref, dref_op_update, dref_final_report), key=attrgetter("created_at"), reverse=True)
430423
dref_list = []
431424
for data in result_list:
@@ -462,7 +455,7 @@ def get_queryset(self):
462455
for dref in annoatated_drefs:
463456
new_dref = Dref.objects.get(id=dref.id)
464457
dref_list.append(new_dref.id)
465-
return Dref.objects.filter(id__in=dref_list).order_by("-created_at")
458+
return Dref.objects.filter(id__in=dref_list, is_active=True).order_by("-created_at")
466459

467460

468461
class DrefShareView(views.APIView):

0 commit comments

Comments
 (0)