Skip to content

Commit

Permalink
Issue-445 | Added fields for fhir support in serializers
Browse files Browse the repository at this point in the history
  • Loading branch information
snyaggarwal committed Nov 23, 2020
1 parent a5f2f9a commit 3f8457e
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 9 deletions.
27 changes: 24 additions & 3 deletions core/collections/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ class Meta:

def prepare_object(self, validated_data, instance=None):
collection = instance if instance else Collection()
collection.canonical_url = validated_data.get('canonical_url', collection.canonical_url)
collection.version = validated_data.get('version', collection.version) or HEAD
collection.mnemonic = validated_data.get(self.Meta.lookup_field, collection.mnemonic)
collection.name = validated_data.get('name', collection.name)
Expand Down Expand Up @@ -86,6 +85,17 @@ def prepare_object(self, validated_data, instance=None):
collection.organization_id = validated_data.get('organization_id', collection.organization_id)
collection.user = validated_data.get('user', collection.user)
collection.organization = validated_data.get('organization', collection.organization)

collection.canonical_url = validated_data.get('canonical_url', collection.canonical_url)
collection.identifier = validated_data.get('identifier', collection.identifier)
collection.publisher = validated_data.get('publisher', collection.publisher)
collection.contact = validated_data.get('contact', collection.contact)
collection.jurisdiction = validated_data.get('jurisdiction', collection.jurisdiction)
collection.purpose = validated_data.get('purpose', collection.purpose)
collection.copyright = validated_data.get('copyright', collection.copyright)
collection.immutable = validated_data.get('immutable', collection.immutable)
collection.revision_date = validated_data.get('revision_date', collection.revision_date)

return collection

def update(self, instance, validated_data):
Expand Down Expand Up @@ -131,6 +141,12 @@ class CollectionCreateSerializer(CollectionCreateOrUpdateSerializer):
user_id = PrimaryKeyRelatedField(required=False, queryset=UserProfile.objects.all(), allow_null=True)
organization_id = PrimaryKeyRelatedField(required=False, queryset=Organization.objects.all(), allow_null=True)
version = CharField(default=HEAD)
identifier = JSONField(required=False, allow_null=True)
contact = JSONField(required=False, allow_null=True)
jurisdiction = JSONField(required=False, allow_null=True)
publisher = CharField(required=False, allow_null=True, allow_blank=True)
purpose = CharField(required=False, allow_null=True, allow_blank=True)
copyright = CharField(required=False, allow_null=True, allow_blank=True)

def create(self, validated_data):
collection = self.prepare_object(validated_data)
Expand Down Expand Up @@ -171,8 +187,11 @@ class Meta:
'custom_validation_schema', 'public_access', 'default_locale', 'supported_locales', 'website',
'url', 'owner', 'owner_type', 'owner_url', 'versions',
'created_on', 'updated_on', 'created_by', 'updated_by', 'extras', 'external_id', 'versions_url',
'version', 'concepts_url', 'mappings_url', 'active_concepts', 'active_mappings', 'canonical_url',
'version', 'concepts_url', 'mappings_url', 'active_concepts', 'active_mappings',
'custom_resources_linked_source', 'repository_type', 'preferred_source', 'references',
'canonical_url', 'identifier', 'publisher', 'contact', 'jurisdiction', 'purpose', 'copyright',
'immutable', 'revision_date',

)

def get_references(self, obj):
Expand Down Expand Up @@ -207,7 +226,9 @@ class Meta:
'custom_validation_schema', 'public_access', 'default_locale', 'supported_locales', 'website',
'url', 'owner', 'owner_type', 'owner_url', 'versions', 'version_url', 'previous_version_url',
'created_on', 'updated_on', 'created_by', 'updated_by', 'extras', 'external_id', 'version',
'version', 'concepts_url', 'mappings_url', 'is_processing', 'canonical_url', 'released', 'retired',
'version', 'concepts_url', 'mappings_url', 'is_processing', 'released', 'retired',
'canonical_url', 'identifier', 'publisher', 'contact', 'jurisdiction', 'purpose', 'copyright',
'immutable', 'revision_date',
)


