Extract todo app to allow test bootstrap

This commit is contained in:
Ivan Habunek 2018-11-20 19:12:12 +01:00 committed by Drew DeVault
parent ad7b56713f
commit 6194e1c1a6
2 changed files with 62 additions and 60 deletions

View File

@ -1,67 +1,8 @@
from srht.config import cfg
from srht.database import DbSession
from srht.flask import SrhtFlask
from todosrht import urls, filters
from todosrht.flask import TodoApp
db = DbSession(cfg("todo.sr.ht", "connection-string"))
from todosrht.types import User
from todosrht.types import EventType
from todosrht.types import TicketAccess, TicketStatus, TicketResolution
db.init()
class TodoApp(SrhtFlask):
def __init__(self):
super().__init__("todo.sr.ht", __name__)
self.url_map.strict_slashes = False
from todosrht.blueprints.html import html
from todosrht.blueprints.tracker import tracker
from todosrht.blueprints.ticket import ticket
self.register_blueprint(html)
self.register_blueprint(tracker)
self.register_blueprint(ticket)
self.add_template_filter(filters.label_badge)
self.add_template_filter(urls.label_search_url)
self.add_template_filter(urls.ticket_edit_url)
self.add_template_filter(urls.ticket_url)
self.add_template_filter(urls.tracker_labels_url)
self.add_template_filter(urls.tracker_url)
self.add_template_filter(urls.user_url)
meta_client_id = cfg("todo.sr.ht", "oauth-client-id")
meta_client_secret = cfg("todo.sr.ht", "oauth-client-secret")
self.configure_meta_auth(meta_client_id, meta_client_secret)
@self.context_processor
def inject():
return {
"EventType": EventType,
"TicketAccess": TicketAccess,
"TicketStatus": TicketStatus,
"TicketResolution": TicketResolution
}
@self.login_manager.user_loader
def user_loader(username):
# TODO: Switch to a session token
return User.query.filter(User.username == username).one_or_none()
def lookup_or_register(self, exchange, profile, scopes):
user = User.query.filter(User.username == profile["username"]).first()
if not user:
user = User()
db.session.add(user)
user.username = profile.get("username")
user.email = profile.get("email")
user.oauth_token = exchange["token"]
user.oauth_token_expires = exchange["expires"]
user.oauth_token_scopes = scopes
db.session.commit()
return user
app = TodoApp()

61
todosrht/flask.py Normal file
View File

@ -0,0 +1,61 @@
from srht.config import cfg
from srht.database import db
from srht.flask import SrhtFlask
from todosrht import urls, filters
from todosrht.types import EventType
from todosrht.types import TicketAccess, TicketStatus, TicketResolution
from todosrht.types import User
class TodoApp(SrhtFlask):
def __init__(self):
super().__init__("todo.sr.ht", __name__)
self.url_map.strict_slashes = False
from todosrht.blueprints.html import html
from todosrht.blueprints.tracker import tracker
from todosrht.blueprints.ticket import ticket
self.register_blueprint(html)
self.register_blueprint(tracker)
self.register_blueprint(ticket)
self.add_template_filter(filters.label_badge)
self.add_template_filter(urls.label_search_url)
self.add_template_filter(urls.ticket_edit_url)
self.add_template_filter(urls.ticket_url)
self.add_template_filter(urls.tracker_labels_url)
self.add_template_filter(urls.tracker_url)
self.add_template_filter(urls.user_url)
meta_client_id = cfg("todo.sr.ht", "oauth-client-id")
meta_client_secret = cfg("todo.sr.ht", "oauth-client-secret")
self.configure_meta_auth(meta_client_id, meta_client_secret)
@self.context_processor
def inject():
return {
"EventType": EventType,
"TicketAccess": TicketAccess,
"TicketStatus": TicketStatus,
"TicketResolution": TicketResolution
}
@self.login_manager.user_loader
def user_loader(username):
# TODO: Switch to a session token
return User.query.filter(User.username == username).one_or_none()
def lookup_or_register(self, exchange, profile, scopes):
user = User.query.filter(User.username == profile["username"]).first()
if not user:
user = User()
db.session.add(user)
user.username = profile.get("username")
user.email = profile.get("email")
user.oauth_token = exchange["token"]
user.oauth_token_expires = exchange["expires"]
user.oauth_token_scopes = scopes
db.session.commit()
return user