From cfc60783b8f0a2d773f19ccccb91799d9fccf064 Mon Sep 17 00:00:00 2001
From: Rachel TORCHET <racheltorchet@users.noreply.github.com>
Date: Mon, 15 May 2017 16:34:27 +0200
Subject: [PATCH] Update Django admin page and Admin session. Create forms
 needed and update css file for forms elements

---
 ippisite/ippidb/forms.py                      | 31 ++++++++++++
 ippisite/ippidb/models.py                     |  6 +--
 ippisite/ippidb/static/css/ippidb.css         | 40 ++++++++++++++++
 ippisite/ippidb/templates/add.html            | 15 ++++--
 ippisite/ippidb/templates/admin-session.html  | 25 ++++++++++
 ippisite/ippidb/templates/admin.html          |  8 ----
 ippisite/ippidb/templates/base.html           |  4 +-
 .../templates/{submit.html => query.html}     |  0
 ippisite/ippidb/templates/wizard_form.html    | 28 +++++++++++
 ippisite/ippidb/urls.py                       |  6 ++-
 ippisite/ippidb/views.py                      | 47 +++++++++++++++++--
 ippisite/ippisite/settings.py                 |  3 +-
 ippisite/ippisite/urls.py                     |  2 +-
 ippisite/requirements.txt                     |  1 +
 .../{admin => admin-django}/base_site.html    |  4 +-
 15 files changed, 190 insertions(+), 30 deletions(-)
 create mode 100644 ippisite/ippidb/forms.py
 create mode 100644 ippisite/ippidb/templates/admin-session.html
 delete mode 100644 ippisite/ippidb/templates/admin.html
 rename ippisite/ippidb/templates/{submit.html => query.html} (100%)
 create mode 100644 ippisite/ippidb/templates/wizard_form.html
 rename ippisite/templates/{admin => admin-django}/base_site.html (80%)

diff --git a/ippisite/ippidb/forms.py b/ippisite/ippidb/forms.py
new file mode 100644
index 00000000..6c83082f
--- /dev/null
+++ b/ippisite/ippidb/forms.py
@@ -0,0 +1,31 @@
+from django.forms import ModelForm
+from django import forms
+from django.db import models
+from .models import Bibliography, Protein, ProteinDomainComplex, Ppi
+
+class IdForm(forms.Form):
+	id = forms.CharField(label="",max_length=100, widget=forms.TextInput(attrs={'placeholder': 'PubMed ID / DOI / Patent ID'}))
+
+class BibliographyForm(ModelForm):
+    class Meta:
+        model = Bibliography
+        exclude = ['title','journal_name', 'authors_list', 'biblio_year']
+
+class PDBForm(forms.Form):
+	pdb_id = forms.CharField(label="PDB ID",max_length=100, widget=forms.TextInput(attrs={'placeholder': '123456'}))
+
+class ProteinForm(ModelForm):
+	class Meta:
+		model = Protein
+		exclude = ['recommended_name_long', 'short_name']
+
+class ProteinDomainComplexForm(ModelForm):
+	class Meta:
+		model = ProteinDomainComplex
+		fields = ['protein_id', 'domain_id', 'ppc_copy_nb']
+
+
+class PpiForm(ModelForm):
+	class Meta:
+		model = Ppi
+		fields = ['complex_id', 'cc_nb', 'pdb_id', 'symmetry_id']
diff --git a/ippisite/ippidb/models.py b/ippisite/ippidb/models.py
index 74c075d3..dedbd0bf 100644
--- a/ippisite/ippidb/models.py
+++ b/ippisite/ippidb/models.py
@@ -1,7 +1,6 @@
 from __future__ import unicode_literals
 
 from django.db import models
-from django.forms import ModelForm
 
 from .ws import get_pubmed_info, get_epo_info, get_uniprot_info, get_taxonomy_info, get_go_info, get_pfam_info
 
@@ -41,10 +40,7 @@ class Bibliography(models.Model):
     class Meta:
         verbose_name_plural = "bibliographies"
 
