aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNavan Chauhan <navanchauhan@gmail.com>2020-07-07 22:20:03 +0530
committerNavan Chauhan <navanchauhan@gmail.com>2020-07-07 22:20:03 +0530
commit724c8b3f4a4f5c3122d0761ec8cd572b75381d96 (patch)
treeb266986834069afcd6c0b856c25c136b778d4ad6
parentf8c389102242736f620968a1d280092ce6fe6434 (diff)
added job status form
-rw-r--r--app/forms.py5
-rw-r--r--app/templates/base.html3
-rw-r--r--app/templates/home.html3
-rw-r--r--app/templates/job_status.html10
-rw-r--r--app/templates/job_status_error.html6
-rw-r--r--app/templates/job_status_form.html15
-rw-r--r--app/views.py32
7 files changed, 71 insertions, 3 deletions
diff --git a/app/forms.py b/app/forms.py
index e0f7bc1..47f423d 100644
--- a/app/forms.py
+++ b/app/forms.py
@@ -29,4 +29,7 @@ class curieForm(FlaskForm):
center_y = DecimalField('Center Y',default=0)
center_z = DecimalField('Center Z',default=0)
- email = StringField('Email', validators=[DataRequired(), Email()]) \ No newline at end of file
+ email = StringField('Email', validators=[DataRequired(), Email()])
+
+class statusForm(FlaskForm):
+ jobID = StringField('Job ID',validators=[DataRequired()]) \ No newline at end of file
diff --git a/app/templates/base.html b/app/templates/base.html
index e8adc2e..3e43671 100644
--- a/app/templates/base.html
+++ b/app/templates/base.html
@@ -35,6 +35,9 @@
<li class="nav-item">
<a class="nav-link" href="{{ url_for('dock_upload') }}">Dock and Report</a>
</li>
+ <li class="nav-item">
+ <a class="nav-link" href="{{ url_for('status') }}">Job Status</a>
+ </li>
</ul>
</div>
</nav>
diff --git a/app/templates/home.html b/app/templates/home.html
index f7a7c78..02c71dd 100644
--- a/app/templates/home.html
+++ b/app/templates/home.html
@@ -2,8 +2,9 @@
{% block main %}
<h2>Curie Web Demo</h2>
- <p>The dock and report demo performs molecular docking using AutoDock Vina and then finds protein-ligand interactions using PLIP</p>
+ <p>Dock and Report performs molecular docking using AutoDock Vina, generates visualisations using PyMOL and then finds protein-ligand interactions using PLIP. It then compiles all of this into a PDF report and emails it to you.</p>
<ul>
<li><a href="{{ url_for('dock_upload') }}">Dock and Report</a></li>
+ <li><a href="{{ url_for('status')}}">Job Status</a></li>
</ul>
{% endblock %} \ No newline at end of file
diff --git a/app/templates/job_status.html b/app/templates/job_status.html
new file mode 100644
index 0000000..e113650
--- /dev/null
+++ b/app/templates/job_status.html
@@ -0,0 +1,10 @@
+{% extends 'base.html' %}
+
+{% block main %}
+ <h2>Job ID: {{ ID }}</h2>
+ <b>Submitted On: </b>{{subDate}}<br>
+ <b>Target Name: </b>{{pn}}<br>
+ <b>Ligand Name: </b>{{ln}}<br>
+ <b>Description: </b>{{desc}}<br>
+ <b>Status: </b>{{status}}
+{% endblock %} \ No newline at end of file
diff --git a/app/templates/job_status_error.html b/app/templates/job_status_error.html
new file mode 100644
index 0000000..633e347
--- /dev/null
+++ b/app/templates/job_status_error.html
@@ -0,0 +1,6 @@
+{% extends 'base.html' %}
+
+{% block main %}
+ <h2>Job ID: {{ job }}</h2>
+ <p>This Job ID does not exist 😠. If you think this is an error, please contact us.</p>
+{% endblock %} \ No newline at end of file
diff --git a/app/templates/job_status_form.html b/app/templates/job_status_form.html
new file mode 100644
index 0000000..f940a6d
--- /dev/null
+++ b/app/templates/job_status_form.html
@@ -0,0 +1,15 @@
+{% extends 'base.html' %}
+
+{% block main %}
+ <h2>Get Job Status</h2>
+ <form action="{{ url_for('status') }}" method="post" enctype="multipart/form-data">
+ {% include 'flash_messages.html' %}
+ {{ form.csrf_token }}
+ <div class="form-group">
+ {{ form.jobID.label }}
+ {{ form.jobID(class="form-control") }}
+ </div>
+
+ <button class="btn btn-primary">Get Status</button>
+ </form>
+{% endblock %} \ No newline at end of file
diff --git a/app/views.py b/app/views.py
index fd1f466..3769d75 100644
--- a/app/views.py
+++ b/app/views.py
@@ -12,7 +12,7 @@ from string import digits, ascii_lowercase
# Note: that when using Flask-WTF we need to import the Form Class that we created
# in forms.py
-from .forms import MyForm, curieForm
+from .forms import MyForm, curieForm, statusForm
def gen_word(N, min_N_dig, min_N_low):
choose_from = [digits]*min_N_dig + [ascii_lowercase]*min_N_low
@@ -47,6 +47,36 @@ def visualise():
"""Render visualisation page."""
return render_template('visualise.html')
+@app.route('/Status',methods=['GET','POST'])
+def status():
+ taskStatusForm = statusForm()
+
+ if request.method == 'POST':
+ if taskStatusForm.validate_on_submit():
+ jobID = taskStatusForm.jobID.data
+ import mysql.connector as con
+ mycon = con.connect(host=app.config['DB_HOST'],user=app.config['DB_USER'],password=app.config['DB_PASSWORD'],port=app.config['DB_PORT'],database=app.config['DB_NAME'])
+ mycursor = mycon.cursor()
+ sqlQuery = 'select id, protein_name, ligand_name, date, description, done from curieweb where id="%s"' % (jobID)
+ mycursor.execute(sqlQuery)
+ records = mycursor.fetchall()
+ if records == []:
+ return render_template('job_status_error.html',job=jobID)
+ else:
+ r = records[0]
+ protein_name = r[1]
+ ligand_name = r[2]
+ date = r[3]
+ description = r[4]
+ done = r[5]
+ if done==1:
+ done="Completed"
+ elif done==0:
+ done="Queued"
+ return render_template('job_status.html',ID=jobID,pn=protein_name,ln=ligand_name,subDate=date,desc=description,status=done)
+ flash_errors(taskStatusForm)
+ return render_template('job_status_form.html',form=taskStatusForm)
+
@app.route('/basic-form', methods=['GET', 'POST'])
def basic_form():