Skip to content

Commit a965a0d

Browse files
committed
remove deleted widgets from export
1 parent 8aae8b6 commit a965a0d

4 files changed

Lines changed: 7 additions & 4 deletions

File tree

apps/analysis_framework/admin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class AFRelatedAdmin(JFModelAdmin):
5555
'__str__', linkify('analysis_framework'),
5656
)
5757
autocomplete_fields = ('analysis_framework',)
58+
list_filter = ['analysis_framework']
5859

5960
def get_queryset(self, request):
6061
return super().get_queryset(request).prefetch_related('analysis_framework')

apps/analysis_framework/dataloaders.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ def load_widgets(keys, parent, **filters):
2525
**{
2626
f'{parent}__in': keys,
2727
**filters,
28-
}
28+
},
29+
is_deleted=False
2930
).exclude(widget_id__in=Widget.DEPRECATED_TYPES)\
3031
.annotate(conditional_parent_widget_type=models.F('conditional_parent_widget__widget_id'))\
3132
.order_by('order', 'id')

apps/analysis_framework/export.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def export_af_to_csv(af, file):
2727
writer = csv.DictWriter(file, fieldnames=AF_EXPORT_COLUMNS)
2828
writer.writeheader()
2929

30-
for widget in af.widget_set.order_by('widget_id'):
30+
for widget in af.widget_set.filter(is_deleted=False).order_by('widget_id'):
3131
w_type = widget.widget_id
3232
w_title = widget.title
3333

apps/analysis_framework/serializers.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,8 @@ def perform_nested_delete_or_update(self, pks_to_delete, model_class, instance,
386386
section=self.instance, # NOTE: Adding this additional filter just to make sure
387387
pk__in=pks_to_delete
388388
)
389-
qs.delete()
389+
qs.update(is_deleted=True)
390+
# qs.delete()
390391

391392
# NOTE: This is a custom function (apps/user_resource/serializers.py::UserResourceSerializer)
392393
# This makes sure only scoped (individual AF) instances (widgets) are updated.
@@ -560,7 +561,7 @@ def _delete_old_secondary_taggings(self, af, secondary_tagging):
560561
analysis_framework=af,
561562
section__isnull=True, # NOTE: section are null for secondary taggings
562563
).exclude(pk__in=current_ids) # Exclude current provided widgets
563-
qs_to_delete.delete()
564+
qs_to_delete.update(is_deleted=True)
564565

565566
def _save_secondary_taggings(self, af, secondary_tagging):
566567
# Create secondary tagging widgets (Primary/Section widgets are created using WritableNestedModelSerializer)

0 commit comments

Comments
 (0)