Convert ui methods into Flask globals

This commit is contained in:
richard-dds 2018-08-01 11:22:21 -04:00
parent 6a5d3d57cf
commit 29c68151de
4 changed files with 42 additions and 17 deletions

View File

@ -1,7 +1,8 @@
import os
import re
from configparser import ConfigParser
from redis import StrictRedis
from flask import Flask
from flask import Flask, request, g
from unipath import Path
from atst.api_client import ApiClient
@ -24,6 +25,8 @@ def make_app(config):
)
app.config.update(config)
make_flask_callbacks(app)
db.init_app(app)
assets.init_app(app)
@ -32,6 +35,21 @@ def make_app(config):
return app
def make_flask_callbacks(app):
@app.before_request
def set_globals():
g.navigationContext = 'workspace' if re.match('\/workspaces\/[A-Za-z0-9]*', request.url) else 'global'
g.dev = os.getenv("TORNADO_ENV", "dev") == "dev"
g.matchesPath = lambda href: re.match('^'+href, request.url)
g.modalOpen = request.args.get("modal", False)
# TODO: Make me a macro
def modal(self, body):
return self.render_string(
"components/modal.html.to",
body=body)
# def make_app(config, deps, **kwargs):
# routes = [
# url(r"/", Root, {"page": "root"}, name="root"),
@ -180,6 +198,15 @@ def make_deps(config):
),
}
def map_config(config):
return {
"ENV": config["default"]["ENVIRONMENT"],
"DEBUG": config["default"]["DEBUG"],
"PORT": int(config["default"]["PORT"]),
"SQLALCHEMY_DATABASE_URI": config["default"]["DATABASE_URI"],
"SQLALCHEMY_TRACK_MODIFICATIONS": False,
**config["default"]
}
def make_config():
BASE_CONFIG_FILENAME = os.path.join(os.path.dirname(__file__), "../config/base.ini")
@ -212,4 +239,4 @@ def make_config():
)
config.set("default", "DATABASE_URI", database_uri)
return config["default"]
return map_config(config)

View File

@ -1,4 +1,4 @@
from flask import Blueprint, render_template
from flask import Blueprint, render_template, g
bp = Blueprint("atst", __name__)

View File

@ -1,21 +1,21 @@
{# TODO: set this context elsewhere #}
{# set context='workspace' #}
{% set context=navigationContext() %}
{% set context=g.navigationContext %}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>{% block title %}JEDI{% end %}</title>
{% for url in assets['css'].urls() %}
<link rel="stylesheet" href="{{ url }}" type="text/css">
{% end %}
<title>{% block title %}JEDI{% endblock %}</title>
{% assets "css" %}
<link rel="stylesheet" href="{{ ASSET_URL }}" type="text/css">
{% endassets %}
<link rel="icon" type="image/x-icon" href="/static/img/favicon.ico">
</head>
<body class="{% if modalOpen() %} modalOpen{% end %}">
<body class="{% if g.modalOpen %} modalOpen{% endif %}">
{% block template_vars %}{% end %}
{% block template_vars %}{% endblock %}
{% include 'navigation/topbar.html.to' %}
@ -23,18 +23,16 @@
{% include 'navigation/global_navigation.html.to' %}
<div class='global-panel-container'>
{% block sidenav %}{% end %}
{% block sidenav %}{% endblock %}
{% block content %}
these are not the droids you are looking for
{% end %}
{% endblock %}
</div>
</div>
{% include 'footer.html.to' %}
{% block modal %}{% end %}
{% block modal %}{% endblock %}
</body>
</html>

View File

@ -1,4 +1,4 @@
{% extends "base.html.to" %}
{% extends "base.html" %}
{% block content %}
@ -8,7 +8,7 @@
</main>
{% end %}
{% endblock %}