From dbc036e685b825220d3d199d310492015857242c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20=20MENAGER?= <herve.menager@pasteur.fr> Date: Sun, 13 Jan 2019 22:10:11 +0100 Subject: [PATCH] convert compound_card view function to CompoundDetailView class --- ippisite/ippidb/tests.py | 4 ++-- ippisite/ippidb/urls.py | 2 +- ippisite/ippidb/views/compound_query.py | 24 ++++++++++++++---------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/ippisite/ippidb/tests.py b/ippisite/ippidb/tests.py index 52c7ea43..ea1a73f8 100644 --- a/ippisite/ippidb/tests.py +++ b/ippisite/ippidb/tests.py @@ -298,7 +298,7 @@ class QuestionCompoundViews(TestCase): The detail view of an existing compound returns a 200 """ - url = reverse('compound_card', args=(1,)) + url = reverse('compound_card', kwargs={'pk':1}) response = self.client.get(url) self.assertEqual(response.status_code, 200) @@ -307,7 +307,7 @@ class QuestionCompoundViews(TestCase): The detail view of a non-existing compound returns a 404 not found. """ - url = reverse('compound_card', args=(9,)) + url = reverse('compound_card', kwargs={'pk':9}) response = self.client.get(url) self.assertEqual(response.status_code, 404) diff --git a/ippisite/ippidb/urls.py b/ippisite/ippidb/urls.py index 7b69861f..0a37de2e 100644 --- a/ippisite/ippidb/urls.py +++ b/ippisite/ippidb/urls.py @@ -17,7 +17,7 @@ urlpatterns = [ url(r'^about/general/$', views.general, name='general'), url(r'^compounds/$', views.CompoundListView.as_view(), name='compound_list'), url(r'^compounds/IPPIDB-(?P<compound_id>\w+)$', views.CompoundCardBDCHEMRedirectView.as_view(), name='redirect_compound_card'), - url(r'^compounds/(?P<compound_id>\w+)$', views.compound_card, name='compound_card'), + url(r'^compounds/(?P<pk>\w+)$', views.CompoundDetailView.as_view(), name='compound_card'), url(r'^tutorials$', views.tutorials, name='tutorials'), url(r'^contribute$', views.contribute, name='contribute'), url(r'^admin-session$', views.adminSession, name='admin-session'), diff --git a/ippisite/ippidb/views/compound_query.py b/ippisite/ippidb/views/compound_query.py index 9921ef9d..da4d4985 100644 --- a/ippisite/ippidb/views/compound_query.py +++ b/ippisite/ippidb/views/compound_query.py @@ -10,6 +10,7 @@ from django.shortcuts import render from django.urls import reverse from django.http import Http404, JsonResponse from django.views.generic.list import ListView +from django.views.generic.detail import DetailView from django.views.generic.base import RedirectView from ippidb.utils import mol2smi, smi2mol @@ -497,18 +498,21 @@ class CompoundListView(ListView): # return queryset return qs +class CompoundDetailView(DetailView): + """ + Compound detail view + """ -def compound_card(request, compound_id): - try: - compound = Compound.objects.get(id=int(compound_id)) - except Compound.DoesNotExist: - raise Http404("No compound data for %s" % (compound_id)) - le_lle_biplot_data = LeLleBiplotData.objects.get().le_lle_biplot_data - pca_biplot = json.loads(PcaBiplotData.objects.get().pca_biplot_data) - pca_biplot_data = json.dumps(pca_biplot['data']) - pca_biplot_cc = pca_biplot['correlation_circle'] - return render(request, 'compound_card.html', {'compound': compound, 'le_lle_biplot_data': le_lle_biplot_data, 'pca_biplot_data': pca_biplot_data, 'pca_biplot_cc': pca_biplot_cc}) + model = Compound + template_name = "compound_card.html" + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['le_lle_biplot_data'] = LeLleBiplotData.objects.get().le_lle_biplot_data + pca_biplot = json.loads(PcaBiplotData.objects.get().pca_biplot_data) + context['pca_biplot_data'] = json.dumps(pca_biplot['data']) + context['pca_biplot_cc'] = pca_biplot['correlation_circle'] + return context class CompoundCardBDCHEMRedirectView(RedirectView): -- GitLab