|
1 | 1 | import datetime |
2 | 2 | import logging |
3 | | -from urllib.parse import quote |
| 3 | +from urllib.parse import quote, parse_qsl |
4 | 4 | from collections import ( |
5 | 5 | defaultdict, |
6 | 6 | ) |
@@ -1019,9 +1019,27 @@ def make_link(ep): |
1019 | 1019 | # Add "up" link. |
1020 | 1020 | AcquisitionFeed.add_link_to_feed(feed=opds_feed.feed, rel="up", href=annotator.lane_url(lane), title=str(lane.display_name)) |
1021 | 1021 |
|
1022 | | - # Add URLs to change faceted views |
1023 | | - for args in cls.facet_links(annotator, facets): |
1024 | | - AcquisitionFeed.add_link_to_feed(feed=opds_feed.feed, **args) |
| 1022 | + # Add URLs to change enabled faceted views |
| 1023 | + enabled_order_facets = list(facets.enabled_facets)[0] |
| 1024 | + all_order_facets = filter( |
| 1025 | + lambda facet: "Sort by" in facet.values(), |
| 1026 | + cls.facet_links(annotator, facets) |
| 1027 | + ) |
| 1028 | + original_facet = facets.order |
| 1029 | + for facet in all_order_facets: |
| 1030 | + order = dict(parse_qsl(facet["href"])).get('order') |
| 1031 | + if order in enabled_order_facets: |
| 1032 | + facets.order = order |
| 1033 | + if order == original_facet: |
| 1034 | + facet = cls.facet_link(href=facet["href"], title=facet["title"], facet_group_name="Sort by", is_active=True) |
| 1035 | + else: |
| 1036 | + facet = cls.facet_link(href=facet["href"], title=facet["title"], facet_group_name="Sort by", is_active=False) |
| 1037 | + # cls.facet_links generates a /feed/ url, but we want to use |
| 1038 | + # search_url to generate a /search/ url. We also want to generate |
| 1039 | + # the facet url for this given ordering facet instead of the original facet. |
| 1040 | + facet["href"] = annotator.search_url(lane, query, pagination=None, facets=facets) |
| 1041 | + AcquisitionFeed.add_link_to_feed(feed=opds_feed.feed, **facet) |
| 1042 | + facets.order = original_facet |
1025 | 1043 |
|
1026 | 1044 | # We do not add breadcrumbs to this feed since you're not |
1027 | 1045 | # technically searching the this lane; you are searching the |
|
0 commit comments