Skip to content
Snippets Groups Projects
Commit d7daee8e authored by dw927's avatar dw927
Browse files

Merge branch 'dwelsh' into 'main'

Dwelsh

See merge request !4
parents 2f535c7b ee750bfb
No related branches found
No related tags found
1 merge request!4Dwelsh
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
......@@ -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>
......
......@@ -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
{% 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
......@@ -6,7 +6,10 @@
<th class="right">Run Date</th>
{% for report in reports %}
<tr>
<td class="left">{{ report.id }}</td>
<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>
......
<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
# 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
......@@ -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
......
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment