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