Add users blueprint

This commit is contained in:
xenia 2019-05-31 21:42:55 -04:00
parent ba4b392db8
commit f3c98dad27
8 changed files with 59 additions and 3 deletions

View File

@ -2,7 +2,8 @@ from flask import Flask, render_template, g
from .models 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.config["SECRET_KEY"] = "changeme"
@ -13,6 +14,7 @@ db.init_app(app)
migrate.init_app(app, db)
app.register_blueprint(session_provider, url_prefix="/session")
app.register_blueprint(user_provider, url_prefix="/users")
@app.route("/")

View File

@ -6,7 +6,7 @@ Log In
{% block content %}
<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="text" name="username" placeholder="Username" />
<input type="submit" />

View File

@ -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 %}

View File

@ -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 %}

View File

@ -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)

View File

@ -12,7 +12,7 @@ class User(db.Model):
avatar = db.Column(db.String, nullable=True)
def __repr__(self):
return f"<User {self.username}>"
return f"<User {self.id} {self.username} {self.email} {self.avatar}>"
class Section(db.Model):
__tablename__ = "sections"