From 0db00446a608493c5e8d6ef42c9fc329e1c94935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20=20MENAGER?= <herve.menager@pasteur.fr> Date: Thu, 30 Nov 2017 22:55:29 +0100 Subject: [PATCH] add disease filter in compound view Former-commit-id: d0f86f34e2ca979d310a4b3e6e1a2a91feac8fb4 --- ippisite/ippidb/templates/compound_list.html | 23 ++++++++++++++++++-- ippisite/ippidb/views.py | 12 ++++++++-- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/ippisite/ippidb/templates/compound_list.html b/ippisite/ippidb/templates/compound_list.html index ed096494..07d0e1f0 100644 --- a/ippisite/ippidb/templates/compound_list.html +++ b/ippisite/ippidb/templates/compound_list.html @@ -40,7 +40,7 @@ {% for ppi in selected_ppis %} <div class="form-check col-12"> <label class="form-check-label"> - <input class="form-check-input text-right" type="checkbox" checked value="{{ ppi.id }}" onchange="this.form.submit()" name="ppi" style="width: auto; margin-right: inherit!;"> + <input class="form-check-input text-right" type="checkbox" checked value="{{ ppi.id }}" onchange="this.form.submit()" name="ppi" style="width: auto; margin-right: 1em;"> {{ ppi.name }} </label> </div> @@ -48,12 +48,31 @@ {% for ppi in ppis|slice:":5" %} <div class="form-check col-12"> <label class="form-check-label"> - <input class="form-check-input text-right" type="checkbox" value="{{ ppi.id }}" onchange="this.form.submit()" name="ppi" style="width: auto; margin-right: inherit!;"> + <input class="form-check-input text-right" type="checkbox" value="{{ ppi.id }}" onchange="this.form.submit()" name="ppi" style="width: auto; margin-right: 1em;"> {{ ppi.name }} </label> </div> {% endfor %} </fieldset> + <fieldset class="form-group row border border-info m-2"> + <div class="bg-info col-12"><legend>Disease</legend></div> + {% for disease in selected_diseases %} + <div class="form-check col-12"> + <label class="form-check-label"> + <input class="form-check-input text-right" type="checkbox" checked value="{{ disease.id }}" onchange="this.form.submit()" name="disease" style="width: auto; margin-right: 1em;"> + {{ disease.name }} + </label> + </div> + {% endfor %} + {% for disease in diseases|slice:":5" %} + <div class="form-check col-12"> + <label class="form-check-label"> + <input class="form-check-input text-right" type="checkbox" value="{{ disease.id }}" onchange="this.form.submit()" name="disease" style="width: auto; margin-right: 1em;"> + {{ disease.name }} + </label> + </div> + {% endfor %} + </fieldset> </form> </div> <main class="col-12 col-md-9 col-xl-10 pl-md-5 bd-content" role="main"> diff --git a/ippisite/ippidb/views.py b/ippisite/ippidb/views.py index e62f82c2..c571bcaf 100644 --- a/ippisite/ippidb/views.py +++ b/ippisite/ippidb/views.py @@ -5,7 +5,7 @@ from django.http import HttpResponseRedirect, Http404 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from formtools.wizard.views import SessionWizardView, NamedUrlSessionWizardView from .forms import IdForm, BibliographyForm, PDBForm, ProteinForm, ProteinDomainComplexTypeForm, ProteinDomainComplexForm, PpiForm, PpiComplexForm, ProteinFormSet,ActivityForm, CompoundForm, CompoundFormSet -from .models import Protein, Bibliography, ProteinDomainComplex, RefCompoundBiblio, TestActivityDescription, Compound, Ppi +from .models import Protein, Bibliography, ProteinDomainComplex, RefCompoundBiblio, TestActivityDescription, Compound, Ppi, Disease from .ws import get_pdb_uniprot_mapping @@ -193,8 +193,12 @@ def compound_list(request): # if filtering on "action on PPI" if request.GET.get('ppi'): compounds = compounds.filter(compoundaction__ppi__id__in=request.GET.getlist('ppi')) + if request.GET.get('disease'): + compounds = compounds.filter(compoundaction__ppi__diseases__id__in=request.GET.getlist('disease')) selected_ppis = Ppi.objects.filter(id__in=request.GET.getlist('ppi')) ppis = Ppi.objects.exclude(id__in=request.GET.getlist('ppi')) + selected_diseases = Disease.objects.filter(id__in=request.GET.getlist('disease')) + diseases = Disease.objects.exclude(id__in=request.GET.getlist('disease')) # handle pagination in compounds list paginator = Paginator(compounds, 5) page = request.GET.get('page') @@ -206,4 +210,8 @@ def compound_list(request): except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. compounds = paginator.page(paginator.num_pages) - return render(request, 'compound_list.html', {'compounds': compounds, 'selected_ppis': selected_ppis, 'ppis': ppis}) + return render(request, 'compound_list.html', {'compounds': compounds, + 'selected_ppis': selected_ppis, + 'ppis': ppis, + 'selected_diseases': selected_diseases, + 'diseases': diseases}) -- GitLab