admin views have its own blueprint

This commit is contained in:
Éloi Rivard 2021-12-26 19:59:20 +01:00
parent d839dd763d
commit 3804a2a4b0
11 changed files with 38 additions and 33 deletions

View file

@ -4,10 +4,7 @@ import os
from logging.config import dictConfig
import canaille.account
import canaille.admin.authorizations
import canaille.admin.clients
import canaille.admin.mail
import canaille.admin.tokens
import canaille.admin
import canaille.configuration
import canaille.consents
import canaille.groups
@ -216,16 +213,11 @@ def setup_blueprints(app):
app.url_map.strict_slashes = False
app.register_blueprint(canaille.account.bp)
app.register_blueprint(canaille.admin.bp, url_prefix="/admin")
app.register_blueprint(canaille.groups.bp, url_prefix="/groups")
app.register_blueprint(canaille.oauth.bp, url_prefix="/oauth")
app.register_blueprint(canaille.consents.bp, url_prefix="/consent")
app.register_blueprint(canaille.well_known.bp, url_prefix="/.well-known")
app.register_blueprint(canaille.admin.tokens.bp, url_prefix="/admin/token")
app.register_blueprint(
canaille.admin.authorizations.bp, url_prefix="/admin/authorization"
)
app.register_blueprint(canaille.admin.clients.bp, url_prefix="/admin/client")
app.register_blueprint(canaille.admin.mail.bp, url_prefix="/admin/mail")
def create_app(config=None, validate=True):

View file

@ -0,0 +1,13 @@
from flask import Blueprint
from . import authorizations
from . import clients
from . import mail
from . import tokens
bp = Blueprint("admin", __name__)
bp.register_blueprint(tokens.bp, url_prefix="/token")
bp.register_blueprint(authorizations.bp, url_prefix="/authorization")
bp.register_blueprint(clients.bp, url_prefix="/client")
bp.register_blueprint(mail.bp, url_prefix="/mail")

View file

@ -4,7 +4,7 @@ from flask import Blueprint
from flask_themer import render_template
bp = Blueprint("admin_authorizations", __name__)
bp = Blueprint("authorizations", __name__)
@bp.route("/")

View file

@ -15,7 +15,7 @@ from flask_wtf import FlaskForm
from werkzeug.security import gen_salt
bp = Blueprint("admin_clients", __name__)
bp = Blueprint("clients", __name__)
@bp.route("/")
@ -179,7 +179,7 @@ def add(user):
"success",
)
return redirect(url_for("admin_clients.edit", client_id=client_id))
return redirect(url_for("admin.clients.edit", client_id=client_id))
@bp.route("/edit/<client_id>", methods=["GET", "POST"])
@ -251,4 +251,4 @@ def client_delete(client_id):
"success",
)
client.delete()
return redirect(url_for("admin_clients.index"))
return redirect(url_for("admin.clients.index"))

View file

@ -15,7 +15,7 @@ from wtforms.validators import DataRequired
from wtforms.validators import Email
bp = Blueprint("admin_mails", __name__)
bp = Blueprint("mails", __name__)
class MailTestForm(FlaskForm):

View file

@ -4,7 +4,7 @@ from flask import Blueprint
from flask_themer import render_template
bp = Blueprint("admin_tokens", __name__)
bp = Blueprint("tokens", __name__)
@bp.route("/")

View file

@ -22,8 +22,8 @@
</thead>
{% for authorization in authorizations %}
<tr>
<td><a href="{{ url_for('admin_authorizations.view', authorization_id=authorization.oauthCode) }}">{{ authorization.oauthCode }}</a></td>
<td><a href="{{ url_for('admin_clients.edit', client_id=authorization.oauthClientID) }}">{{ authorization.oauthClientID }}</a></td>
<td><a href="{{ url_for('admin.authorizations.view', authorization_id=authorization.oauthCode) }}">{{ authorization.oauthCode }}</a></td>
<td><a href="{{ url_for('admin.clients.edit', client_id=authorization.oauthClientID) }}">{{ authorization.oauthClientID }}</a></td>
<td>{{ authorization.oauthSubject }}</td>
<td>{{ authorization.issue_date }}</td>
</tr>

View file

