From 5825febbdd9ee4a7f1fae0a50b6478ca23a50042 Mon Sep 17 00:00:00 2001
From: Rachel TORCHET <racheltorchet@users.noreply.github.com>
Date: Tue, 31 Jul 2018 10:39:07 +0200
Subject: [PATCH] Update navigation and ProteinDomainComplexForm to take
 parameters from previous step into account

Former-commit-id: eb05cc7225b71022a8eea0b92aa48423faf62951
---
 ippisite/ippidb/forms.py                      | 12 ++--
 ippisite/ippidb/static/css/main.css           |  5 +-
 .../templates/ProteinDomainComplexForm.html   |  1 +
 ippisite/ippidb/templates/base.html           |  3 +
 ippisite/ippidb/templates/contribute.html     | 64 +++++++++++++++++++
 ippisite/ippidb/urls.py                       |  1 +
 ippisite/ippidb/views.py                      | 33 +++++-----
 ippisite/ippidb/ws.py                         |  2 +
 8 files changed, 95 insertions(+), 26 deletions(-)
 create mode 100644 ippisite/ippidb/templates/contribute.html

diff --git a/ippisite/ippidb/forms.py b/ippisite/ippidb/forms.py
index c89307d7..830c95f0 100644
--- a/ippisite/ippidb/forms.py
+++ b/ippisite/ippidb/forms.py
@@ -109,16 +109,12 @@ class ComplexCompositionForm(forms.Form):
 
     def __init__(self,pks=None,*args,**kwargs):
         super(ComplexCompositionForm, self).__init__(*args, **kwargs)
-        """ TODO : Filter based on submited PDBid"""
-        #pks = kwargs.pop("prot")
-        print("<<<<<<<<<<")
-        print(args,kwargs)
-        print(">>>>>>>>>>")
-        self.fields['complex_protein'].queryset=Protein.objects.filter(pk__in=[569,570])
-        self.fields['complex_domain'].queryset=Domain.objects.filter(pk__in=[73,73])
+        if pks is not None:
+            self.fields['complex_protein'].queryset = Protein.objects.filter(pk__in=pks)
+            self.fields['complex_domain'].queryset = Domain.objects.all()
 
 
-ComplexCompositionFormSet = formset_factory(ComplexCompositionForm, extra=3)
+ComplexCompositionFormSet = formset_factory(ComplexCompositionForm, extra=2)
 formset= ComplexCompositionFormSet()
 #print(formset.is_valid())
 
diff --git a/ippisite/ippidb/static/css/main.css b/ippisite/ippidb/static/css/main.css
index e4d17a2f..88b9d7a4 100644
--- a/ippisite/ippidb/static/css/main.css
+++ b/ippisite/ippidb/static/css/main.css
@@ -144,10 +144,9 @@ div.hidden {
 }
 
 .main-nav{
-    margin-left: auto;
-    margin-right: auto;
+    margin:0 auto;
     position: relative;
-    width: 600px;
+    width: max-content;
     text-align: center;
     height: 35px;
 }
diff --git a/ippisite/ippidb/templates/ProteinDomainComplexForm.html b/ippisite/ippidb/templates/ProteinDomainComplexForm.html
index c1348605..6294d05a 100644
--- a/ippisite/ippidb/templates/ProteinDomainComplexForm.html
+++ b/ippisite/ippidb/templates/ProteinDomainComplexForm.html
@@ -52,6 +52,7 @@
 					</div>
 				</div>
 				{% endfor %}
+
 			{% endif %}
 			</table>
 			<input type="hidden" name="ippi_wizard-current_step" value="ProteinDomainComplexForm" id="id_ippi_wizard-current_step"/>
diff --git a/ippisite/ippidb/templates/base.html b/ippisite/ippidb/templates/base.html
index 30f6b5da..d44eae8b 100644
--- a/ippisite/ippidb/templates/base.html
+++ b/ippisite/ippidb/templates/base.html
@@ -199,6 +199,9 @@
                             <a href="/tutorials">Tutorials</a>
                         </li>
                         <li>