-class BibliographyForm(ModelForm):
-    class Meta:
-        model = Bibliography
-        exclude = ['title','journal_name', 'authors_list', 'biblio_year']
+
 
 class Taxonomy(models.Model):
     taxonomy_id = models.DecimalField('NCBI TaxID', unique=True, max_digits=9, decimal_places=0)
diff --git a/ippisite/ippidb/static/css/ippidb.css b/ippisite/ippidb/static/css/ippidb.css
index a0135c7b..152e4d21 100644
--- a/ippisite/ippidb/static/css/ippidb.css
+++ b/ippisite/ippidb/static/css/ippidb.css
@@ -328,6 +328,17 @@ text-align: center;
     display: inline-block;
 }
 
+.secondary-nav ul li a:active {
+    font-size: 11px;
+    font-family: "BrandonGrotesqueBlk";
+    color:#000;
+    text-transform: uppercase;
+    text-decoration: none;
+    padding: 0px 0px;
+    position: relative;
+    display: inline-block;
+}
+
 .secondary-nav ul li a:focus::after {
     content: "";
     position: absolute;
@@ -337,6 +348,7 @@ text-align: center;
     height: 2px;
     background: #414144 none repeat scroll 0% 0%;
     text-decoration: none;
+    color: #000;
 }
 
 .secondary-nav ul li a:active::after {
@@ -348,6 +360,7 @@ text-align: center;
     height: 2px;
     background: #414144 none repeat scroll 0% 0%;
     text-decoration: none;
+    color: #000;
 }
 
 .secondary-nav ul li a:hover::after {
@@ -361,6 +374,7 @@ text-align: center;
     text-decoration: none;
 }
 
+
 /* -- Breadcrumb -- */
 
 
@@ -585,6 +599,32 @@ display:block;
     border: 1px solid;
     padding: 10px;
     min-height: 150px;
+    text-align: center;
+}
+
+form {
+    width : 400px;
+}
+
+button, input, select, textarea {
+    line-height: inherit;
+    font-family: "BrandonGrotesqueReg";
+    width: 400px;
+    border-bottom: 1px solid #2d96fa;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+    text-align: center;
+}
+
+[type="reset"], [type="submit"], button, html [type="button"] {
+    -webkit-appearance: button;
+    margin-top: 5px;
+    border-radius: 0px;
+    background-color: #2d96fa;
+    border: none;
+    color: #fff;
+    width: inherit;
 }
 
 /* CONTENT */
diff --git a/ippisite/ippidb/templates/add.html b/ippisite/ippidb/templates/add.html
index 9b07f408..b6d14762 100644
--- a/ippisite/ippidb/templates/add.html
+++ b/ippisite/ippidb/templates/add.html
@@ -9,13 +9,13 @@
         <div class="inner-wrap">
             <ul>
             	<li>
-                    <a hfref="/admin/view">View Content</a>
+                    <a hfref="/admin-session/view">View Content</a>
                 </li>
                 <li>
-                    <a href="/admin/add">Add New Content</a>
+                    <a href="/admin-session/add">Add New Content</a>
                 </li>
                 <li>
-                    <a hfref="/admin/update">Update Content</a>
+                    <a hfref="/admin-session/update">Update Content</a>
                 </li>
             </ul>
         </div>
@@ -44,7 +44,7 @@
 								To achieve this process, you need : </br>
 									<ul>
 										<li> Your bibliographic source (PubMed article or Patents), </li>
-										<li> Its ID number (e.g Pubmed ID), </li>
+										<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>
@@ -56,8 +56,13 @@
 											<div class="content">
 												<div class="view-content">
 													<div id="Form">
-														ICI Formulaires
+														<form action="/admin-session/add" method="post">
+															{% csrf_token %}
+															{{ ID.as_p}}
+															<input type="submit" value="Next" />
+														</form>
 													</div>
+													
 												</div>
 											</div>
 										</div>
