From f3c98dad27e0b54a0042be67472386b40fbe80e3 Mon Sep 17 00:00:00 2001 From: haskal Date: Fri, 31 May 2019 21:42:55 -0400 Subject: [PATCH] Add users blueprint --- wikilain/__init__.py | 4 +++- wikilain/{adapters => blueprints}/__init__.py | 0 .../session_simple.py | 0 .../templates/login_form.html | 2 +- wikilain/blueprints/templates/user_list.html | 16 +++++++++++++ .../blueprints/templates/user_profile.html | 15 ++++++++++++ wikilain/blueprints/user_default.py | 23 +++++++++++++++++++ wikilain/models.py | 2 +- 8 files changed, 59 insertions(+), 3 deletions(-) rename wikilain/{adapters => blueprints}/__init__.py (100%) rename wikilain/{adapters => blueprints}/session_simple.py (100%) rename wikilain/{adapters => blueprints}/templates/login_form.html (82%) create mode 100644 wikilain/blueprints/templates/user_list.html create mode 100644 wikilain/blueprints/templates/user_profile.html create mode 100644 wikilain/blueprints/user_default.py diff --git a/wikilain/__init__.py b/wikilain/__init__.py index 0c8e17b..06009cc 100644 --- a/wikilain/__init__.py +++ b/wikilain/__init__.py @@ -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("/") diff --git a/wikilain/adapters/__init__.py b/wikilain/blueprints/__init__.py similarity index 100% rename from wikilain/adapters/__init__.py rename to wikilain/blueprints/__init__.py diff --git a/wikilain/adapters/session_simple.py b/wikilain/blueprints/session_simple.py similarity index 100% rename from wikilain/adapters/session_simple.py rename to wikilain/blueprints/session_simple.py diff --git a/wikilain/adapters/templates/login_form.html b/wikilain/blueprints/templates/login_form.html similarity index 82% rename from wikilain/adapters/templates/login_form.html rename to wikilain/blueprints/templates/login_form.html index a1a7087..5afe3d4 100644 --- a/wikilain/adapters/templates/login_form.html +++ b/wikilain/blueprints/templates/login_form.html @@ -6,7 +6,7 @@ Log In {% block content %}

Log In

-
+ diff --git a/wikilain/blueprints/templates/user_list.html b/wikilain/blueprints/templates/user_list.html new file mode 100644 index 0000000..6a5c38e --- /dev/null +++ b/wikilain/blueprints/templates/user_list.html @@ -0,0 +1,16 @@ +{% extends 'base.html' %} + +{% block title %} +User List +{% endblock %} + +{% block content %} +

+ User list +

+ +{% endblock %} diff --git a/wikilain/blueprints/templates/user_profile.html b/wikilain/blueprints/templates/user_profile.html new file mode 100644 index 0000000..37cffc0 --- /dev/null +++ b/wikilain/blueprints/templates/user_profile.html @@ -0,0 +1,15 @@ +{% extends 'base.html' %} + +{% block title %} +{{user.username}} +{% endblock %} + +{% block content %} +

+ {{user.username}} + {% if is_self %} + (You) + {% endif %} +

+

This is a user profile

+{% endblock %} diff --git a/wikilain/blueprints/user_default.py b/wikilain/blueprints/user_default.py new file mode 100644 index 0000000..683d100 --- /dev/null +++ b/wikilain/blueprints/user_default.py @@ -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("/") +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) diff --git a/wikilain/models.py b/wikilain/models.py index 2327fbb..3eab016 100644 --- a/wikilain/models.py +++ b/wikilain/models.py @@ -12,7 +12,7 @@ class User(db.Model): avatar = db.Column(db.String, nullable=True) def __repr__(self): - return f"" + return f"" class Section(db.Model): __tablename__ = "sections"