Partially implement search
This commit is contained in:
parent
f664cd1a08
commit
35dba4991b
@ -123,6 +123,9 @@ class Kanji(Base):
|
|||||||
|
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
def render(self):
|
||||||
|
return self.character
|
||||||
|
|
||||||
@blueprint.route("/id/<int:kanji_id>")
|
@blueprint.route("/id/<int:kanji_id>")
|
||||||
def kanji_by_id(kanji_id: int):
|
def kanji_by_id(kanji_id: int):
|
||||||
session = get_jiten_db()
|
session = get_jiten_db()
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
from flask import Blueprint, render_template, request
|
from flask import Blueprint, render_template, request
|
||||||
|
from sqlalchemy import select
|
||||||
|
|
||||||
|
from kanken_online.api import Goon, Kanji, Kanon, Kanyoon, Kun, Soon, Toon
|
||||||
|
from kanken_online.database import get_jiten_db
|
||||||
|
|
||||||
blueprint = Blueprint("search", __name__, url_prefix="/search")
|
blueprint = Blueprint("search", __name__, url_prefix="/search")
|
||||||
|
|
||||||
@ -7,6 +11,58 @@ def search_results(args: dict):
|
|||||||
def render(self):
|
def render(self):
|
||||||
return "ok"
|
return "ok"
|
||||||
results = [renderable(), renderable()] # Do something with args
|
results = [renderable(), renderable()] # Do something with args
|
||||||
|
|
||||||
|
jiten = get_jiten_db()
|
||||||
|
|
||||||
|
query = select(Kanji).where(
|
||||||
|
Kanji.character == args["keywords"]
|
||||||
|
).where(
|
||||||
|
Kanji.stroke_count.between((args["stroke_min"] or 0), (args["stroke_max"] or 100))
|
||||||
|
)
|
||||||
|
|
||||||
|
if args["radical"]:
|
||||||
|
query = query.where(
|
||||||
|
Kanji.radical == args["radical"]
|
||||||
|
)
|
||||||
|
|
||||||
|
if args["kanon"]:
|
||||||
|
query = query.where(
|
||||||
|
Kanji.kanon.any(Kanon.reading.in_([args["kanon"]]))
|
||||||
|
)
|
||||||
|
|
||||||
|
if args["goon"]:
|
||||||
|
query = query.where(
|
||||||
|
Kanji.goon.any(Goon.reading.in_([args["goon"]]))
|
||||||
|
)
|
||||||
|
|
||||||
|
if args["soon"]:
|
||||||
|
query = query.where(
|
||||||
|
Kanji.soon.any(Soon.reading.in_([args["soon"]]))
|
||||||
|
)
|
||||||
|
|
||||||
|
if args["toon"]:
|
||||||
|
query = query.where(
|
||||||
|
Kanji.toon.any(Toon.reading.in_([args["toon"]]))
|
||||||
|
)
|
||||||
|
|
||||||
|
if args["kanyoon"]:
|
||||||
|
query = query.where(
|
||||||
|
Kanji.kanyoon.any(Kanyoon.reading.in_([args["kanyoon"]]))
|
||||||
|
)
|
||||||
|
|
||||||
|
if args["kun"]:
|
||||||
|
query = query.where(
|
||||||
|
Kanji.kun.any(Kun.reading.in_([args["kun"]]))
|
||||||
|
)
|
||||||
|
|
||||||
|
# if args["onkun"]:
|
||||||
|
# query = query.where(
|
||||||
|
# Kanji.kun.any(Kun.reading.in_([args["kun"]]))
|
||||||
|
# )
|
||||||
|
|
||||||
|
results = [row[0] for row in jiten.execute(query).all()]
|
||||||
|
# print(list(map(Kanji.to_json, results)))
|
||||||
|
|
||||||
return render_template("search/search_results.html", results=results, value=args["keywords"])
|
return render_template("search/search_results.html", results=results, value=args["keywords"])
|
||||||
|
|
||||||
@blueprint.route("/")
|
@blueprint.route("/")
|
||||||
|
Loading…
Reference in New Issue
Block a user