mirror of
https://github.com/Doctorado-ML/benchmark.git
synced 2025-08-16 16:05:54 +00:00
Working with bootstrap-flask
This commit is contained in:
@@ -1,15 +1,31 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
|
from flask_bootstrap import Bootstrap5
|
||||||
|
from flask_login import LoginManager
|
||||||
from .config import Config
|
from .config import Config
|
||||||
|
from .models import User, db
|
||||||
|
|
||||||
# from .results import results
|
# from .results import results
|
||||||
from .main import main
|
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():
|
def create_app():
|
||||||
|
# db.create_all()
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
app.register_blueprint(main)
|
bootstrap.init_app(app)
|
||||||
# app.register_blueprint(results)
|
# app.register_blueprint(results)
|
||||||
app.config.from_object(Config)
|
app.config.from_object(Config)
|
||||||
|
login_manager.init_app(app)
|
||||||
|
login_manager.login_view = "login"
|
||||||
app.jinja_env.auto_reload = True
|
app.jinja_env.auto_reload = True
|
||||||
|
app.register_blueprint(main)
|
||||||
return app
|
return app
|
||||||
|
@@ -31,3 +31,23 @@ def index():
|
|||||||
# compare=compare.capitalize() == "True",
|
# compare=compare.capitalize() == "True",
|
||||||
# )
|
# )
|
||||||
return render_template("index.html")
|
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")
|
||||||
|
14
benchmark/scripts/flask_app/models.py
Normal file
14
benchmark/scripts/flask_app/models.py
Normal file
@@ -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 "<User {}>".format(self.username)
|
@@ -35,4 +35,17 @@ body {
|
|||||||
|
|
||||||
.navbar {
|
.navbar {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
background: #ddd;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
margin: 20px;
|
||||||
}
|
}
|
32
benchmark/scripts/flask_app/templates/_nav.html
Normal file
32
benchmark/scripts/flask_app/templates/_nav.html
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{% from 'bootstrap5/nav.html' import render_nav_item %}
|
||||||
|
<nav class="navbar navbar-expand-sm navbar-light bg-light mb-4 justify-content-end">
|
||||||
|
<div class="container">
|
||||||
|
<button class="navbar-toggler"
|
||||||
|
type="button"
|
||||||
|
data-bs-toggle="collapse"
|
||||||
|
data-bs-target="#navbarSupportedContent"
|
||||||
|
aria-controls="navbarSupportedContent"
|
||||||
|
aria-expanded="false"
|
||||||
|
aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||||
|
<!-- Left side of navbar -->
|
||||||
|
<ul class="navbar-nav me-auto">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="{{ url_for("main.index") }}">Home</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="navbar-nav justify-content-end">
|
||||||
|
{{ render_nav_item('main.results', 'Results') }}
|
||||||
|
{{ render_nav_item('main.datasets', 'Datasets') }}
|
||||||
|
{{ render_nav_item('main.config', 'Config') }}
|
||||||
|
{% if current_user.is_authenticated %}
|
||||||
|
{{ render_nav_item('main.logout', 'Logout') }}
|
||||||
|
{% else %}
|
||||||
|
{{ render_nav_item('main.login', 'Login') }}
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
@@ -1,58 +1,17 @@
|
|||||||
{% extends 'base_bulma.html' %}
|
<!DOCTYPE html>
|
||||||
{% block title %}
|
<html lang="en">
|
||||||
{% if title %}
|
<head>
|
||||||
{{ title }} - benchmark
|
{% block head %}
|
||||||
{% else %}
|
<meta charset="utf-8">
|
||||||
Benchmark
|
<meta name="viewport"
|
||||||
{% endif %}
|
content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
{% endblock %}
|
{% block styles %}
|
||||||
{% block navbar %}
|
<!-- Bootstrap CSS -->
|
||||||
<section class="hero is-fullheight is-default is-bold">
|
{{ bootstrap.load_css() }}
|
||||||
<div class="hero-head">
|
{% endblock %}
|
||||||
<nav class="navbar">
|
<title>Benchmark</title>
|
||||||
<div class="container">
|
{% endblock %}
|
||||||
<div class="navbar-brand">
|
</head>
|
||||||
<a class="navbar-item" href="../">
|
<body>{% include "_nav.html" %}</body>
|
||||||
<img src="../images/bulma.png" alt="Logo">
|
{% block jscript %}{{ bootstrap.load_js() }}{% endblock %}
|
||||||
</a>
|
</html>
|
||||||
<span class="navbar-burger burger" data-target="navbarMenu">
|
|
||||||
<span></span>
|
|
||||||
<span></span>
|
|
||||||
<span></span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div id="navbarMenu" class="navbar-menu">
|
|
||||||
<div class="navbar-end">
|
|
||||||
<div class="tabs is-right">
|
|
||||||
<ul>
|
|
||||||
<li id="home">
|
|
||||||
<a href="{{ url_for("main.index") }}">Home</a>
|
|
||||||
</li>
|
|
||||||
<li id="results">
|
|
||||||
<a href="">Results</a>
|
|
||||||
</li>
|
|
||||||
<li id="datasets">
|
|
||||||
<a href="">Datasets</a>
|
|
||||||
</li>
|
|
||||||
<li id="config">
|
|
||||||
<a href="">Config</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
{% block content %}
|
|
||||||
<div class="container">
|
|
||||||
{% with messages = get_flashed_messages() %}
|
|
||||||
{% if messages %}
|
|
||||||
{% for message in messages %}<div class="alert alert-info" role="alert">{{ message }}</div>{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
{% endwith %}
|
|
||||||
{# application content needs to be provided in the app_content block #}
|
|
||||||
{% block app_content %}{% endblock %}
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
|
@@ -3,6 +3,11 @@ scikit-learn
|
|||||||
scipy
|
scipy
|
||||||
python-dotenv
|
python-dotenv
|
||||||
flask
|
flask
|
||||||
|
bootstrap-flask
|
||||||
|
flask-wtf
|
||||||
|
flask-login
|
||||||
|
flask-migrate
|
||||||
|
flask_sqlalchemy
|
||||||
odte
|
odte
|
||||||
cython
|
cython
|
||||||
fimdlp
|
fimdlp
|
||||||
|
Reference in New Issue
Block a user