Expand Down
6 changes: 4 additions & 2 deletions core/integration_tests/tests_sources.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@ def test_post_201(self):
'custom_validation_schema', 'public_access', 'default_locale', 'supported_locales', 'website',
'url', 'owner', 'owner_type', 'owner_url', 'versions', 'created_on', 'updated_on', 'created_by',
'updated_by', 'extras', 'external_id', 'versions_url', 'version', 'concepts_url', 'mappings_url',
'active_concepts', 'active_mappings', 'canonical_url',
'active_concepts', 'active_mappings', 'canonical_url', 'identifier', 'publisher', 'contact',
'jurisdiction', 'purpose', 'copyright', 'content_type', 'revision_date',
]
)
source = Source.objects.last()
Expand Down Expand Up @@ -151,7 +152,8 @@ def test_put_200(self):
'custom_validation_schema', 'public_access', 'default_locale', 'supported_locales', 'website',
'url', 'owner', 'owner_type', 'owner_url', 'versions', 'created_on', 'updated_on', 'created_by',
'updated_by', 'extras', 'external_id', 'versions_url', 'version', 'concepts_url', 'mappings_url',
'active_concepts', 'active_mappings', 'canonical_url',
'active_concepts', 'active_mappings', 'canonical_url', 'identifier', 'publisher', 'contact',
'jurisdiction', 'purpose', 'copyright', 'content_type', 'revision_date',
]
)
source = Source.objects.last()
Expand Down
29 changes: 25 additions & 4 deletions core/sources/serializers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from django.core.validators import RegexValidator
from rest_framework.fields import CharField, IntegerField, DateTimeField, ChoiceField, JSONField, ListField, \
BooleanField
BooleanField, DateField
from rest_framework.relations import PrimaryKeyRelatedField
from rest_framework.serializers import ModelSerializer

Expand Down Expand Up @@ -54,7 +54,6 @@ class Meta:

def prepare_object(self, validated_data, instance=None):
source = instance if instance else Source()
source.canonical_url = validated_data.get('canonical_url', source.canonical_url)
source.version = validated_data.get('version', source.version) or HEAD
source.mnemonic = validated_data.get(self.Meta.lookup_field, source.mnemonic)
source.name = validated_data.get('name', source.name)
Expand Down Expand Up @@ -82,6 +81,17 @@ def prepare_object(self, validated_data, instance=None):
source.user = validated_data.get('user', source.user)
source.organization = validated_data.get('organization', source.organization)
source.released = validated_data.get('released', source.released)

source.canonical_url = validated_data.get('canonical_url', source.canonical_url)
source.identifier = validated_data.get('identifier', source.identifier)
source.publisher = validated_data.get('publisher', source.publisher)
source.contact = validated_data.get('contact', source.contact)
source.jurisdiction = validated_data.get('jurisdiction', source.jurisdiction)
source.purpose = validated_data.get('purpose', source.purpose)
source.copyright = validated_data.get('copyright', source.copyright)
source.content_type = validated_data.get('content_type', source.content_type)
source.revision_date = validated_data.get('revision_date', source.revision_date)

return source

def update(self, instance, validated_data):
Expand Down Expand Up @@ -124,6 +134,13 @@ class SourceCreateSerializer(SourceCreateOrUpdateSerializer):
user_id = PrimaryKeyRelatedField(required=False, queryset=UserProfile.objects.all(), allow_null=True)
organization_id = PrimaryKeyRelatedField(required=False, queryset=Organization.objects.all(), allow_null=True)
version = CharField(default=HEAD)
identifier = JSONField(required=False, allow_null=True)
contact = JSONField(required=False, allow_null=True)
jurisdiction = JSONField(required=False, allow_null=True)
publisher = CharField(required=False, allow_null=True, allow_blank=True)
purpose = CharField(required=False, allow_null=True, allow_blank=True)
copyright = CharField(required=False, allow_null=True, allow_blank=True)
content_type = CharField(required=False, allow_null=True, allow_blank=True)

def create(self, validated_data):
source = self.prepare_object(validated_data)
Expand Down Expand Up @@ -163,7 +180,9 @@ class Meta:
'custom_validation_schema', 'public_access', 'default_locale', 'supported_locales', 'website',
'url', 'owner', 'owner_type', 'owner_url', 'versions',
'created_on', 'updated_on', 'created_by', 'updated_by', 'extras', 'external_id', 'versions_url',
'version', 'concepts_url', 'mappings_url', 'active_concepts', 'active_mappings', 'canonical_url'
'version', 'concepts_url', 'mappings_url', 'active_concepts', 'active_mappings',
'canonical_url', 'identifier', 'publisher', 'contact', 'jurisdiction', 'purpose', 'copyright',
'content_type', 'revision_date',
)


Expand Down Expand Up @@ -195,5 +214,7 @@ class Meta:
'custom_validation_schema', 'public_access', 'default_locale', 'supported_locales', 'website',
'url', 'owner', 'owner_type', 'owner_url', 'versions', 'retired', 'version_url', 'previous_version_url',
'created_on', 'updated_on', 'created_by', 'updated_by', 'extras', 'external_id',
'version', 'concepts_url', 'mappings_url', 'is_processing', 'released', 'canonical_url', 'released',
'version', 'concepts_url', 'mappings_url', 'is_processing', 'released',
'canonical_url', 'identifier', 'publisher', 'contact', 'jurisdiction', 'purpose', 'copyright',
'content_type', 'revision_date',
)

0 comments on commit 3f8457e

Please sign in to comment.