Skip to content

Commit cff39b9

Browse files
authored
Merge pull request internetarchive#11070 from jimchamp/10971/bug/subject-carousel-date-filtering
Fix date filtering for main subject page carousel
2 parents aff005c + 41d0fda commit cff39b9

File tree

3 files changed

+28
-13
lines changed

3 files changed

+28
-13
lines changed

openlibrary/plugins/openlibrary/js/carousel/Carousel.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,8 @@ export class Carousel {
154154
pageMode: loadMore.pageMode,
155155
hasFulltextOnly: loadMore.hasFulltextOnly,
156156
secondaryAction: loadMore.secondaryAction,
157-
key: loadMore.key
157+
key: loadMore.key,
158+
...loadMore.extraParams
158159
});
159160
this.appendLoadingSlide();
160161
$.ajax({url: url, type: 'GET'})

openlibrary/plugins/openlibrary/partials.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@
1414
from openlibrary.plugins.openlibrary.lists import get_user_lists
1515
from openlibrary.plugins.upstream.checkins import get_reading_goals
1616
from openlibrary.plugins.worksearch.code import do_search, work_search
17-
from openlibrary.plugins.worksearch.subjects import get_subject
17+
from openlibrary.plugins.worksearch.subjects import (
18+
date_range_to_publish_year_filter,
19+
get_subject,
20+
)
1821
from openlibrary.views.loanstats import get_trending_books
1922

2023

@@ -189,8 +192,12 @@ def _do_subjects_query(self, params: dict) -> list:
189192
pseudoKey = params.get("q", "")
190193
offset = int(params.get("page", 1))
191194
limit = int(params.get("limit", 18))
195+
published_in = params.get("published_in", "")
196+
publish_year = date_range_to_publish_year_filter(published_in)
192197

193-
subject = get_subject(pseudoKey, offset=offset, limit=limit)
198+
subject = get_subject(
199+
pseudoKey, offset=offset, limit=limit, publish_year=publish_year
200+
)
194201
return subject.get("works", [])
195202

196203

openlibrary/plugins/worksearch/subjects.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -112,16 +112,10 @@ def GET(self, key):
112112
if i.get('has_fulltext') == 'true':
113113
filters['has_fulltext'] = 'true'
114114

115-
if i.get('published_in'):
116-
if '-' in i.published_in:
117-
begin, end = i.published_in.split('-', 1)
118-
119-
if safeint(begin, None) is not None and safeint(end, None) is not None:
120-
filters['publish_year'] = f'[{begin} TO {end}]'
121-
else:
122-
y = safeint(i.published_in, None)
123-
if y is not None:
124-
filters['publish_year'] = i.published_in
115+
if publish_year_filter := date_range_to_publish_year_filter(
116+
i.get('published_in')
117+
):
118+
filters['publish_year'] = publish_year_filter
125119

126120
subject_results = get_subject(
127121
key,
@@ -142,6 +136,19 @@ def process_key(self, key):
142136
return key
143137

144138

139+
def date_range_to_publish_year_filter(published_in: str) -> str:
140+
if published_in:
141+
if '-' in published_in:
142+
begin, end = published_in.split('-', 1)
143+
if safeint(begin, None) is not None and safeint(end, None) is not None:
144+
return f'[{begin} TO {end}]'
145+
else:
146+
year = safeint(published_in, None)
147+
if year is not None:
148+
return published_in
149+
return ''
150+
151+
145152
SubjectType = Literal["subject", "place", "person", "time"]
146153

147154
SubjectPseudoKey = str

0 commit comments

Comments
 (0)