Skip to content

Commit

Permalink
OpenConceptLab/ocl_issues#754 | concept/mapping versions | conditiona…
Browse files Browse the repository at this point in the history
…l include of source/collection versions in list responses
  • Loading branch information
snyaggarwal committed May 16, 2021
1 parent b632cb2 commit 45da8d3
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 2 deletions.
2 changes: 2 additions & 0 deletions core/common/constants.py
Expand Up @@ -41,6 +41,8 @@
INCLUDE_HIERARCHY_ROOT = 'includeHierarchyRoot'
INCLUDE_SUMMARY = 'includeSummary'
INCLUDE_VERIFICATION_TOKEN = 'includeVerificationToken'
INCLUDE_SOURCE_VERSIONS = 'includeSourceVersions'
INCLUDE_COLLECTION_VERSIONS = 'includeCollectionVersions'
MAPPING_LOOKUP_CONCEPTS = 'lookupConcepts'
MAPPING_LOOKUP_FROM_CONCEPT = 'lookupFromConcept'
MAPPING_LOOKUP_TO_CONCEPT = 'lookupToConcept'
Expand Down
18 changes: 17 additions & 1 deletion core/concepts/serializers.py
Expand Up @@ -4,7 +4,7 @@
from rest_framework.serializers import ModelSerializer

from core.common.constants import INCLUDE_INVERSE_MAPPINGS_PARAM, INCLUDE_MAPPINGS_PARAM, INCLUDE_EXTRAS_PARAM, \
INCLUDE_PARENT_CONCEPTS, INCLUDE_CHILD_CONCEPTS
INCLUDE_PARENT_CONCEPTS, INCLUDE_CHILD_CONCEPTS, INCLUDE_SOURCE_VERSIONS, INCLUDE_COLLECTION_VERSIONS
from core.concepts.models import Concept, LocalizedText


Expand Down Expand Up @@ -159,6 +159,22 @@ class Meta:
'previous_version_url', 'source_versions', 'collection_versions'
)

def __init__(self, *args, **kwargs):
params = get(kwargs, 'context.request.query_params')
self.query_params = params.dict() if params else dict()
self.include_source_versions = self.query_params.get(INCLUDE_SOURCE_VERSIONS) in ['true', True]
self.include_collection_versions = self.query_params.get(INCLUDE_COLLECTION_VERSIONS) in ['true', True]

try:
if not self.include_source_versions:
self.fields.pop('source_versions', None)
if not self.include_collection_versions:
self.fields.pop('collection_versions', None)
except: # pylint: disable=bare-except
pass

super().__init__(*args, **kwargs)


class ConceptDetailSerializer(ModelSerializer):
uuid = CharField(source='id', read_only=True)
Expand Down
19 changes: 18 additions & 1 deletion core/mappings/serializers.py
Expand Up @@ -3,7 +3,8 @@
from rest_framework.serializers import ModelSerializer

from core.common.constants import MAPPING_LOOKUP_CONCEPTS, MAPPING_LOOKUP_SOURCES, MAPPING_LOOKUP_FROM_CONCEPT, \
MAPPING_LOOKUP_TO_CONCEPT, MAPPING_LOOKUP_FROM_SOURCE, MAPPING_LOOKUP_TO_SOURCE, INCLUDE_EXTRAS_PARAM
MAPPING_LOOKUP_TO_CONCEPT, MAPPING_LOOKUP_FROM_SOURCE, MAPPING_LOOKUP_TO_SOURCE, INCLUDE_EXTRAS_PARAM, \
INCLUDE_SOURCE_VERSIONS, INCLUDE_COLLECTION_VERSIONS
from core.concepts.serializers import ConceptListSerializer, ConceptDetailSerializer
from core.mappings.models import Mapping
from core.sources.serializers import SourceListSerializer, SourceDetailSerializer
Expand Down Expand Up @@ -82,6 +83,22 @@ class Meta:
'previous_version_url', 'source_versions', 'collection_versions',
)

def __init__(self, *args, **kwargs):
params = get(kwargs, 'context.request.query_params')
self.query_params = params.dict() if params else dict()
self.include_source_versions = self.query_params.get(INCLUDE_SOURCE_VERSIONS) in ['true', True]
self.include_collection_versions = self.query_params.get(INCLUDE_COLLECTION_VERSIONS) in ['true', True]

try:
if not self.include_source_versions:
self.fields.pop('source_versions', None)
if not self.include_collection_versions:
self.fields.pop('collection_versions', None)
except: # pylint: disable=bare-except
pass

super().__init__(*args, **kwargs)


class MappingDetailSerializer(MappingListSerializer):
type = CharField(source='resource_type', read_only=True)
Expand Down

0 comments on commit 45da8d3

Please sign in to comment.