From b1d5b335ac8262f6de63aa751b6265f35d2a740a Mon Sep 17 00:00:00 2001 From: Kenzo-Hugo Hillion <hillion.kenzo@posteo.net> Date: Tue, 13 Apr 2021 16:48:34 +0200 Subject: [PATCH] update serializer and fix list on frontend --- .../metagenedb/apps/catalog/migrations/0029_source.py | 2 +- backend/metagenedb/apps/catalog/serializers/gene.py | 9 ++++++++- backend/metagenedb/apps/catalog/serializers/source.py | 11 +++++++++++ frontend/src/views/genes/genes.html | 9 ++++++++- frontend/src/views/genes/genes.js | 4 ++++ 5 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 backend/metagenedb/apps/catalog/serializers/source.py diff --git a/backend/metagenedb/apps/catalog/migrations/0029_source.py b/backend/metagenedb/apps/catalog/migrations/0029_source.py index 57129c3..58f7b0d 100644 --- a/backend/metagenedb/apps/catalog/migrations/0029_source.py +++ b/backend/metagenedb/apps/catalog/migrations/0029_source.py @@ -15,7 +15,7 @@ def create_sources(apps, schema_editor): { 'name': 'IGC-9.9M', 'url': 'https://db.cngb.org/microbiome/genecatalog/genecatalog_human/', - 'doi': '10.1038/s41467-020-14677-3' + 'doi': '10.1038/nbt.2942' }, ] for item in items_to_create: diff --git a/backend/metagenedb/apps/catalog/serializers/gene.py b/backend/metagenedb/apps/catalog/serializers/gene.py index 2f034bd..87368ea 100644 --- a/backend/metagenedb/apps/catalog/serializers/gene.py +++ b/backend/metagenedb/apps/catalog/serializers/gene.py @@ -3,11 +3,12 @@ import traceback from rest_framework import serializers from rest_framework.utils import model_meta -from metagenedb.apps.catalog.models import Function, Gene, GeneFunction, Taxonomy +from metagenedb.apps.catalog.models import Function, Gene, GeneFunction, Source, Taxonomy from .asymetricslugrelatedfield import AsymetricSlugRelatedField from .bulk_list import BulkListSerializer from .function import FunctionSerializer +from .source import SourceSerializer from .taxonomy import SimpleTaxonomySerializer @@ -65,6 +66,12 @@ class GeneSerializer(serializers.ModelSerializer): slug_field='tax_id', required=False, ) + source = AsymetricSlugRelatedField.from_serializer( + SourceSerializer, + queryset=Source.objects.all(), + slug_field='name', + required=False, + ) class Meta: model = Gene diff --git a/backend/metagenedb/apps/catalog/serializers/source.py b/backend/metagenedb/apps/catalog/serializers/source.py new file mode 100644 index 0000000..97930a9 --- /dev/null +++ b/backend/metagenedb/apps/catalog/serializers/source.py @@ -0,0 +1,11 @@ +from rest_framework import serializers +from metagenedb.apps.catalog.models import Source + + +class SourceSerializer(serializers.ModelSerializer): + + class Meta: + model = Source + fields = ( + 'name', 'url', 'doi' + ) diff --git a/frontend/src/views/genes/genes.html b/frontend/src/views/genes/genes.html index fccf073..a0d41bf 100644 --- a/frontend/src/views/genes/genes.html +++ b/frontend/src/views/genes/genes.html @@ -337,7 +337,14 @@ </v-btn> </template> </td> - <td class="text-xs">{{ props.item.source }}</td> + <td class="text-xs"> + {{ props.item.source }} + <v-btn :href="props.item.source_url" icon flat small target="_blank" class="secondary--text mt-1 ml-0" v-if="props.item.source"> + <v-icon small> + open_in_new + </v-icon> + </v-btn> + </td> </template> </v-data-table> </v-list> diff --git a/frontend/src/views/genes/genes.js b/frontend/src/views/genes/genes.js index 7e7c820..ba4c8ca 100644 --- a/frontend/src/views/genes/genes.js +++ b/frontend/src/views/genes/genes.js @@ -233,6 +233,10 @@ export default { item.tax_url = ncbiTaxUrl + item.taxonomy.tax_id; item.taxonomy = `${item.taxonomy.name} (${item.taxonomy.rank})`; } + if (item.source) { + item.source_url = item.source.url; + item.source = item.source.name; + } if (item.functions) { const { functions } = item; item.keggs = []; -- GitLab