diff --git a/ippisite/ippidb/forms.py b/ippisite/ippidb/forms.py index e588e4b8a1d04f404b4e7ce8b1ab2a9fba88fe57..f69c0084babdf7570157ce594dfd0d61f2c2fd31 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 d9616431daa607dae011ed7c85d75251a893099a..2881b1f2d1eb097e6dbf0eaeb2a89744970c17f5 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 b24d8b78c265bf18a2e09e492ac842154938ef82..65e3e8031daa4781f36be8cbea839ccdcd93b9ef 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 2416f18837da46fe09c88ff6e7f8e5f0b90356cc..dab073f0ecc6ad6995a9c431389ac0a4819f4b05 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 b2489c5f1d85bd0f7249b6f1238fb57c189e5d14..389d23e55f11b97367c67006c8599a6ea5796cfc 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 21d659b6f8a30b79caf04fed17ccdefe7c339b78..68811903efd41a04da755a28df06cbb452cd8a31 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 f3efa061a5a95561b21ecb93992a276216bc30dd..e8436ce5382a8422e95299b87cf1a6297472cb07 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')