diff --git a/ippisite/ippidb/templates/admin-session.html b/ippisite/ippidb/templates/admin-session.html
new file mode 100644
index 00000000..3b5136cc
--- /dev/null
+++ b/ippisite/ippidb/templates/admin-session.html
@@ -0,0 +1,25 @@
+{% extends "base.html" %}
+
+    
+{% block title %}inhibitors of Protein-Protein Interaction Database{% endblock %}
+
+{% block content %}
+<div id="mainnav">
+    <nav class="secondary-nav">
+        <div class="inner-wrap">
+            <ul>
+            	<li>
+                    <a hfref="/admin-session/view">View Content</a>
+                </li>
+                <li>
+                    <a href="/admin-session/add">Add New Content</a>
+                </li>
+                <li>
+                    <a hfref="/admin-session/update">Update Content</a>
+                </li>
+            </ul>
+        </div>
+    </nav>
+</div>
+Here the template of admin session
+{% endblock %}
diff --git a/ippisite/ippidb/templates/admin.html b/ippisite/ippidb/templates/admin.html
deleted file mode 100644
index dc665f10..00000000
--- a/ippisite/ippidb/templates/admin.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "base.html" %}
-
-    
-{% block title %}inhibitors of Protein-Protein Interaction Database{% endblock %}
-
-{% block content %}
-Here the template of admin session
-{% endblock %}
diff --git a/ippisite/ippidb/templates/base.html b/ippisite/ippidb/templates/base.html
index f170e24a..a497b809 100644
--- a/ippisite/ippidb/templates/base.html
+++ b/ippisite/ippidb/templates/base.html
@@ -52,13 +52,13 @@
                             <a href="/about">About</a>
                         </li>
                         <li>
-                            <a href="/submit">Submit</a>
+                            <a href="/query">Query</a>
                         </li>
                         <li>
                             <a href="/tutorials">Tutorials</a>
                         </li>
                         <li>
-                            <a href="/admin">Admin</a>
+                            <a href="/admin-session">Admin</a>
                         </li>
                     </ul>
                 </div>
diff --git a/ippisite/ippidb/templates/submit.html b/ippisite/ippidb/templates/query.html
similarity index 100%
rename from ippisite/ippidb/templates/submit.html
rename to ippisite/ippidb/templates/query.html
diff --git a/ippisite/ippidb/templates/wizard_form.html b/ippisite/ippidb/templates/wizard_form.html
new file mode 100644
index 00000000..db6e3d7c
--- /dev/null
+++ b/ippisite/ippidb/templates/wizard_form.html
@@ -0,0 +1,28 @@
+{% extends "base.html" %}
+{% load i18n %}
+
+{% block head %}
+{{ wizard.form.media }}
+{% endblock %}
+
+{% block content %}
+<p>Step {{ wizard.steps.step1 }} of {{ wizard.steps.count }}</p>
+<form action="" method="post">{% csrf_token %}
+<table>
+{{ wizard.management_form }}
+{% if wizard.form.forms %}
+    {{ wizard.form.management_form }}
+    {% for form in wizard.form.forms %}
+        {{ form }}
+    {% endfor %}
+{% else %}
+    {{ wizard.form }}
+{% endif %}
+</table>
+{% if wizard.steps.prev %}
+<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.first }}">{% trans "first step" %}</button>
+<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">{% trans "prev step" %}</button>
+{% endif %}
+<input type="submit" value="{% trans "submit" %}"/>
+</form>
+{% endblock %}
\ No newline at end of file
diff --git a/ippisite/ippidb/urls.py b/ippisite/ippidb/urls.py
index c693854e..d6f30609 100644
--- a/ippisite/ippidb/urls.py
+++ b/ippisite/ippidb/urls.py
@@ -1,10 +1,12 @@
 from django.conf.urls import url
 from . import views
 
+
 urlpatterns = [
     url(r'^$', views.index, name='index'),
     url(r'^about$', views.about, name='about'),
-    url(r'^submit$', views.submit, name='submit'),
+    url(r'^query$', views.query, name='query'),
     url(r'^tutorials$', views.tutorials, name='tutorials'),
-    url(r'^admin/add$', views.add, name='add'),
+	url(r'^admin-session$', views.adminSession, name='admin-session'),
+    url(r'^admin-session/add$', views.add, name='add'),
 ]
diff --git a/ippisite/ippidb/views.py b/ippisite/ippidb/views.py
index 00ab3e13..e97b18c3 100644
--- a/ippisite/ippidb/views.py
+++ b/ippisite/ippidb/views.py
@@ -1,18 +1,57 @@
 from django.shortcuts import render
