diff --git a/backend/metagenedb/apps/catalog/migrations/0029_source.py b/backend/metagenedb/apps/catalog/migrations/0029_source.py index 57129c3dd4bcbf16bf4b07e0e83c1c4ff9d977c0..58f7b0d07029041ef334048bd5f4e227e3926c40 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 2f034bd35da77b1acfef7c7d16b8acb03e005e66..87368ea07060677c8d064bf0ed6fda2788d0b8c1 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 0000000000000000000000000000000000000000..97930a9d66f7524a887f07996d6c039b116e8525 --- /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 fccf0734cdbc183e9613d40e48581ccbeb9bb5c3..a0d41bf4874771ecfb64ff3742fb949e60feb3de 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 7e7c820fe8f53841c47ba94f0d25230af76170cc..ba4c8ca7c416fc0af12da3782ec4fc5883819afb 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 = [];