Skip to content

Commit 11e3fa5

Browse files
committed
OpenConceptLab/ocl_issues#22 | Retired concepts and/or mappings are now excluded from exports
1 parent da19332 commit 11e3fa5

File tree

4 files changed

+15
-9
lines changed

4 files changed

+15
-9
lines changed

core/collections/views.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
CollectionVersionSummaryDetailSerializer, CollectionReferenceDetailSerializer)
3232
from core.collections.utils import is_version_specified
3333
from core.common.constants import (
34-
HEAD, RELEASED_PARAM, PROCESSING_PARAM, OK_MESSAGE, NOT_FOUND, MUST_SPECIFY_EXTRA_PARAM_IN_BODY
34+
HEAD, INCLUDE_RETIRED_PARAM, RELEASED_PARAM, PROCESSING_PARAM, OK_MESSAGE, NOT_FOUND, MUST_SPECIFY_EXTRA_PARAM_IN_BODY
3535
)
3636
from core.common.mixins import (
3737
ConceptDictionaryCreateMixin, ListWithHeadersMixin, ConceptDictionaryUpdateMixin,
@@ -594,7 +594,8 @@ class CollectionVersionExportView(ConceptContainerExportMixin, CollectionVersion
594594
def handle_export_version(self):
595595
version = self.get_object()
596596
try:
597-
export_collection.delay(version.id)
597+
include_retired = parse_boolean_query_param(self.request, INCLUDE_RETIRED_PARAM)
598+
export_collection.delay(version.id, include_retired)
598599
return status.HTTP_202_ACCEPTED
599600
except AlreadyQueued:
600601
return status.HTTP_409_CONFLICT

core/common/tasks.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def delete_organization(org_id):
4141

4242

4343
@app.task(base=QueueOnce, bind=True)
44-
def export_source(self, version_id):
44+
def export_source(self, version_id, include_retired=True):
4545
from core.sources.models import Source
4646
logger.info('Finding source version...')
4747

@@ -56,14 +56,14 @@ def export_source(self, version_id):
5656
version.add_processing(self.request.id)
5757
try:
5858
logger.info('Found source version %s. Beginning export...', version.version)
59-
write_export_file(version, 'source', 'core.sources.serializers.SourceVersionExportSerializer', logger)
59+
write_export_file(version, include_retired, 'source', 'core.sources.serializers.SourceVersionExportSerializer', logger)
6060
logger.info('Export complete!')
6161
finally:
6262
version.remove_processing(self.request.id)
6363

6464

6565
@app.task(base=QueueOnce, bind=True)
66-
def export_collection(self, version_id):
66+
def export_collection(self, version_id, include_retired=True):
6767
from core.collections.models import Collection
6868
logger.info('Finding collection version...')
6969

@@ -79,7 +79,7 @@ def export_collection(self, version_id):
7979
try:
8080
logger.info('Found collection version %s. Beginning export...', version.version)
8181
write_export_file(
82-
version, 'collection', 'core.collections.serializers.CollectionVersionExportSerializer', logger
82+
version, include_retired, 'collection', 'core.collections.serializers.CollectionVersionExportSerializer', logger
8383
)
8484
logger.info('Export complete!')
8585
finally:

core/common/utils.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ def get_class(kls):
191191

192192

193193
def write_export_file(
194-
version, resource_type, resource_serializer_type, logger
194+
version, include_retired, resource_type, resource_serializer_type, logger
195195
): # pylint: disable=too-many-statements,too-many-locals,too-many-branches
196196
cwd = cd_temp()
197197
logger.info('Writing export file to tmp directory: %s' % cwd)
@@ -207,6 +207,10 @@ def write_export_file(
207207
batch_size = 100
208208
concepts_qs = version.concepts
209209
mappings_qs = version.mappings
210+
if not include_retired:
211+
concepts_qs = concepts_qs.filter(retired=False)
212+
mappings_qs = mappings_qs.filter(retired=False)
213+
210214
is_collection = resource_type == 'collection'
211215
if not is_collection:
212216
concepts_qs = concepts_qs.filter(is_active=True)

core/sources/views.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from rest_framework.response import Response
1515

1616
from core.client_configs.views import ResourceClientConfigsView
17-
from core.common.constants import HEAD, RELEASED_PARAM, PROCESSING_PARAM, NOT_FOUND, MUST_SPECIFY_EXTRA_PARAM_IN_BODY
17+
from core.common.constants import HEAD, INCLUDE_RETIRED_PARAM, RELEASED_PARAM, PROCESSING_PARAM, NOT_FOUND, MUST_SPECIFY_EXTRA_PARAM_IN_BODY
1818
from core.common.mixins import ListWithHeadersMixin, ConceptDictionaryCreateMixin, ConceptDictionaryUpdateMixin, \
1919
ConceptContainerExportMixin, ConceptContainerProcessingMixin
2020
from core.common.permissions import CanViewConceptDictionary, CanEditConceptDictionary, HasAccessToVersionedObject, \
@@ -365,7 +365,8 @@ class SourceVersionExportView(ConceptContainerExportMixin, SourceVersionBaseView
365365
def handle_export_version(self):
366366
version = self.get_object()
367367
try:
368-
export_source.delay(version.id)
368+
include_retired = parse_boolean_query_param(self.request, INCLUDE_RETIRED_PARAM)
369+
export_source.delay(version.id, include_retired)
369370
return status.HTTP_202_ACCEPTED
370371
except AlreadyQueued:
371372
return status.HTTP_409_CONFLICT

0 commit comments

Comments
 (0)