mirror of
https://github.com/simon987/od-database.git
synced 2025-04-19 02:16:47 +00:00
Filter by extension type
This commit is contained in:
parent
a0bd45c829
commit
8ea57967e6
9
app.py
9
app.py
@ -231,9 +231,13 @@ def search():
|
||||
per_page = int(per_page) if per_page.isdigit() else "50"
|
||||
per_page = per_page if per_page in config.RESULTS_PER_PAGE else 50
|
||||
|
||||
extensions = request.args.get("ext") if "ext" in request.args else ""
|
||||
extensions = [ext.strip().strip(".") for ext in extensions.split(",")] if extensions else []
|
||||
print(extensions)
|
||||
|
||||
if len(q) >= 3:
|
||||
try:
|
||||
hits = searchEngine.search(q, page, per_page, sort_order)
|
||||
hits = searchEngine.search(q, page, per_page, sort_order, extensions)
|
||||
hits = db.join_website_on_search_result(hits)
|
||||
except InvalidQueryException as e:
|
||||
flash("<strong>Invalid query:</strong> " + str(e), "warning")
|
||||
@ -243,7 +247,8 @@ def search():
|
||||
|
||||
return render_template("search.html",
|
||||
results=hits, q=q, p=page, sort_order=sort_order,
|
||||
per_page=per_page, results_set=config.RESULTS_PER_PAGE)
|
||||
per_page=per_page, results_set=config.RESULTS_PER_PAGE,
|
||||
extensions=",".join(extensions))
|
||||
|
||||
|
||||
@app.route("/contribute")
|
||||
|
@ -16,7 +16,7 @@ class SearchEngine:
|
||||
def import_json(self, in_str: str, website_id: int):
|
||||
raise NotImplementedError
|
||||
|
||||
def search(self, query, page, per_page, sort_order) -> {}:
|
||||
def search(self, query, page, per_page, sort_order, extension) -> {}:
|
||||
raise NotImplementedError
|
||||
|
||||
def reset(self):
|
||||
@ -142,9 +142,11 @@ class ElasticSearchEngine(SearchEngine):
|
||||
action_string = '{"index":{}}\n'
|
||||
return "\n".join("".join([action_string, ujson.dumps(doc)]) for doc in docs)
|
||||
|
||||
def search(self, query, page, per_page, sort_order) -> {}:
|
||||
def search(self, query, page, per_page, sort_order, extensions) -> {}:
|
||||
|
||||
filters = []
|
||||
if extensions:
|
||||
filters.append({"terms": {"ext": extensions}})
|
||||
sort_by = ElasticSearchEngine.SORT_ORDERS.get(sort_order, [])
|
||||
|
||||
page = self.es.search(body={
|
||||
|
@ -169,6 +169,12 @@ a:hover {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.input-group-text {
|
||||
border: 1px solid #282b30;
|
||||
background-color: #686d75;
|
||||
color: #e9ecef;
|
||||
}
|
||||
|
||||
.nav-tabs .nav-link {
|
||||
border-color: transparent;
|
||||
}
|
||||
|
@ -12,9 +12,12 @@
|
||||
<form action="/search">
|
||||
|
||||
<div class="form-row">
|
||||
|
||||
{# Query #}
|
||||
<div class="form-group col-md-7">
|
||||
<input class="form-control" name="q" id="q" placeholder="Full-text Query" value="{{ q }}">
|
||||
<input class="form-control" name="q" id="q" placeholder="Query" value="{{ q }}">
|
||||
</div>
|
||||
{# Sort order #}
|
||||
<div class="form-group col-md-3">
|
||||
<select class="form-control" name="sort_order" title="Sort order">
|
||||
<option disabled>Select sort order</option>
|
||||
@ -26,6 +29,7 @@
|
||||
<option value="none" {{ "selected" if sort_order == "none" else "" }}>No order (faster)</option>
|
||||
</select>
|
||||
</div>
|
||||
{# Results per page #}
|
||||
<div class="form-group col-md-2">
|
||||
<select class="form-control" name="per_page" title="Results per page">
|
||||
<option disabled>Results per page</option>
|
||||
@ -35,6 +39,21 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{# Filters #}
|
||||
<span class="text-muted">Filters</span>
|
||||
<div class="form-row">
|
||||
|
||||
{# File extension #}
|
||||
<div class="form-group col-md-6">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">.</div>
|
||||
</div>
|
||||
<input name="ext" placeholder="Extensions, comma-separated" class="form-control" value="{{ extensions }}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<input class="btn btn-primary btn-shadow" type="submit" value="Search">
|
||||
|
||||
@ -88,11 +107,11 @@
|
||||
</table>
|
||||
</div>
|
||||
{% if results["hits"]["total"] > (p + 1) * per_page %}
|
||||
<a href="/search?q={{ q }}&p={{ p + 1 }}&sort_order={{ sort_order }}&per_page={{ per_page }}"
|
||||
<a href="/search?q={{ q }}&p={{ p + 1 }}&sort_order={{ sort_order }}&per_page={{ per_page }}&ext={{ extensions }}"
|
||||
class="btn btn-primary" style="float: right">Next</a>
|
||||
{% endif %}
|
||||
{% if p > 0 %}
|
||||
<a href="/search?q={{ q }}&p={{ p - 1 }}&sort_order={{ sort_order }}&per_page={{ per_page }}"
|
||||
<a href="/search?q={{ q }}&p={{ p - 1 }}&sort_order={{ sort_order }}&per_page={{ per_page }}&ext={{ extensions }}"
|
||||
class="btn btn-primary">Previous</a>
|
||||
{% endif %}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user