From 8109b94dbd04386595672a83d4afc87a4c79d0c8 Mon Sep 17 00:00:00 2001
From: Rachel TORCHET <racheltorchet@users.noreply.github.com>
Date: Mon, 26 Mar 2018 13:39:03 +0200
Subject: [PATCH] Update ProteinDomainComplex step with view and css

Former-commit-id: d664306b26e4fc5534c0683d98b3c88596d20627
---
 ippisite/ippidb/forms.py                      | 53 ++++++-------------
 ippisite/ippidb/static/css/admin-session.css  | 15 ++++--
 ippisite/ippidb/static/css/main.css           | 15 +++---
 .../templates/ProteinDomainComplexForm.html   | 22 +++-----
 ippisite/ippidb/templates/add.html            |  2 -
 ippisite/ippidb/templates/admin-session.html  |  2 +
 ippisite/ippidb/views.py                      | 10 ++--
 7 files changed, 53 insertions(+), 66 deletions(-)

diff --git a/ippisite/ippidb/forms.py b/ippisite/ippidb/forms.py
index e588e4b8..f69c0084 100644
--- a/ippisite/ippidb/forms.py
+++ b/ippisite/ippidb/forms.py
@@ -4,7 +4,7 @@ from django.db import models
 from django.core.exceptions import ValidationError
 from django.core.validators import RegexValidator
 
-from .models import Bibliography, Protein, ProteinDomainComplex, Ppi, PpiComplex, Compound, RefCompoundBiblio, Symmetry, TestActivityDescription
+from .models import Bibliography, Protein, Domain, ProteinDomainComplex, Ppi, PpiComplex, Compound, RefCompoundBiblio, Symmetry, TestActivityDescription
 from .ws import pdb_entry_exists
 
 class IdForm(ModelForm):
@@ -89,6 +89,21 @@ class ProteinDomainComplexForm(ModelForm):
         model=ProteinDomainComplex
         fields=['protein', 'domain', 'ppc_copy_nb']
 
+COMPLEX_TYPE = (
+    ('Bound', 'Bound'),
+    ('Partner', 'Partner')
+)
+
+class ComplexCompositionForm(forms.Form):
+    complex_type=forms.CharField(widget=forms.Select(choices=COMPLEX_TYPE))
+    complex_protein=forms.ModelChoiceField(queryset=Protein.objects.all(), required=True)
+    complex_domain=forms.ModelChoiceField(queryset=Domain.objects.all(), required=True)
+    ppc_copy_nb=forms.IntegerField(initial=1,required=True)
+
+    def __init__(self,*args,**kwargs):
+        super(ComplexCompositionForm, self).__init__(*args, **kwargs)
+        self.fields['complex_protein'].queryset=Protein.objects.filter(pk__in=[569,570])
+
 
 class BaseProteinDomainComplexFormSet(BaseModelFormSet):
     def __init__(self, *args, **kwargs):
@@ -111,42 +126,6 @@ class PpiComplexForm(ModelForm):
         model = PpiComplex
         fields = ['cc_nb',]
 
-class PpiAndPpiComplexForm (forms.Form):
-    pdb_id = forms.CharField(label='PDB ID', max_length=4, required=False)
-    symmetry = forms.ModelChoiceField(queryset=Symmetry.objects.all(), required=True)
-    cc_nb = forms.IntegerField(
-        label='Number of copies of the complex in the PPI', 
-        initial=1,
-        )
-
-    def __init__(self, *args, **kwargs):
-        super(PpiAndPpiComplexForm,self).__init__(*args, **kwargs)
-        self.fields['symmetry'].initial = Symmetry.objects.all().first()
-
-    def save(self, commit=True):
-        ppi = Ppi.objects.create(
-            pdb_id=self.cleaned_data['pdb_id'],
-            symmetry=self.cleaned_data['symmetry'],
-            )
-        ppi_complex = PpiComplex.objects.create(
-            cc_nb=self.cleaned_data['cc_nb'],
-            ppi=ppi,
-        )
-        if commit:
-            ppi.save()
-            ppi_complex.save()
-
-        return dict(
-            ppi=ppi,
-            ppi_complex=ppi_complex,
-        )
-        #instance = super(MyForm, self).save(commit=False)
-        #instance.flag1 = 'flag1' in self.cleaned_data['multi_choice'] # etc
-        #if commit:
-        #instance.save()
-        #return instance
-        pass
-
 
 class CompoundForm(ModelForm):
 
