diff --git a/ippisite/ippidb/forms.py b/ippisite/ippidb/forms.py index fe0f196ddd522d9ceaee8e161137219f3cea4b26..8501ef910e5e80bf9965f617f77e4e1280b9fbf9 100644 --- a/ippisite/ippidb/forms.py +++ b/ippisite/ippidb/forms.py @@ -4,9 +4,11 @@ from django.db import models from django.core.exceptions import ValidationError from django.core.validators import RegexValidator -from .models import Bibliography, Protein, Domain, ProteinDomainComplex, Ppi, PpiComplex, Compound, RefCompoundBiblio, Symmetry, TestActivityDescription +from .models import * from .ws import pdb_entry_exists + +""" Step 1 : IdForm """ class IdForm(ModelForm): class Meta: model = Bibliography @@ -16,6 +18,7 @@ class IdForm(ModelForm): 'id_source': forms.TextInput(attrs={'placeholder': 'ID'}), } +""" Step 2 : BibliographyForm """ class BibliographyForm(ModelForm): class Meta: model = Bibliography @@ -29,7 +32,7 @@ class BibliographyForm(ModelForm): } - +""" Step 3 : PDBForm """ def validate_pdb_exists(value): if not(pdb_entry_exists(value)): raise ValidationError( @@ -58,6 +61,8 @@ class ProteinForm(ModelForm): ProteinFormSet = modelformset_factory( Protein, exclude=('recommended_name_long', 'short_name'), extra=0) + +""" Step 4 : ProteinDomainComplexTypeForm aka. Architecture """ TYPE_COMPLEX = ( ('inhibited', 'Inhibited'), ('stabilized', 'Stabilized'), @@ -80,9 +85,11 @@ TYPE_CHOICES = ( class ProteinDomainComplexTypeForm(forms.Form): - complexChoice=forms.CharField(label="PPI Complex Type", widget=forms.Select(choices=TYPE_COMPLEX)) - complexType=forms.CharField(widget=forms.RadioSelect(choices=TYPE_CHOICES)) + complexChoice=forms.CharField(label="PPI Complex Type", widget=forms.Select(choices=TYPE_COMPLEX)) + complexType=forms.CharField(widget=forms.RadioSelect(choices=TYPE_CHOICES)) + +""" Step 5 : ProteinDomainComplexForm aka. Composition """ class ProteinDomainComplexForm(ModelForm): class Meta: @@ -108,21 +115,28 @@ class ComplexCompositionForm(forms.Form): ComplexCompositionFormSet = formset_factory(ComplexCompositionForm, extra=2) formset= ComplexCompositionFormSet() -print(formset.is_valid()) +#print(formset.is_valid()) +""" Step 6 : PpiForm """ class PpiForm(ModelForm): class Meta: model = Ppi - fields = ['pdb_id', 'symmetry'] + fields = ['pdb_id','symmetry','pockets_nb'] class PpiComplexForm(ModelForm): class Meta: model = PpiComplex - fields = ['cc_nb',] + fields = ['cc_nb'] +class PpiAndComplexForm(forms.Form): + pdb_id=forms.CharField(widget=forms.TextInput()) + symmetry=forms.ModelChoiceField(queryset=Symmetry.objects.all(), required=True) + pockets_nb=forms.IntegerField(initial=1,required=True) + cc_nb=forms.IntegerField(initial=1,required=True) +""" Step 7 : CompoundForm """ class CompoundForm(ModelForm): class Meta: @@ -147,19 +161,25 @@ class BaseCompoundFormSet(BaseFormSet): def add_fields(self, form, index): super(BaseCompoundFormSet, self).add_fields(form, index) form.fields["compound_name"] = forms.CharField(widget=forms.TextInput(attrs={'placeholder':'Name in the publication','required':'required'})) - form.fields["molecule"] = forms.CharField(widget=forms.Select(choices=TYPE_MOLECULE)) + form.fields["molecule"] = forms.CharField(widget=forms.RadioSelect(choices=TYPE_MOLECULE)) form.fields["molecule_comp"] = forms.CharField(widget=forms.TextInput(attrs={'placeholder':'Molecule composition', 'required':'required'})) CompoundFormSet = formset_factory(CompoundForm, formset=BaseCompoundFormSet, max_num=500, can_delete=True) formset = CompoundFormSet() - -class TestsForm(ModelForm): - - class Meta: - model=TestActivityDescription - fields=['test_name','test_type','test_modulation_type', 'cell_line'] - - -#CompoundFormSet = modelformset_factory( -# Compound, exclude=('mddr_compound',), extra=0) +""" Step 8 : TestsForm """ +class TestsForm(forms.Form): + activityDesc_cell_line=forms.ModelChoiceField(queryset=CellLine.objects.all(), required=True) + activityDesc_ppi=forms.CharField(widget=forms.TextInput()) + activityDesc_nb_active_compound=forms.IntegerField(initial=1,required=True) + activityDesc_test_modulation_type=forms.ModelChoiceField(queryset=TestActivityDescription.objects.all(), required=True) + activityDesc_test_name=forms.CharField(widget=forms.TextInput()) + activityDesc_type=forms.ModelChoiceField(queryset=TestActivityDescription.objects.all(), required=True) + cytotoxDesc_cell_line=forms.ModelChoiceField(queryset=CellLine.objects.all(), required=True) + cytotoxDesc_compound_concentration=forms.CharField(widget=forms.TextInput()) + cytotoxDesc_test_name=forms.CharField(widget=forms.TextInput()) + pkDesc_organism=forms.ModelChoiceField(queryset=Taxonomy.objects.all(), required=True) + pkDesc_administration_mode=forms.CharField(widget=forms.TextInput()) + pkDesc_dose=forms.IntegerField(initial=1,required=True) + pkDesc_dose_interval=forms.IntegerField(initial=1,required=True) + pkDesc_test_name=forms.CharField(widget=forms.TextInput()) diff --git a/ippisite/ippidb/static/css/admin-session.css b/ippisite/ippidb/static/css/admin-session.css index 2881b1f2d1eb097e6dbf0eaeb2a89744970c17f5..2cebca66a1f3966297d1e33acbb54621b2fb781c 100644 --- a/ippisite/ippidb/static/css/admin-session.css +++ b/ippisite/ippidb/static/css/admin-session.css @@ -176,6 +176,11 @@ Description: IPPI-DB Theme margin-bottom: 5px; } +.compound_input input{ + width: 100%; + padding: 5px; +} + #compound_mol { overflow: hidden; display: flex; diff --git a/ippisite/ippidb/templates/CompoundForm.html b/ippisite/ippidb/templates/CompoundForm.html index fd72c2eee2dd93dced600e9452950acd9295c65b..e12d945f9ab9f493584aaa26405c1b14ce697049 100644 --- a/ippisite/ippidb/templates/CompoundForm.html +++ b/ippisite/ippidb/templates/CompoundForm.html @@ -52,12 +52,14 @@ </div> {% endfor %} </div> - <div id="molecule_comp_{{ form.molecule.id_for_label }}"> + <div class="compound_input" id="molecule_comp_{{ form.molecule.id_for_label }}"> {{form.molecule_comp}} </div> <div id="ck-button-long" class="compound_input"> <label>{{ form.is_macrocycle}}<span>{{ form.is_macrocycle.label }}</span></label> </div> + <div id="ck-button-long" class="submit_button"> Add compound + </div> </div> {% endfor %} </div> @@ -67,7 +69,7 @@ {% endif %} <input type="hidden" name="ippi_wizard-current_step" value="CompoundForm" id="id_ippi_wizard-current_step"/> </table> - <input type="submit" value="{% trans "Next step" %}"/> + <input class="submit_button" type="submit" value="{% trans "Next step" %}"/> </form> </div> </div> diff --git a/ippisite/ippidb/templates/PpiForm.html b/ippisite/ippidb/templates/PpiForm.html index a632afd5021f807635311214332c77eedabac082..7a37f00de287ea18450b47041c35b58a187d3e59 100644 --- a/ippisite/ippidb/templates/PpiForm.html +++ b/ippisite/ippidb/templates/PpiForm.html @@ -34,12 +34,14 @@ {% if wizard.form.forms %} {% for form in wizard.form.forms %} + Test {{ form }} {% endfor %} {% else %} <div class="inline_box_complex"> <div class="inline_label"> PPI: </div> <div class="input_field">{{ wizard.form.pdb_id }}</div> + <div class="input_field">{{ wizard.form.pockets_nb}}</div> <div class="inline_field">{{ wizard.form.cc_nb }}</div> <div class="inline_field">{{ wizard.form.symmetry }}</div> </div> diff --git a/ippisite/ippidb/views.py b/ippisite/ippidb/views.py index 923955e731909e60704b425dbd6767cdcd1c078a..ea7e01e8fe606ac3acff6219dfbb4ed395eeed2b 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, ComplexCompositionForm, ComplexCompositionFormSet, ProteinDomainComplexTypeForm, ProteinDomainComplexForm, PpiForm, PpiComplexForm, ProteinFormSet,TestsForm, CompoundForm, CompoundFormSet +from .forms import IdForm, BibliographyForm, PDBForm, ProteinForm, ComplexCompositionForm, ComplexCompositionFormSet, ProteinDomainComplexTypeForm, ProteinDomainComplexForm, PpiForm, PpiComplexForm, PpiAndComplexForm, ProteinFormSet,TestsForm, CompoundForm, CompoundFormSet from .models import Protein, Bibliography, ProteinDomainComplex, ProteinDomainBoundComplex, RefCompoundBiblio, TestActivityDescription, Compound, Ppi, Disease, Taxonomy from .ws import get_pdb_uniprot_mapping @@ -60,7 +60,7 @@ FORMS = [("IdForm", ippidb.forms.IdForm), ("ProteinDomainComplexTypeForm", ippidb.forms.ProteinDomainComplexTypeForm), ("ProteinDomainComplexForm", ippidb.forms.ComplexCompositionFormSet), - ("PpiForm", ippidb.forms.PpiForm), + ("PpiForm", ippidb.forms.PpiAndComplexForm), ("CompoundForm", ippidb.forms.CompoundFormSet), ("TestsForm", ippidb.forms.TestsForm),] @@ -90,7 +90,7 @@ class IppiWizard(NamedUrlSessionWizardView): if self.steps.current == 'PpiForm': context['complex_choice']=self.storage.get_step_data('ProteinDomainComplexTypeForm').get('ProteinDomainComplexTypeForm-complexChoice') context['complex_type']=self.storage.get_step_data('ProteinDomainComplexTypeForm').get('ProteinDomainComplexTypeForm-complexType') - context['pdb']=self.storage.get_step_data('PDBForm').get('PDBForm-pdb_id') + context['pdb_id']=self.storage.get_step_data('PDBForm').get('PDBForm-pdb_id') return context def get_form_initial(self, step):