+                            <a href="/contribute">Contribute</a>
+                        </li>
+                       <li>
                             <a href="/admin-session">Admin</a>
                         </li>
                     </ul>
diff --git a/ippisite/ippidb/templates/contribute.html b/ippisite/ippidb/templates/contribute.html
new file mode 100644
index 00000000..9d9b1248
--- /dev/null
+++ b/ippisite/ippidb/templates/contribute.html
@@ -0,0 +1,64 @@
+{% extends "index.html" %}
+
+    
+{% block title %}inhibitors of Protein-Protein Interaction Database{% endblock %}
+{% block extra_css %}
+    <link rel="stylesheet" href="/static/css/admin-session.css">
+{% endblock %}
+
+{% block content %}
+<div id="mainnav">
+    <nav class="secondary-nav">
+        <div class="inner-wrap">
+            <ul>
+            	<li>
+                    <a href="/queries">View Content</a>
+                </li>
+                <li>
+                    <a href="/admin-session/add/IdForm">Add New Content</a>
+                </li>
+                <li>
+                    <a href="/admin-session/update">Update Content</a>
+                </li>
+            </ul>
+        </div>
+    </nav>
+</div>
+<div class="inner-wrap">
+    <nav class="breadcrumb breadNav" role="navigation">
+        <div class="breadNav-label">You are here</div>
+        <div aria-labelledby="breadNav-label">
+            {% block breadcrumb %}{{block.super}}Admin{% endblock %} 
+        </div>
+    </nav>
+    <div id="main-wrapper" class="page">
+        <div id="main">
+            <div id="content" class="main-content">
+                <div class="section">
+                    <main role="main">
+                        <h1 class="page-title"> CONTRIBUTE </h1>
+                        <div class="tabs"></div>
+                        <div class="main__inner">
+                            <div class="region region-content">
+                                <div class="page-intro">
+                                </div>
+                                <div class="color-wrap">
+                                    <div class="region region-content">
+                                        <div class="block block-system block-system-main">
+                                            <div class="content">
+                                                <div class="view-content">
+                                                                                                            
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </main><!-- .site-main -->
+                </div>
+            </div>
+        </div><!-- div main -->
+    </div>
+</div>
+{% endblock %}
diff --git a/ippisite/ippidb/urls.py b/ippisite/ippidb/urls.py
index 82df36de..a5554854 100644
--- a/ippisite/ippidb/urls.py
+++ b/ippisite/ippidb/urls.py
@@ -14,6 +14,7 @@ urlpatterns = [
     url(r'^compounds/$', views.compound_list, name='compound_list'),
     url(r'^compounds/(?P<compound_id>\w+)$', views.compound_card, 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'),
     url(r'^admin-session/add/(?P<step>.+)/$',
         ippidb_wizard, name='ippidb_step'),
diff --git a/ippisite/ippidb/views.py b/ippisite/ippidb/views.py
index e4f6363b..f59bdf31 100644
--- a/ippisite/ippidb/views.py
+++ b/ippisite/ippidb/views.py
@@ -10,7 +10,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin
 from formtools.wizard.views import SessionWizardView, NamedUrlSessionWizardView
 
 import ippidb
-from .forms import IdForm, BibliographyForm, PDBForm, ProteinForm, ComplexCompositionForm, ComplexCompositionFormSet, ProteinDomainComplexTypeForm, ProteinDomainComplexForm, PpiForm, PpiComplexForm, PpiAndComplexForm, ProteinFormSet,TestsForm, CompoundForm, CompoundFormSet
+from .forms import *
 from .models import Protein, Bibliography, ProteinDomainComplex, ProteinDomainBoundComplex, RefCompoundBiblio, TestActivityDescription, Compound, Ppi, Disease, Taxonomy, LeLleBiplotData, PcaBiplotData, PpiFamily
 from .ws import get_pdb_uniprot_mapping
 
@@ -30,6 +30,8 @@ def general(request):
 def tutorials(request):
     return render(request, 'tutorials.html')
 
+def contribute(request):
+    return render(request, 'contribute.html')
 
 def adminSession(request):
     return render(request, 'admin-session.html')
@@ -37,6 +39,8 @@ def adminSession(request):
 def update (request):
     return render(request, 'update.html')
 
+#---------------------------------------------- CONTRIBUTE SESSION - WIZARD -------------------------------------------#
+
 FORMS = [("IdForm", ippidb.forms.IdForm),
          ("BibliographyForm", ippidb.forms.BibliographyForm),
          ("PDBForm", ippidb.forms.PDBForm),
@@ -76,19 +80,22 @@ class IppiWizard(LoginRequiredMixin, NamedUrlSessionWizardView):
             context['pdb_id']=self.storage.get_step_data('PDBForm').get('PDBForm-pdb_id')
         return context
 
-    def get_form_initial(self, step):
-    # Works for form.forms
-        initial = {}
-        # Pre-fill fields with data from a previous form
+    def get_form_kwargs(self, step):
+        # change args pass to a form
+        kwargs = super().get_form_kwargs()
         if step == 'ProteinDomainComplexForm':
             pks = self.storage.get_step_data('PDBForm').get('pks')
-            #initial['pks']=pks
-            #return {'pks':pks}
-            #form = ComplexCompositionForm(prot=pks)
+            # print("test pks: ",pks)
+            kwargs['form_kwargs']={'pks':pks}
+        return kwargs
+
+    def get_form_initial(self, step):
+    # Works for form.forms
+    # change value pass to a form
+        initial = super().get_form_initial(step)
         if step == 'PpiForm':
             initial['pdb_id'] = self.storage.get_step_data('PDBForm').get('PDBForm-pdb_id')
-        print(self.initial_dict)
-        return self.initial_dict.get(step, initial)
+        return initial
 
     def process_step(self, form):
         """
@@ -124,11 +131,6 @@ class IppiWizard(LoginRequiredMixin, NamedUrlSessionWizardView):
         if self.steps.current == 'BibliographyForm':
             pk = self.storage.get_step_data('IdForm').get('pk')
             return Bibliography.objects.get(pk=pk)
-        if self.steps.current == 'ProteinDomainComplexForm':
-            print("blablabla", self.storage.get_step_data('PDBForm').get('pks'))
-            pks = self.storage.get_step_data('PDBForm').get('pks')
-            print("blablabla", self.storage.get_step_data('PDBForm').get('pks'))
-            return Protein.objects.filter(id__in=pks)
         if self.steps.current == 'ProteinDomainComplexTypeForm':
             print("blablabla", self.storage.get_step_data('PDBForm').get('pks'))
             pks = self.storage.get_step_data('PDBForm').get('pks')
@@ -143,6 +145,7 @@ class IppiWizard(LoginRequiredMixin, NamedUrlSessionWizardView):
         'form_data': [form.cleaned_data for form in form_list],
     })
 
+#----------------------------------------------------------------------------------------------------------------------#
 
 def process_cutoff_value(name, context, request, cutoff_dir='l'):
     c = context['compounds']
diff --git a/ippisite/ippidb/ws.py b/ippisite/ippidb/ws.py
index 03fc0ff1..2676c12c 100644
--- a/ippisite/ippidb/ws.py
+++ b/ippisite/ippidb/ws.py
@@ -122,6 +122,7 @@ def get_pfam_info(pfam_acc):
 
 
 def get_pdb_uniprot_mapping(pdb_id):
+    pdb_id = pdb_id.lower()
     resp = requests.get(
         'https://www.ebi.ac.uk/pdbe/api/mappings/uniprot/{}'.format(pdb_id.lower()))
     uniprot_ids = list(resp.json()[pdb_id]['UniProt'].keys())
@@ -133,6 +134,7 @@ def pdb_entry_exists(pdb_id):
     resp = requests.get(
         'https://www.ebi.ac.uk/pdbe/api/pdb/entry/summary/{}'.format(pdb_id.lower()))
     # EBI sends back either a 404 or an empty json if the PDB does not exist
+    print("PDB id:", pdb_id)
     if not(resp.ok):
         return False
     else:
-- 
GitLab