diff --git a/front_end/dpath.py b/front_end/dpath.py
index f546048b2975c80ab19cc5cb2443fab1f79d1982..d3957eaeba0484dcbd756e11dd48d276c30a6a2a 100644
--- a/front_end/dpath.py
+++ b/front_end/dpath.py
@@ -1,7 +1,5 @@
from flask import Flask, render_template, url_for, flash, redirect, request
import requests
-import urllib.request
-import os
from werkzeug.utils import secure_filename
@@ -38,6 +36,11 @@ def reports():
reports = requests.get(f'{REPORTS_SERVICE_URL}/dpath/report').json()
return render_template('reports.html', reports=reports)
+@app.route(f'/{BASE_URL}/reports/<string:report_id>')
+def get_report(report_id):
+ report = requests.get(f'{REPORTS_SERVICE_URL}/dpath/report/{report_id}').json()
+ return render_template('reportDetail.html', report=report)
+
@app.route('/', methods=['GET', "POST"])
def upload_image():
@@ -50,10 +53,8 @@ def upload_image():
return redirect(request.url)
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
- file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
- # print('upload_image filename: ' + filename)
- flash('Image successfully uploaded.')
- return render_template('home.html', filename=filename)
+ report = post_file(request)
+ return render_template('reportDetail.html', report=report)
else:
flash('Allowed image types are - png, jpg, jpeg, gif, tif')
return redirect(request.url)
@@ -61,9 +62,9 @@ def upload_image():
@app.route('/display/<filename>')
def display_image(filename):
- # print('display_image filename: ' + filename)
return redirect(url_for('static', filename='uploads/' + filename), code=301)
-if __name__ == "__main__":
- app.run(debug=True)
\ No newline at end of file
+def post_file(request) :
+ response = requests.post(f'{REPORTS_SERVICE_URL}/{BASE_URL}/report/image', files=request.files).json()
+ return response
\ No newline at end of file
diff --git a/front_end/templates/home.html b/front_end/templates/home.html
index d093e9c5848c4e7eac306994b387edec149b106a..e40bed638318b3a1e5b6fa97e22aa99f65deb3a9 100644
--- a/front_end/templates/home.html
+++ b/front_end/templates/home.html
@@ -8,6 +8,7 @@
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
</head>
<body>
+ {% include 'includes/navbar.html' %}
<h1>Welcome to the Digital Pathology Slide Analyzer.</h1>
<br>
<h2>Please select a file to upload.</h2>
diff --git a/front_end/templates/includes/navbar.html b/front_end/templates/includes/navbar.html
index 26c03b78ba13c25805be6dea9da533bc998799fe..a9474ccb0ba4e90cb08c85df624400180d17f2f4 100644
--- a/front_end/templates/includes/navbar.html
+++ b/front_end/templates/includes/navbar.html
@@ -2,10 +2,10 @@
<a class="navbar-brand" href="#">Digital Pathology</a>
<ul class="navbar-nav mr-auto">
<li class="nav-item">
- <a class="nav-link" href="./reports">Reports</a>
+ <a class="nav-link" href="{{ url_for('home')}}">Home</a>
</li>
<li class="nav-item">
- <a class="nav-link" href="#">New Report</a>
+ <a class="nav-link" href="{{ url_for('reports')}}">Reports</a>
</li>
</ul>
</nav>
\ No newline at end of file
diff --git a/front_end/templates/includes/reportDetail.html b/front_end/templates/includes/reportDetail.html
new file mode 100644
index 0000000000000000000000000000000000000000..a1e0ffb4fcb74921ef2d87e8c60a80a99f65c96e
--- /dev/null
+++ b/front_end/templates/includes/reportDetail.html
@@ -0,0 +1,28 @@
+{% block content %}
+<table class="report-detail-table">
+ <th class="left">Details</th>
+ <tr>
+ <td>Id</td>
+ <td>{{ report.id }}</td>
+ </tr>
+ <tr>
+ <td>Report Date</td>
+ <td>{{ report.report.runDate }}</td>
+ </tr>
+ <tr>
+ <td>Report Status</td>
+ <td>Todo</td>
+ </tr>
+ <tr>
+ <td>Diagnosis</td>
+ <td>{{ report.report.diagnosis }}</td>
+ </tr>
+ <tr>
+ <td>Mild Chips</td>
+ <td>{{ report.report.chipPredictions.mild}}</td>
+ </tr>
+ <tr>
+ <td>Severe Chips</td>
+ <td>{{ report.report.chipPredictions.severe}}</td>
+ </tr>
+{% endblock %}
\ No newline at end of file
diff --git a/front_end/templates/includes/reports.html b/front_end/templates/includes/reports.html
index 00d5fbd3bdd0d3245cbd49effe568d927b1bc371..2186ea15abd8af6c2ca9c080a16fbccfdc580f54 100644
--- a/front_end/templates/includes/reports.html
+++ b/front_end/templates/includes/reports.html
@@ -1,16 +1,19 @@
{% block content %}
<h1>{% block title %} Reports {% endblock %}</h1>
- <table class="report-table">
- <th class="left">Id</th>
- <th class="left">Status</th>
- <th class="right">Run Date</th>
- {% for report in reports %}
- <tr>
- <td class="left">{{ report.id }}</td>
- <td class="left">Completed</td>
- <td class="right">{{ report.report.runDate }}</td>
- </tr>
- {% endfor %}
- </table>
+<table class="report-table">
+ <th class="left">Id</th>
+ <th class="left">Status</th>
+ <th class="right">Run Date</th>
+ {% for report in reports %}
+ <tr>
- {% endblock %}
\ No newline at end of file
+ <td class="left">
+ <a href="{{ url_for('get_report', report_id=report.id)}}">{{ report.id }}</a>
+ </td>
+ <td class="left">Completed</td>
+ <td class="right">{{ report.report.runDate }}</td>
+ </tr>
+ {% endfor %}
+</table>
+
+{% endblock %}
\ No newline at end of file
diff --git a/front_end/templates/reportDetail.html b/front_end/templates/reportDetail.html
new file mode 100644
index 0000000000000000000000000000000000000000..cbe840b1fbfd4a3e88386000a5fcf72f6fbd3256
--- /dev/null
+++ b/front_end/templates/reportDetail.html
@@ -0,0 +1,13 @@
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>Reports</title>
+ {% include 'includes/stylesload.html' %}
+</head>
+
+<body>
+ {% include 'includes/navbar.html' %}
+ <div class="container">
+ {% include 'includes/reportDetail.html' %}
+ </div>
+</body>
\ No newline at end of file
diff --git a/upload_service/Dockerfile b/upload_service/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..4e3e978300bc26b2cc3ff4a56381e4acf303bd6e
--- /dev/null
+++ b/upload_service/Dockerfile
@@ -0,0 +1,13 @@
+# syntax=docker/dockerfile:1
+
+FROM python:3.8-slim-buster
+WORKDIR /upload_service
+
+RUN pip3 install flask
+RUN pip3 install boto3
+RUN pip3 install faker
+
+COPY . .
+
+EXPOSE 5001
+CMD flask --app app run -p 5001
\ No newline at end of file
diff --git a/upload_service/app.py b/upload_service/app.py
index f8db6706b00e3e09d43f0c81e54317373d556a16..c1e35219258c75ed31bcf2c42a816fb4ae15e6f6 100644
--- a/upload_service/app.py
+++ b/upload_service/app.py
@@ -18,7 +18,7 @@ VALID_EXTENSIONS = [
PREFIX = 'dpath'
-@app.route(f'/{PREFIX}/report/<int:report_id>', methods=['GET'])
+@app.route(f'/{PREFIX}/report/<string:report_id>', methods=['GET'])
def get_report(report_id) :
provider = Provider()
return jsonify(provider.get_report(report_id))
@@ -32,14 +32,15 @@ def get_reports() :
@app.route(f'/{PREFIX}/report/image', methods=['POST'])
def upload_image():
+ print("reached")
response = validate_request(request)
if response.status_code == 400:
return response
provider = Provider()
id = uuid.uuid1()
- provider.save_binary(request.files['file'], id)
- response = jsonify(Model(id).start())
+ response = jsonify(provider.create_report(""))
+ # response = jsonify(Model(id).start())
response.status_code = 201
return response
@@ -53,10 +54,10 @@ def validate_request(request):
return response
file = file = request.files['file']
- if invalid_extension(file.filename.rsplit('.', 1)[1].lower()):
- response = jsonify({'message' : 'Allowed file types are png, tiff'})
- response.status_code = 400
- return response
+ # if invalid_extension(file.filename.rsplit('.', 1)[1].lower()):
+ # response = jsonify({'message' : 'Allowed file types are png, tiff'})
+ # response.status_code = 400
+ # return response
if invalid_filename(file):
response = jsonify({'message' : 'No file selected for uploading'})
response.status_code = 400
diff --git a/upload_service/test_report_provider.py b/upload_service/test_report_provider.py
index a586cf23c9e89370f889d417088226266b66261f..3fc051275650f19e75c1d5615c5efa4506e36dc4 100644
--- a/upload_service/test_report_provider.py
+++ b/upload_service/test_report_provider.py
@@ -23,5 +23,4 @@ class Provider:
def get_report(self, id):
report = self.create_report("")
- report.id = id
return report
\ No newline at end of file