From 40b8a8024e1268f86dbb85a36a2296843bd802de Mon Sep 17 00:00:00 2001
From: Rachel TORCHET <racheltorchet@users.noreply.github.com>
Date: Mon, 8 Jan 2018 16:06:33 +0100
Subject: [PATCH] Fix ModelFormSet issue on ProteinDomainComplexForm step

Former-commit-id: 661eb007708cdeda1fbfdf0a37870ae4dd2b86cd
---
 ippisite/ippidb/forms.py                      |  6 ++-
 .../templates/ProteinDomainComplexForm.html   | 41 ++++++++++---------
 ippisite/ippidb/views.py                      | 24 ++---------
 3 files changed, 29 insertions(+), 42 deletions(-)

diff --git a/ippisite/ippidb/forms.py b/ippisite/ippidb/forms.py
index fa85bfa5..d9387426 100644
--- a/ippisite/ippidb/forms.py
+++ b/ippisite/ippidb/forms.py
@@ -90,8 +90,12 @@ class ProteinDomainComplexForm(ModelForm):
         fields=['protein', 'domain', 'ppc_copy_nb']
 
 
-ProteinDomainComplexFormSet = modelformset_factory(ProteinDomainComplex, fields=('protein', 'domain', 'ppc_copy_nb'), max_num=2)
+class BaseProteinDomainComplexFormSet(BaseModelFormSet):
+    def __init__(self, *args, **kwargs):
+        super(BaseProteinDomainComplexFormSet,self).__init__(*args, **kwargs)
+        self.queryset = ProteinDomainComplex.objects.none()
 
+ProteinDomainComplexFormSet = modelformset_factory(ProteinDomainComplex, form=ProteinDomainComplexForm, formset=BaseProteinDomainComplexFormSet, extra=2, max_num=2)
 
 class PpiForm(ModelForm):
 
diff --git a/ippisite/ippidb/templates/ProteinDomainComplexForm.html b/ippisite/ippidb/templates/ProteinDomainComplexForm.html
index 8299ca28..5fb8058e 100644
--- a/ippisite/ippidb/templates/ProteinDomainComplexForm.html
+++ b/ippisite/ippidb/templates/ProteinDomainComplexForm.html
@@ -26,26 +26,27 @@
 	<div class="form_div">
 		<form action="" method="post">
 			{% csrf_token %}
-			{{ wizard.form.errors}}
-			{{ wizard.form.non_field_errors}}       
-			{{ wizard.management_form }}
-			{{ ProteinDomainComplexFormSet.management_form }}
-			{% if wizard.form.forms %}
-			<table>
-				<div class="inline_box_complex">
-					<div class="inline_label"> Bound 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>
-				<div class="inline_box_complex">
-					<div class="inline_label"> Partner 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>  
-			</table>
-			{% endif %}
+					{{ wizard.form.errors}}
+			    	{{ wizard.form.non_field_errors}}		
+					{% if wizard.form.forms %}
+						{{ wizard.form.management_form }}
+						<table>
+							{% 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 %}
+						</table>
+					{% endif %}
 			<input type="submit" value="{% trans "Next step" %}"/>
 			<a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a>
 		</form>
diff --git a/ippisite/ippidb/views.py b/ippisite/ippidb/views.py
index 7d1f5095..68bc72ef 100644
--- a/ippisite/ippidb/views.py
+++ b/ippisite/ippidb/views.py
@@ -97,26 +97,8 @@ class IppiWizard(NamedUrlSessionWizardView):
         if step == 'ProteinDomainComplexForm':
             complex_type=self.storage.get_step_data('ProteinDomainComplexTypeForm').get('ProteinDomainComplexTypeForm-complexType')
             complex_choice=self.storage.get_step_data('ProteinDomainComplexTypeForm').get('ProteinDomainComplexTypeForm-complexChoice')
-            if complex_type == "Hetero2merAB" and complex_choice == "inhibited": 
-                initial['ppc_copy_nb'] = 1
-            elif complex_type == "Homo2merA2" and complex_choice == "inhibited": 
-                initial['ppc_copy_nb'] = 1
-            elif complex_type == "Hetero2merAB" and complex_choice == "stabilized":
-                initial['ppc_copy_nb'] = 1
-            elif complex_type == "Homo2merA2" and complex_choice == "stabilized":
-                initial['ppc_copy_nb'] = 2
-            elif complex_type == "HomoLike2mer" and complex_choice == "stabilized":
-                initial['ppc_copy_nb'] = 2
-            elif complex_type == "Homo3merA3" and complex_choice == "stabilized":
-                initial['ppc_copy_nb'] = 3
-            elif complex_type == "Homo3merA2" and complex_choice == "stabilized":
-                initial['ppc_copy_nb'] = 2
-            elif complex_type == "Homo4merA4" and complex_choice == "stabilized":
-                initial['ppc_copy_nb'] = 4
-            elif complex_type == "RingHomo3mer" and complex_choice == "stabilized":
-                nitial['ppc_copy_nb'] = 3
-            elif complex_type == "RingHomo5mer" and complex_choice == "stabilized":
-                initial['ppc_copy_nb'] = 5
+            pks = self.storage.get_step_data('PDBForm').get('pks')            
+            print("Proteins",Protein.objects.filter(id__in=pks), Domain.objects.filter(id__in=pks))
         if step == 'PpiForm':
             initial['pdb_id'] = self.storage.get_step_data('PDBForm').get('PDBForm-pdb_id')
         return self.initial_dict.get(step, initial)
@@ -148,7 +130,7 @@ class IppiWizard(NamedUrlSessionWizardView):
                     p.save()
                 protein_ids.append(p.id)
             data['pks'] = protein_ids
-            print(data)
+            print("test",data)
         return data
         
     def get_form_instance(self, step):
-- 
GitLab