diff --git a/ippisite/db.sqlite3.REMOVED.git-id b/ippisite/db.sqlite3.REMOVED.git-id index 4c4552c4b6a453572a78b14f8d5aff3c2a84ac4f..fd8fbb23c5c506458a45a36f2f5747b0d78855d2 100644 --- a/ippisite/db.sqlite3.REMOVED.git-id +++ b/ippisite/db.sqlite3.REMOVED.git-id @@ -1 +1 @@ -ea2455328a1ef5effe52858804d0c303950ec7cf \ No newline at end of file +cbc5368d062b8764f1b0d652691f17cd132d699f \ No newline at end of file diff --git a/ippisite/ippidb/views.py b/ippisite/ippidb/views.py index 24d43b9afced0a22fb48160f6af86b1b1b3a0f06..69bae00a0af663c297117b535c2d73005773a109 100644 --- a/ippisite/ippidb/views.py +++ b/ippisite/ippidb/views.py @@ -2,11 +2,10 @@ 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, Bibliography, Taxonomy +from .models import Protein, Bibliography from .ws import get_pdb_uniprot_mapping def index(request): @@ -40,25 +39,17 @@ TEMPLATES = {"IdForm": "IdForm.html", "ProteinDomainComplexForm": "ProteinDomainComplexForm.html", "PpiForm": "PpiForm.html"} -class Ol(list): - ordered = True - 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 + pk = self.storage.get_step_data('IdForm').get('pk') + return Bibliography.objects.get(pk=pk) 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) + pks = self.storage.get_step_data('PDBForm').get('pks') + return Protein.objects.filter(id__in=pks) def process_step(self, form): """ @@ -66,22 +57,25 @@ class IppiWizard(NamedUrlSessionWizardView): The added code just sets the form model for use in later forms when appropriate """ + data = super(IppiWizard, self).process_step(form).copy() if self.steps.current=='IdForm': form.instance.autofill() - return model_to_dict(form.instance) + if self.steps.current in ['IdForm', 'Bibliography']: + form.instance.save() + data['pk'] = form.instance.id if self.steps.current=='PDBForm': uniprot_ids = get_pdb_uniprot_mapping(form.cleaned_data['pdb_id']) - proteins = [] + protein_ids = [] for uniprot_id in uniprot_ids: try: p = Protein.objects.get(uniprot_id=uniprot_id) except Protein.DoesNotExist: p = Protein() p.uniprot_id = uniprot_ids[0] - p.autofill() - proteins.append(p) - return {'set': [model_to_dict(p, exclude=['molecular_functions']) for p in proteins]} - return self.get_form_step_data(form) + p.save() + protein_ids.append(p.id) + data['pks'] = protein_ids + return data def done(self, form_list, **kwargs): return render(self.request, '/admin-session/add.html', {