+from formtools.wizard.views import SessionWizardView
+from django.http import HttpResponseRedirect
+from .forms import IdForm, BibliographyForm, PDBForm, ProteinForm, ProteinDomainComplexForm, PpiForm
 
 def index(request):
     return render(request, 'index.html')
 
-
 def about(request):
     return render(request, 'about.html')
 
-def submit(request):
-    return render(request, 'submit.html')
+def query(request):
+    return render(request, 'query.html')
 
 def tutorials(request):
     return render(request, 'tutorials.html')
 
+def adminSession(request):
+    return render(request, 'admin-session.html')
+
 def add(request):
-    return render(request, 'add.html')
+    # if this is a POST request we need to process the form data
+    if request.method == 'POST':
+        # create a form instance and populate it with data from the request:
+        form = IdForm(request.POST)
+        # check whether it's valid:
+        if form.is_valid():
+            # process the data in form.cleaned_data as required
+            # ...
+            # redirect to a new URL:
+            return HttpResponseRedirect('/admin-session/add')
+
+    # if a GET (or any other method) we'll create a blank form
+    else:
+        form = IdForm()
+
+    return render(request, 'add.html', {'ID': form})
+
+
+# def add(request):
+#     # if this is a POST request we need to process the form data
+#     if request.method == 'POST':
+#         # create a form instance and populate it with data from the request:
+#         form = BibliographyForm(request.POST)
+#         # check whether it's valid:
+#         if form.is_valid():
+#             # process the data in form.cleaned_data as required
+#             # ...
+#             # redirect to a new URL:
+#             return HttpResponseRedirect('/admin-session/add')
+
+#     # if a GET (or any other method) we'll create a blank form
+#     else:
+#         form = BibliographyForm()
+
+#     return render(request, 'add.html', {'Biblio': form})
 
diff --git a/ippisite/ippisite/settings.py b/ippisite/ippisite/settings.py
index 9eeee7eb..9d773ace 100644
--- a/ippisite/ippisite/settings.py
+++ b/ippisite/ippisite/settings.py
@@ -39,7 +39,8 @@ INSTALLED_APPS = [
     'django.contrib.staticfiles',
     'django_extensions',
     'bootstrap3',
-    'ippidb'
+    'ippidb',
+    'formtools',
 ]
 
 MIDDLEWARE = [
diff --git a/ippisite/ippisite/urls.py b/ippisite/ippisite/urls.py
index 1cacf0ad..188260bb 100644
--- a/ippisite/ippisite/urls.py
+++ b/ippisite/ippisite/urls.py
@@ -18,5 +18,5 @@ from django.contrib import admin
 
 urlpatterns = [
     url(r'^', include('ippidb.urls')),
-    url(r'^admin/', admin.site.urls),
+    url(r'^admin-django/', admin.site.urls),
 ]
diff --git a/ippisite/requirements.txt b/ippisite/requirements.txt
index 111a8cdd..21aad820 100644
--- a/ippisite/requirements.txt
+++ b/ippisite/requirements.txt
@@ -5,3 +5,4 @@ django-extensions
 pygraphviz
 pydot
 pyparsing
+django-formtools
\ No newline at end of file
diff --git a/ippisite/templates/admin/base_site.html b/ippisite/templates/admin-django/base_site.html
similarity index 80%
rename from ippisite/templates/admin/base_site.html
rename to ippisite/templates/admin-django/base_site.html
index f8adc2f6..71872196 100644
--- a/ippisite/templates/admin/base_site.html
+++ b/ippisite/templates/admin-django/base_site.html
@@ -1,4 +1,4 @@
-{% extends "admin/base_site.html" %}
+{% extends "admin-django/base_site.html" %}
 
 {% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
 
@@ -11,7 +11,7 @@
 {% endblock %}
 
 {% block branding %}
-<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>
+<h1 id="site-name"><a href="{% url 'admin-django:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>
 {% endblock %}
 
 {% block nav-global %}{% endblock %}
-- 
GitLab