Implement date picker

This commit is contained in:
2022-08-03 07:20:30 +01:00
parent 2ce90a43f5
commit d8b96ad66e
4 changed files with 177 additions and 88 deletions

View File

@@ -152,6 +152,8 @@ def query_results(request, size=None):
message = None
message_class = None
add_bool = []
add_top = []
sort = None
if request.user.is_anonymous:
sizes = settings.OPENSEARCH_MAIN_SIZES_ANON
else:
@@ -172,6 +174,40 @@ def query_results(request, size=None):
if source != "all":
add_bool.append({"src": source})
if "dates" in request.POST:
dates = request.POST["dates"]
spl = dates.split(" - ")
if all(spl):
spl = [f"{x.replace(' ', 'T')}Z" for x in spl]
if not len(spl) == 2:
message = "Invalid dates"
message_class = "danger"
return {"message": message, "class": message_class}
from_ts, to_ts = spl
range_query = {
"range": {
"ts": {
"gt": from_ts,
"lt": to_ts,
}
}
}
add_top.append(range_query)
if "sorting" in request.POST:
sorting = request.POST["sorting"]
if sorting not in ("asc", "desc", "none"):
message = "Invalid sort"
message_class = "danger"
return {"message": message, "class": message_class}
if sorting in ("asc", "desc"):
sort = [
{
"ts": {
"order": sorting,
}
}
]
if "check-sentiment" in request.POST:
if "sentiment" in request.POST:
sentiment = request.POST["sentiment"]
@@ -188,6 +224,11 @@ def query_results(request, size=None):
if add_bool:
for item in add_bool:
search_query["query"]["bool"]["must"].append({"match": item})
if add_top:
for item in add_top:
search_query["query"]["bool"]["must"].append(item)
if sort:
search_query["sort"] = sort
results = run_main_query(
client,
request.user, # passed through run_main_query to filter_blacklisted
@@ -280,12 +321,5 @@ def construct_query(query, size):
]
}
},
"sort": [
{
"ts": {
"order": "desc",
}
}
],
}
return query