From 9d86faa80ceb4e4fdeb4070413916d0977d13f99 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Herv=C3=A9=20=20MENAGER?= <herve.menager@pasteur.fr>
Date: Tue, 11 Jul 2017 11:23:05 +0200
Subject: [PATCH] experiment in trying to save Model objects as json for the
 wizard

Former-commit-id: b2181d605c00bb890226f2c4213d22f2498aa534
---
 ippisite/db.sqlite3.REMOVED.git-id |  2 +-
 ippisite/ippidb/views.py           | 22 ++++++++++++++++++----
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/ippisite/db.sqlite3.REMOVED.git-id b/ippisite/db.sqlite3.REMOVED.git-id
index cb9c5e16..4c4552c4 100644
--- a/ippisite/db.sqlite3.REMOVED.git-id
+++ b/ippisite/db.sqlite3.REMOVED.git-id
@@ -1 +1 @@
-067f156ca37c93920f1a15dac26337a9956fccbb
\ No newline at end of file
+ea2455328a1ef5effe52858804d0c303950ec7cf
\ No newline at end of file
diff --git a/ippisite/ippidb/views.py b/ippisite/ippidb/views.py
index 2eb60345..24d43b9a 100644
--- a/ippisite/ippidb/views.py
+++ b/ippisite/ippidb/views.py
@@ -2,10 +2,11 @@ import ippidb
 
 from django.shortcuts import render
 from django.http import HttpResponseRedirect
+from django.forms.models import model_to_dict
 from formtools.wizard.views import SessionWizardView,NamedUrlSessionWizardView
 
 from .forms import IdForm, BibliographyForm, PDBForm, ProteinForm, ProteinDomainComplexTypeForm, ProteinDomainComplexForm, PpiForm, ProteinFormSet
-from .models import Protein
+from .models import Protein, Bibliography, Taxonomy
 from .ws import get_pdb_uniprot_mapping
 
 def index(request):
@@ -46,6 +47,19 @@ class IppiWizard(NamedUrlSessionWizardView):
     def get_template_names(self):
         return [TEMPLATES[self.steps.current]]
 
+    def get_form_instance(self, step):
+        if self.steps.current=='BibliographyForm':
+            data = self.storage.get_step_data('IdForm')
+            obj = Bibliography(**data)
+            return obj
+        if self.steps.current=='ProteinForm':
+            data = self.storage.get_step_data('PDBForm').getlist('set')
+            proteins = []
+            for data_item in data:
+                data_item['organism'] = Taxonomy.objects.get(pk=data_item['organism'])
+                proteins.append(Protein(**data_item))
+            return Ol(proteins)
+
     def process_step(self, form):
         """
         This method overrides the one used to postprocess the form data.
@@ -54,8 +68,8 @@ class IppiWizard(NamedUrlSessionWizardView):
         """
         if self.steps.current=='IdForm':
             form.instance.autofill()
-            self.instance_dict['BibliographyForm'] = form.instance
-        elif self.steps.current=='PDBForm':
+            return model_to_dict(form.instance)
+        if self.steps.current=='PDBForm':
             uniprot_ids = get_pdb_uniprot_mapping(form.cleaned_data['pdb_id'])
             proteins = []
             for uniprot_id in uniprot_ids:
@@ -66,7 +80,7 @@ class IppiWizard(NamedUrlSessionWizardView):
                     p.uniprot_id = uniprot_ids[0]
                     p.autofill()
                 proteins.append(p)
-            self.instance_dict['ProteinForm'] = Ol(proteins)
+            return {'set': [model_to_dict(p, exclude=['molecular_functions']) for p in proteins]}
         return self.get_form_step_data(form)
 
     def done(self, form_list, **kwargs):
-- 
GitLab