From ddd1ae7c5b7d36e4f4701657747401c822369c9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana?= Date: Sun, 4 Jun 2023 22:51:02 +0200 Subject: [PATCH] Working with bootstrap-flask --- benchmark/scripts/flask_app/app.py | 18 ++++- benchmark/scripts/flask_app/main.py | 20 +++++ benchmark/scripts/flask_app/models.py | 14 ++++ .../scripts/flask_app/static/css/main.css | 13 ++++ .../scripts/flask_app/templates/_nav.html | 32 ++++++++ .../scripts/flask_app/templates/base.html | 75 +++++-------------- requirements.txt | 5 ++ 7 files changed, 118 insertions(+), 59 deletions(-) create mode 100644 benchmark/scripts/flask_app/models.py create mode 100644 benchmark/scripts/flask_app/templates/_nav.html diff --git a/benchmark/scripts/flask_app/app.py b/benchmark/scripts/flask_app/app.py index 11b6796..b4bd78d 100644 --- a/benchmark/scripts/flask_app/app.py +++ b/benchmark/scripts/flask_app/app.py @@ -1,15 +1,31 @@ #!/usr/bin/env python from flask import Flask +from flask_bootstrap import Bootstrap5 +from flask_login import LoginManager from .config import Config +from .models import User, db # from .results import results from .main import main +bootstrap = Bootstrap5() + +login_manager = LoginManager() + + +@login_manager.user_loader +def load_user(user_id): + return User.get(int(user_id)) + def create_app(): + # db.create_all() app = Flask(__name__) - app.register_blueprint(main) + bootstrap.init_app(app) # app.register_blueprint(results) app.config.from_object(Config) + login_manager.init_app(app) + login_manager.login_view = "login" app.jinja_env.auto_reload = True + app.register_blueprint(main) return app diff --git a/benchmark/scripts/flask_app/main.py b/benchmark/scripts/flask_app/main.py index d3e41a9..041c63a 100644 --- a/benchmark/scripts/flask_app/main.py +++ b/benchmark/scripts/flask_app/main.py @@ -31,3 +31,23 @@ def index(): # compare=compare.capitalize() == "True", # ) return render_template("index.html") + + +@main.route("/results") +def results(): + pass + + +@main.route("/datasets") +def datasets(): + pass + + +@main.route("/config") +def config(): + pass + + +@main.route("/login") +def login(): + return render_template("login.html") diff --git a/benchmark/scripts/flask_app/models.py b/benchmark/scripts/flask_app/models.py new file mode 100644 index 0000000..7650128 --- /dev/null +++ b/benchmark/scripts/flask_app/models.py @@ -0,0 +1,14 @@ +from flask_sqlalchemy import SQLAlchemy +from sqlalchemy import Column, Integer, String +from flask_login import UserMixin + +db = SQLAlchemy() + + +class User(UserMixin, db.Model): + id = Column(Integer, primary_key=True) + username = Column(String(64), index=True, unique=True) + password_hash = Column(String(128)) + + def __repr__(self): + return "".format(self.username) diff --git a/benchmark/scripts/flask_app/static/css/main.css b/benchmark/scripts/flask_app/static/css/main.css index e7f649c..294deb6 100644 --- a/benchmark/scripts/flask_app/static/css/main.css +++ b/benchmark/scripts/flask_app/static/css/main.css @@ -35,4 +35,17 @@ body { .navbar { margin-bottom: 20px; +} + +pre { + background: #ddd; + padding: 10px; +} + +h2 { + margin-top: 20px; +} + +footer { + margin: 20px; } \ No newline at end of file diff --git a/benchmark/scripts/flask_app/templates/_nav.html b/benchmark/scripts/flask_app/templates/_nav.html new file mode 100644 index 0000000..889a238 --- /dev/null +++ b/benchmark/scripts/flask_app/templates/_nav.html @@ -0,0 +1,32 @@ +{% from 'bootstrap5/nav.html' import render_nav_item %} + diff --git a/benchmark/scripts/flask_app/templates/base.html b/benchmark/scripts/flask_app/templates/base.html index b15f92b..5ec9ff3 100644 --- a/benchmark/scripts/flask_app/templates/base.html +++ b/benchmark/scripts/flask_app/templates/base.html @@ -1,58 +1,17 @@ -{% extends 'base_bulma.html' %} -{% block title %} - {% if title %} - {{ title }} - benchmark - {% else %} - Benchmark - {% endif %} -{% endblock %} -{% block navbar %} -
-
- -
- {% endblock %} - {% block content %} -
- {% with messages = get_flashed_messages() %} - {% if messages %} - {% for message in messages %}{% endfor %} - {% endif %} - {% endwith %} - {# application content needs to be provided in the app_content block #} - {% block app_content %}{% endblock %} -
- {% endblock %} + + + + {% block head %} + + + {% block styles %} + + {{ bootstrap.load_css() }} + {% endblock %} + Benchmark + {% endblock %} + + {% include "_nav.html" %} + {% block jscript %}{{ bootstrap.load_js() }}{% endblock %} + diff --git a/requirements.txt b/requirements.txt index 373795f..a2eeb93 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,11 @@ scikit-learn scipy python-dotenv flask +bootstrap-flask +flask-wtf +flask-login +flask-migrate +flask_sqlalchemy odte cython fimdlp