feat: automatically import extension blueprints
This commit is contained in:
parent
7212bad783
commit
30cf2e9f99
4 changed files with 133 additions and 106 deletions
|
|
@ -6,6 +6,10 @@ end_of_line = lf
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[*.{html,js,json}]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
|
||||||
[*.md]
|
[*.md]
|
||||||
trim_trailing_whitespace = false
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import importlib
|
||||||
import json
|
import json
|
||||||
import requests
|
import requests
|
||||||
import uuid
|
import uuid
|
||||||
|
|
@ -9,12 +10,17 @@ from lnurl import Lnurl, LnurlWithdrawResponse
|
||||||
from . import bolt11
|
from . import bolt11
|
||||||
from .core import core_app
|
from .core import core_app
|
||||||
from .db import init_databases, open_db
|
from .db import init_databases, open_db
|
||||||
from .extensions.withdraw import withdraw_ext
|
|
||||||
from .helpers import ExtensionManager, megajson
|
from .helpers import ExtensionManager, megajson
|
||||||
from .settings import WALLET, DEFAULT_USER_WALLET_NAME, FEE_RESERVE
|
from .settings import WALLET, DEFAULT_USER_WALLET_NAME, FEE_RESERVE
|
||||||
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
valid_extensions = [ext for ext in ExtensionManager().extensions if ext.is_valid]
|
||||||
|
|
||||||
|
|
||||||
|
# optimization & security
|
||||||
|
# -----------------------
|
||||||
|
|
||||||
Talisman(
|
Talisman(
|
||||||
app,
|
app,
|
||||||
content_security_policy={
|
content_security_policy={
|
||||||
|
|
@ -32,20 +38,41 @@ Talisman(
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# blueprints / extensions
|
||||||
|
# -----------------------
|
||||||
|
|
||||||
|
app.register_blueprint(core_app)
|
||||||
|
|
||||||
|
for ext in valid_extensions:
|
||||||
|
try:
|
||||||
|
ext_module = importlib.import_module(f"lnbits.extensions.{ext.code}")
|
||||||
|
app.register_blueprint(getattr(ext_module, f"{ext.code}_ext"), url_prefix=f"/{ext.code}")
|
||||||
|
except Exception:
|
||||||
|
raise ImportError(f"Please make sure that the extension `{ext.code}` follows conventions.")
|
||||||
|
|
||||||
|
|
||||||
# filters
|
# filters
|
||||||
app.jinja_env.globals["EXTENSIONS"] = [ext for ext in ExtensionManager().extensions if ext.is_valid]
|
# -------
|
||||||
|
|
||||||
|
app.jinja_env.globals["EXTENSIONS"] = valid_extensions
|
||||||
app.jinja_env.filters["megajson"] = megajson
|
app.jinja_env.filters["megajson"] = megajson
|
||||||
|
|
||||||
# blueprints
|
|
||||||
app.register_blueprint(core_app)
|
|
||||||
app.register_blueprint(withdraw_ext, url_prefix="/withdraw")
|
|
||||||
|
|
||||||
|
# init
|
||||||
|
# ----
|
||||||
|
|
||||||
@app.before_first_request
|
@app.before_first_request
|
||||||
def init():
|
def init():
|
||||||
init_databases()
|
init_databases()
|
||||||
|
|
||||||
|
|
||||||
|
# vvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||||
|
# move the rest to `core_app`
|
||||||
|
# vvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||||
|
# vvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||||||
|
|
||||||
|
|
||||||
@app.route("/deletewallet")
|
@app.route("/deletewallet")
|
||||||
def deletewallet():
|
def deletewallet():
|
||||||
user_id = request.args.get("usr")
|
user_id = request.args.get("usr")
|
||||||
|
|
|
||||||
|
|
@ -23,9 +23,7 @@
|
||||||
<ul class="treeview-menu">
|
<ul class="treeview-menu">
|
||||||
{% for w in user_wallets %}
|
{% for w in user_wallets %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ url_for('wallet') }}?wal={{ w.id }}&usr={{ w.user }}"
|
<a href="{{ url_for('wallet') }}?wal={{ w.id }}&usr={{ w.user }}"><i class="fa fa-bolt"></i> {{ w.name }}</a>
|
||||||
><i class="fa fa-bolt"></i> {{ w.name }}</a
|
|
||||||
>
|
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<li><a onclick="sidebarmake()">Add a wallet +</a></li>
|
<li><a onclick="sidebarmake()">Add a wallet +</a></li>
|
||||||
|
|
@ -46,23 +44,21 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ url_for('extensions') }}?usr={{ user }}">Manager </a></li>
|
<a href="{{ url_for('extensions') }}?usr={{ user }}">Manager</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<!-- Right side column. Contains the navbar and content of the page -->
|
<!-- Right side column. Contains the navbar and content of the page -->
|
||||||
<div class="content-wrapper">
|
<div class="content-wrapper">
|
||||||
|
|
||||||
<!-- Content Header (Page header) -->
|
<!-- Content Header (Page header) -->
|
||||||
<section class="content-header">
|
<section class="content-header">
|
||||||
<div id="wonga"></div>
|
<div id="wonga"></div>
|
||||||
<h1>Wallet <small>Control panel</small></h1>
|
<h1>Wallet <small>Control panel</small></h1>
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li>
|
<li><a href="#"><i class="fa fa-dashboard"></i> Home</a></li>
|
||||||
<a href="#"><i class="fa fa-dashboard"></i> Home</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">Extensions</li>
|
<li class="active">Extensions</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
|
@ -108,11 +104,11 @@
|
||||||
</div>
|
</div>
|
||||||
<!-- /.content -->
|
<!-- /.content -->
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
window.user = {{ user | megajson | safe }}
|
window.user = {{ user | megajson | safe }}
|
||||||
window.user_wallets = {{ user_wallets | megajson | safe }}
|
window.user_wallets = {{ user_wallets | megajson | safe }}
|
||||||
window.user_ext = {{ user_ext | megajson | safe }}
|
window.user_ext = {{ user_ext | megajson | safe }}
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue