Add users blueprint
This commit is contained in:
parent
ba4b392db8
commit
f3c98dad27
|
@ -2,7 +2,8 @@ from flask import Flask, render_template, g
|
||||||
|
|
||||||
from .models import *
|
from .models import *
|
||||||
from .markdown import *
|
from .markdown import *
|
||||||
from .adapters.session_simple import session_provider
|
from .blueprints.session_simple import session_provider
|
||||||
|
from .blueprints.user_default import user_provider
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
app.config["SECRET_KEY"] = "changeme"
|
app.config["SECRET_KEY"] = "changeme"
|
||||||
|
@ -13,6 +14,7 @@ db.init_app(app)
|
||||||
migrate.init_app(app, db)
|
migrate.init_app(app, db)
|
||||||
|
|
||||||
app.register_blueprint(session_provider, url_prefix="/session")
|
app.register_blueprint(session_provider, url_prefix="/session")
|
||||||
|
app.register_blueprint(user_provider, url_prefix="/users")
|
||||||
|
|
||||||
|
|
||||||
@app.route("/")
|
@app.route("/")
|
||||||
|
|
|
@ -6,7 +6,7 @@ Log In
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h2>Log In</h2>
|
<h2>Log In</h2>
|
||||||
<form action="{{ url_for(request.endpoint) }}" method="POST">
|
<form action="{{ url_for(".login") }}" method="POST">
|
||||||
<input type="hidden" style="display:none" name="_csrf" value="{{ csrf }}" />
|
<input type="hidden" style="display:none" name="_csrf" value="{{ csrf }}" />
|
||||||
<input type="text" name="username" placeholder="Username" />
|
<input type="text" name="username" placeholder="Username" />
|
||||||
<input type="submit" />
|
<input type="submit" />
|
|
@ -0,0 +1,16 @@
|
||||||
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
User List
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h2>
|
||||||
|
User list
|
||||||
|
</h2>
|
||||||
|
<ul>
|
||||||
|
{% for user in users %}
|
||||||
|
<li><a href="{{ url_for(".show_user", username=user.username) }}">{{ user.username }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,15 @@
|
||||||
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
{{user.username}}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h2>
|
||||||
|
{{user.username}}
|
||||||
|
{% if is_self %}
|
||||||
|
(You)
|
||||||
|
{% endif %}
|
||||||
|
</h2>
|
||||||
|
<p>This is a user profile</p>
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,23 @@
|
||||||
|
from flask import Blueprint, render_template, g
|
||||||
|
import secrets
|
||||||
|
|
||||||
|
from ..models import User, db
|
||||||
|
|
||||||
|
__all__ = ["user_provider"]
|
||||||
|
|
||||||
|
user_provider = Blueprint("user", __name__, template_folder='templates')
|
||||||
|
|
||||||
|
@user_provider.route("/")
|
||||||
|
def show_user_list():
|
||||||
|
users = User.query.all()
|
||||||
|
# TODO: pagination...
|
||||||
|
return render_template("user_list.html", users=users)
|
||||||
|
|
||||||
|
@user_provider.route("/<username>")
|
||||||
|
def show_user(username):
|
||||||
|
is_self = g.wl_user is not None and username == g.wl_user.username
|
||||||
|
if is_self:
|
||||||
|
user = g.wl_user
|
||||||
|
else:
|
||||||
|
user = User.query.filter_by(username=username).first_or_404()
|
||||||
|
return render_template("user_profile.html", user=user, is_self=is_self)
|
|
@ -12,7 +12,7 @@ class User(db.Model):
|
||||||
avatar = db.Column(db.String, nullable=True)
|
avatar = db.Column(db.String, nullable=True)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"<User {self.username}>"
|
return f"<User {self.id} {self.username} {self.email} {self.avatar}>"
|
||||||
|
|
||||||
class Section(db.Model):
|
class Section(db.Model):
|
||||||
__tablename__ = "sections"
|
__tablename__ = "sections"
|
||||||
|
|
Loading…
Reference in New Issue