diff --git a/tubearchivist/home/templates/home/home.html b/tubearchivist/home/templates/home/home.html index 63679b5..5f32a20 100644 --- a/tubearchivist/home/templates/home/home.html +++ b/tubearchivist/home/templates/home/home.html @@ -6,11 +6,25 @@
-

Sort order from {{ sortorder }} +

Sort by {{ sort_by }} +

diff --git a/tubearchivist/home/views.py b/tubearchivist/home/views.py index 871a064..34337d6 100644 --- a/tubearchivist/home/views.py +++ b/tubearchivist/home/views.py @@ -58,6 +58,7 @@ class HomeView(View): url = self.ES_URL + "/ta_video/_search" data = self.build_data( pagination_handler, + view_config["sort_by"], view_config["sort_order"], search_get, view_config["hide_watched"], @@ -70,7 +71,8 @@ class HomeView(View): context = { "videos": videos_hits, "pagination": pagination_handler.pagination, - "sortorder": view_config["sort_order"], + "sort_by": view_config["sort_by"], + "sort_order": view_config["sort_order"], "hide_watched": view_config["hide_watched"], "colors": view_config["colors"], "view_style": view_config["view_style"], @@ -78,27 +80,31 @@ class HomeView(View): return render(request, "home/home.html", context) @staticmethod - def build_data(pagination_handler, sort_order, search_get, hide_watched): + def build_data( + pagination_handler, sort_by, sort_order, search_get, hide_watched + ): """build the data dict for the search query""" page_size = pagination_handler.pagination["page_size"] page_from = pagination_handler.pagination["page_from"] + + # overwrite sort_by to match key + if sort_by == "views": + sort_by = "stats.view_count" + elif sort_by == "likes": + sort_by = "stats.like_count" + elif sort_by == "downloaded": + sort_by = "date_downloaded" + data = { "size": page_size, "from": page_from, "query": {"match_all": {}}, - "sort": [ - {"published": {"order": "desc"}}, - {"date_downloaded": {"order": "desc"}}, - ], + "sort": [{sort_by: {"order": sort_order}}], } - # define sort - if sort_order == "downloaded": - del data["sort"][0] - if search_get: - del data["sort"] if hide_watched: data["query"] = {"term": {"player.watched": {"value": False}}} if search_get: + del data["sort"] query = { "multi_match": { "query": search_get, @@ -109,6 +115,8 @@ class HomeView(View): } data["query"] = query + print(data) + return data @staticmethod @@ -117,13 +125,19 @@ class HomeView(View): config_handler = AppConfig().config colors = config_handler["application"]["colors"] view_style = config_handler["default_view"]["home"] + + sort_by = RedisArchivist().get_message("sort_by") + if sort_by == {"status": False}: + sort_by = "published" sort_order = RedisArchivist().get_message("sort_order") - if not sort_order: - sort_order = "published" + if sort_order == {"status": False}: + sort_order = "desc" + hide_watched = RedisArchivist().get_message("hide_watched") view_config = { "colors": colors, "view_style": view_style, + "sort_by": sort_by, "sort_order": sort_order, "hide_watched": hide_watched, } @@ -664,7 +678,12 @@ class PostData: def sort_order(self): """change the sort between published to downloaded""" sort_order = self.exec_val - RedisArchivist().set_message("sort_order", sort_order, expire=False) + if sort_order in ["asc", "desc"]: + RedisArchivist().set_message( + "sort_order", sort_order, expire=False + ) + else: + RedisArchivist().set_message("sort_by", sort_order, expire=False) return {"success": True} def hide_watched(self):