diff --git a/ippisite/ippidb/static/css/admin-session.css b/ippisite/ippidb/static/css/admin-session.css
index d9616431..2881b1f2 100644
--- a/ippisite/ippidb/static/css/admin-session.css
+++ b/ippisite/ippidb/static/css/admin-session.css
@@ -56,11 +56,9 @@ Description: IPPI-DB Theme
 .step_title{
     font-family: "PlayfairDisplayRed";
     font-size: 25px;
-    padding-bottom: 10px;
 }
 
 .step_step {
-    padding-bottom: 10px;
     color: #8D8889;
     font-size: 15px;
     font-family: "BrandonGrotesqueReg";
@@ -99,7 +97,8 @@ Description: IPPI-DB Theme
 }
 
 .clear_button {
-    text-align: center
+    text-align: center;
+    padding-top: 10px;
 }
 
 /* IdForm*/
@@ -142,6 +141,7 @@ Description: IPPI-DB Theme
 
 .input_field {
     width:100%;
+    margin-right: 2px;
     font-family: "BrandonGrotesqueReg";
 }
 
@@ -1052,6 +1052,15 @@ Description: IPPI-DB Theme
     margin-right: -150px;
 }
 
+.inline_box_complex_long {
+    margin: 5px;
+    padding: 10px;
+    display: inline-flex;
+    margin-left: -280px;
+    margin-right: -280px;
+}
+
+
 /*  Done step  */
 .last_step {
     margin-top: 10%;
diff --git a/ippisite/ippidb/static/css/main.css b/ippisite/ippidb/static/css/main.css
index b24d8b78..65e3e803 100644
--- a/ippisite/ippidb/static/css/main.css
+++ b/ippisite/ippidb/static/css/main.css
@@ -102,11 +102,12 @@ div.hidden {
     background-repeat: no-repeat;
     background-color: #F9F9F9;
     background-size: cover;
+    height: 200px;
 }
 
 .logoJum h1 {
     font-family: "BrandonGrotesqueBlk";
-    font-size:81px;
+    font-size:61px;
 }
 
 .logoJum p {
@@ -322,6 +323,7 @@ text-align: center;
     max-width: 1200px;
     background-color: #fff;
     font-family: "BrandonGrotesqueBld";
+    margin-bottom: 0px;
 }
 
 .breadNav-label {
@@ -420,10 +422,10 @@ font-size: 42px;
 }
 
 .page-title {
-    margin: 0px 0px 30px;
+    margin: 0px 0px 20px;
     text-transform: uppercase;
     text-align: center;
-    font-size: 42px;
+    font-size: 32px;
     line-height: 1.2;
     color: #1D1D1B;
     font-family:"BrandonGrotesqueBlk";
@@ -431,7 +433,7 @@ font-size: 42px;
 
 .page-intro {
     color:#414144;
-    font-size: 20px;
+    font-size: 16px;
     font-weight: normal;
     line-height: 1.4;
     text-align: justify;
@@ -444,7 +446,6 @@ font-size: 42px;
 }
 
 .page-intro ul li {
-    font-size: 20px;
     font-weight: normal;
     line-height: 1.4;
 }
@@ -606,13 +607,13 @@ font-size: 42px;
 
 .form_div {
     font-family: "BrandonGrotesqueReg";
-    margin: 20px auto;
+    margin: 10px auto;
     width: 43%
 }
 
 #Form{
     border: 1px solid #E3E9EB;
-    padding: 15px;
+    padding: 10px;
     min-height: 150px;
     text-align: center;
     min-height: 350px;
diff --git a/ippisite/ippidb/templates/ProteinDomainComplexForm.html b/ippisite/ippidb/templates/ProteinDomainComplexForm.html
index 2416f188..dab073f0 100644
--- a/ippisite/ippidb/templates/ProteinDomainComplexForm.html
+++ b/ippisite/ippidb/templates/ProteinDomainComplexForm.html
@@ -33,24 +33,18 @@
 			{% if wizard.form.forms %}
 				{{ wizard.form.management_form }}
 				{% for form in wizard.form.forms %}
-					{% if forloop.first %}
-						<div class="inline_box_complex">
-						<div class="inline_label">Bound
-					{% else %}
-						<div class="inline_box_complex">
-						<div class="inline_label">Partner
-					{% endif %}
-					complex : </div>
-					<div class="inline_field"> {{ form.protein }}</div>
-					<div class="inline_field"> {{ form.domain }}</div>
-					<div class="inline_field"><div>{{ form.ppc_copy_nb }}</div></div>
-					</div>
+					
 				{% endfor %}
+			{% else %}
+				<div class="inline_box_complex_long">
+					<div class="input_field"> {{ form.complex_type }}</div>
+					<div class="input_field"> {{ form.complex_protein }}</div>
+					<div class="input_field"> {{ form.complex_domain }}</div>
+					<div class="input_field"> {{ form.ppc_copy_nb }}</div>
+				</div>
 			{% endif %}
 			<input type="hidden" name="ippi_wizard-current_step" value="ProteinDomainComplexForm" id="id_ippi_wizard-current_step"/>
 			</table>
-			<input class="submit_button" type="submit" name="{{ wizard.steps.next }}" value="{% trans "Next step" %}"/>
-			<div class="clear_button"><a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a></div>
 		</form>
 	</div>
 </div>
diff --git a/ippisite/ippidb/templates/add.html b/ippisite/ippidb/templates/add.html
index b2489c5f..389d23e5 100644
--- a/ippisite/ippidb/templates/add.html
+++ b/ippisite/ippidb/templates/add.html
@@ -47,8 +47,6 @@
 										<li> Its ID number (e.g PubMed ID), </li>
 										<li> And a reference PDB code that contains the structure of the macromolecular complex of the PPI target for which you have data. </li>
 									</ul>
-								E.g for a heterodimer, the structure needs to contain both partners. This will help you to describe the PPI architecture. </br>
-								Most of the information you need to provide will come both from the PDB structure, and the bibliographic source. The rest will be automatically filled and will just require your approval.
 								</div>
 								<div class="color-wrap">
 									<div class="region region-content">
diff --git a/ippisite/ippidb/templates/admin-session.html b/ippisite/ippidb/templates/admin-session.html
index 21d659b6..68811903 100644
--- a/ippisite/ippidb/templates/admin-session.html
+++ b/ippisite/ippidb/templates/admin-session.html
@@ -46,6 +46,8 @@
                                                 <div class="view-content">
                                                                                                             
                                                 </div>
+                                                <input class="submit_button" type="submit" name="{{ wizard.steps.next }}" value="{% trans "Next step" %}"/>
+            <div class="clear_button"><a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a></div>
                                             </div>
                                         </div>
                                     </div>
diff --git a/ippisite/ippidb/views.py b/ippisite/ippidb/views.py
index 94eea8be..c7b559cc 100644
--- a/ippisite/ippidb/views.py
+++ b/ippisite/ippidb/views.py
@@ -4,7 +4,7 @@ from django.shortcuts import render
 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, ProteinDomainComplexFormSet, PpiForm, PpiComplexForm, ProteinFormSet,TestsForm, CompoundForm, CompoundFormSet
+from .forms import IdForm, BibliographyForm, PDBForm, ProteinForm, ComplexCompositionForm, ProteinDomainComplexTypeForm, ProteinDomainComplexForm, ProteinDomainComplexFormSet, PpiForm, PpiComplexForm, ProteinFormSet,TestsForm, CompoundForm, CompoundFormSet
 from .models import Protein, Bibliography, ProteinDomainComplex, ProteinDomainBoundComplex, RefCompoundBiblio, TestActivityDescription, Compound, Ppi, Disease, Taxonomy
 from .ws import get_pdb_uniprot_mapping
 
@@ -59,7 +59,7 @@ FORMS = [("IdForm", ippidb.forms.IdForm),
          ("PDBForm", ippidb.forms.PDBForm),
          ("ProteinDomainComplexTypeForm",
           ippidb.forms.ProteinDomainComplexTypeForm),
-         ("ProteinDomainComplexForm", ippidb.forms.ProteinDomainComplexFormSet),
+         ("ProteinDomainComplexForm", ippidb.forms.ComplexCompositionForm),
          ("PpiForm", ippidb.forms.PpiForm),
          ("CompoundForm", ippidb.forms.CompoundFormSet),
          ("TestsForm", ippidb.forms.TestsForm),]
@@ -130,13 +130,17 @@ class IppiWizard(NamedUrlSessionWizardView):
                     p.save()
                 protein_ids.append(p.id)
             data['pks'] = protein_ids
-            print("test",data)
         return data
         
     def get_form_instance(self, step):
         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')
-- 
GitLab