From 9d65ac11f7e3f75d943dde5199b793c4f28b92b2 Mon Sep 17 00:00:00 2001 From: Kenzo-Hugo Hillion <kenzo-hugo.hillion1@pasteur.fr> Date: Thu, 14 Nov 2019 16:38:30 +0100 Subject: [PATCH] add endpoint to obtain detailed info from kegg through togows --- backend/metagenedb/api/external/urls.py | 6 +++--- .../metagenedb/api/external/views/__init__.py | 1 + .../metagenedb/api/external/views/togows.py | 21 +++++++++++++------ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/backend/metagenedb/api/external/urls.py b/backend/metagenedb/api/external/urls.py index 27a4b09..acc8c56 100644 --- a/backend/metagenedb/api/external/urls.py +++ b/backend/metagenedb/api/external/urls.py @@ -1,7 +1,7 @@ -from django.conf.urls import url +from django.urls import path -from metagenedb.api.external.views.togows import ListUsers +from metagenedb.api.external.views import KeggInfoTogows urlpatterns = [ - url(r'^togows/$', ListUsers.as_view()), + path(r'togows/<kegg_id>', KeggInfoTogows.as_view(), name='kegg-info'), ] diff --git a/backend/metagenedb/api/external/views/__init__.py b/backend/metagenedb/api/external/views/__init__.py index e69de29..fb67f87 100644 --- a/backend/metagenedb/api/external/views/__init__.py +++ b/backend/metagenedb/api/external/views/__init__.py @@ -0,0 +1 @@ +from .togows import KeggInfoTogows # noqa diff --git a/backend/metagenedb/api/external/views/togows.py b/backend/metagenedb/api/external/views/togows.py index c09b93e..9fc60b1 100644 --- a/backend/metagenedb/api/external/views/togows.py +++ b/backend/metagenedb/api/external/views/togows.py @@ -1,16 +1,25 @@ +from bioapi.togows import TogoWSEntryAPI +from requests.exceptions import HTTPError + from rest_framework.views import APIView from rest_framework.response import Response -from django.contrib.auth.models import User +from rest_framework.status import (HTTP_200_OK, HTTP_404_NOT_FOUND) -class ListUsers(APIView): +class KeggInfoTogows(APIView): """ - View to list all users in the system. + Obtain detailed information about KEGG orthology entry. """ - def get(self, request, format=None): + def get(self, request, kegg_id=None): """ Return a list of all users. """ - usernames = [user.username for user in User.objects.all()] - return Response(usernames) + kegg_api = TogoWSEntryAPI("kegg-orthology") + try: + content = kegg_api.get(kegg_id)[0] + status = HTTP_200_OK + except HTTPError as http_err: + content = [{'error': str(http_err)}] + status = HTTP_404_NOT_FOUND + return Response(content, status=status) -- GitLab