@ -14,7 +14,7 @@
{% block content %}
<div class="ui segment">
<a class="ui primary button" href="{{ url_for('admin_clients.add') }}">{% trans %}Add client{% endtrans %}</a>
<a class="ui primary button" href="{{ url_for('admin.clients.add') }}">{% trans %}Add client{% endtrans %}</a>
</div>
<table class="ui table">
@ -27,7 +27,7 @@
{% for client in clients %}
<tr>
<td>
<a href="{{ url_for('admin_clients.edit', client_id=client.oauthClientID) }}">
<a href="{{ url_for('admin.clients.edit', client_id=client.oauthClientID) }}">
{% if client.oauthLogoURI %}
<img class="ui avatar image" src="{{ client.oauthLogoURI }}" alt="Client logo">
{% else %}
@ -35,7 +35,7 @@
{% endif %}
</a>
</td>
<td><a href="{{ url_for('admin_clients.edit', client_id=client.oauthClientID) }}">{{ client.oauthClientName }}</a></td>
<td><a href="{{ url_for('admin.clients.edit', client_id=client.oauthClientID) }}">{{ client.oauthClientName }}</a></td>
<td><a href="{{ client.oauthClientURI }}">{{ client.oauthClientURI }}</a></td>
<td>{% if client.issue_date %}{{ client.issue_date }}{% endif %}</td>
</tr>

View file

@ -36,8 +36,8 @@
<div class="item">
<div class="right floated content">
<div class="ui buttons">
<a class="ui button" href="{{ url_for("admin_mails.password_init_txt") }}">TXT</a>
<a class="ui button" href="{{ url_for("admin_mails.password_init_html") }}">HTML</a>
<a class="ui button" href="{{ url_for("admin.mails.password_init_txt") }}">TXT</a>
<a class="ui button" href="{{ url_for("admin.mails.password_init_html") }}">HTML</a>
</div>
</div>
<div class="middle aligned content">
@ -48,8 +48,8 @@
<div class="item">
<div class="right floated content">
<div class="ui buttons">
<a class="ui button" href="{{ url_for("admin_mails.password_reset_txt") }}">TXT</a>
<a class="ui button" href="{{ url_for("admin_mails.password_reset_html") }}">HTML</a>
<a class="ui button" href="{{ url_for("admin.mails.password_reset_txt") }}">TXT</a>
<a class="ui button" href="{{ url_for("admin.mails.password_reset_html") }}">HTML</a>
</div>
</div>
<div class="middle aligned content">
@ -60,8 +60,8 @@
<div class="item">
<div class="right floated content">
<div class="ui buttons">
<a class="ui button" href="{{ url_for("admin_mails.invitation_txt", uid=user.uid, email=user.mail[0]) }}">TXT</a>
<a class="ui button" href="{{ url_for("admin_mails.invitation_html", uid=user.uid, email=user.mail[0]) }}">HTML</a>
<a class="ui button" href="{{ url_for("admin.mails.invitation_txt", uid=user.uid, email=user.mail[0]) }}">TXT</a>
<a class="ui button" href="{{ url_for("admin.mails.invitation_html", uid=user.uid, email=user.mail[0]) }}">HTML</a>
</div>
</div>
<div class="middle aligned content">

View file

@ -22,8 +22,8 @@
</thead>
{% for token in tokens %}
<tr>
<td><a href="{{ url_for('admin_tokens.view', token_id=token.oauthAccessToken) }}">{{ token.oauthAccessToken }}</a></td>
<td><a href="{{ url_for('admin_clients.edit', client_id=token.oauthClientID) }}">{{ token.oauthClientID }}</a></td>
<td><a href="{{ url_for('admin.tokens.view', token_id=token.oauthAccessToken) }}">{{ token.oauthAccessToken }}</a></td>
<td><a href="{{ url_for('admin.clients.edit', client_id=token.oauthClientID) }}">{{ token.oauthClientID }}</a></td>
<td>{{ token.oauthSubject }}</td>
<td>{{ token.issue_date }}</td>
</tr>

View file

@ -64,19 +64,19 @@
<i class="settings icon"></i>
Admin
<div class="menu">
<a class="item" href="{{ url_for('admin_clients.index') }}">
<a class="item" href="{{ url_for('admin.clients.index') }}">
<i class="plug icon"></i>
{% trans %}Clients{% endtrans %}
</a>
<a class="item" href="{{ url_for('admin_tokens.index') }}">
<a class="item" href="{{ url_for('admin.tokens.index') }}">
<i class="key icon"></i>
{% trans %}Tokens{% endtrans %}
</a>
<a class="item" href="{{ url_for('admin_authorizations.index') }}">
<a class="item" href="{{ url_for('admin.authorizations.index') }}">
<i class="user secret icon"></i>
{% trans %}Codes{% endtrans %}
</a>
<a class="item" href="{{ url_for('admin_mails.mail_index') }}">
<a class="item" href="{{ url_for('admin.mails.mail_index') }}">
<i class="user mail icon"></i>
{% trans %}Emails{% endtrans %}
</a>