Compare commits

..

No commits in common. "6b11bf4537432ad06146a83e4044e9d664597111" and "84ed2a578548e18df9849772ca430bc89428c00b" have entirely different histories.

2 changed files with 4 additions and 42 deletions

View file

@ -26,7 +26,7 @@ from suou import twocolon_list, WantsContentType
from .colors import color_themes, theme_classes from .colors import color_themes, theme_classes
__version__ = '0.5.0-dev42' __version__ = '0.5.0-dev40'
APP_BASE_DIR = os.path.dirname(os.path.dirname(__file__)) APP_BASE_DIR = os.path.dirname(os.path.dirname(__file__))

View file

@ -1,10 +1,9 @@
from __future__ import annotations from __future__ import annotations
from typing import Iterable
from quart import session from flask import abort
from quart import abort, Blueprint, redirect, request, url_for
from pydantic import BaseModel from pydantic import BaseModel
from quart import Blueprint, redirect, request, url_for
from quart_auth import AuthUser, current_user, login_required, login_user, logout_user from quart_auth import AuthUser, current_user, login_required, login_user, logout_user
from quart_schema import QuartSchema, validate_request, validate_response from quart_schema import QuartSchema, validate_request, validate_response
from sqlalchemy import select from sqlalchemy import select
@ -15,7 +14,6 @@ from suou.quart import add_rest
from freak.accounts import LoginStatus, check_login from freak.accounts import LoginStatus, check_login
from freak.algorithms import public_timeline, top_guilds_query, topic_timeline, user_timeline from freak.algorithms import public_timeline, top_guilds_query, topic_timeline, user_timeline
from freak.search import SearchQuery
from ..models import Guild, Post, User, db from ..models import Guild, Post, User, db
from .. import UserLoader, app, app_config, __version__ as freak_version, csrf from .. import UserLoader, app, app_config, __version__ as freak_version, csrf
@ -57,15 +55,9 @@ async def health():
@bp.get('/oath') @bp.get('/oath')
async def oath(): async def oath():
try:
## pull csrf token from session
csrf_tok = session['csrf_token']
except Exception as e:
print(e)
abort(503, "csrf_token is null")
return dict( return dict(
## XXX might break any time! ## XXX might break any time!
csrf_token= csrf_tok csrf_token= await csrf._get_csrf_token()
) )
## TODO coverage of REST is still partial, but it's planned ## TODO coverage of REST is still partial, but it's planned
@ -266,35 +258,5 @@ async def top_guilds():
return dict(has=top_g) return dict(has=top_g)
## SEARCH ##
class QueryIn(BaseModel):
query: str
@bp.post('/search/top')
@validate_request(QueryIn)
async def search_top(data: QueryIn):
async with db as session:
sq = SearchQuery(data.query)
result: Iterable[Post] = (await session.execute(sq.select(Post, [Post.title]).limit(20))).scalars()
return dict(has = [p.feed_info() for p in result])
## SUGGEST
@bp.post("/suggest/guild")
@validate_request(QueryIn)
async def suggest_guild(data: QueryIn):
if not data.query.isidentifier():
return dict(has=[])
async with db as session:
sq = select(Guild).where(Guild.name.like(data.query + "%"))
result: Iterable[Guild] = (await session.execute(sq.limit(10))).scalars()
return dict(has = [g.simple_info() for g in result])