Skip to content

Commit 00686ec

Browse files
committed
Merge remote-tracking branch 'page_count/fix-series-list-view-sorts-by-name-instead-of-sort-field'
2 parents 83d331c + 1134f54 commit 00686ec

4 files changed

Lines changed: 16 additions & 10 deletions

File tree

cps/db.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -944,16 +944,13 @@ def order_authors(self, entries, list_return=False, combined=False):
944944
def get_typeahead(self, database, query, replace=('', ''), tag_filter=true()):
945945
query = query or ''
946946
self.create_functions()
947-
# self.session.connection().connection.connection.create_function("lower", 1, lcase)
948947
entries = self.session.query(database).filter(tag_filter). \
949948
filter(func.lower(database.name).ilike("%" + query + "%")).all()
950-
# json_dumps = json.dumps([dict(name=escape(r.name.replace(*replace))) for r in entries])
951949
json_dumps = json.dumps([dict(name=r.name.replace(*replace)) for r in entries])
952950
return json_dumps
953951

954952
def check_exists_book(self, authr, title):
955953
self.create_functions()
956-
# self.session.connection().connection.connection.create_function("lower", 1, lcase)
957954
q = list()
958955
author_terms = re.split(r'\s*&\s*', authr)
959956
for author_term in author_terms:
@@ -1111,7 +1108,7 @@ def speaking_language(self, languages=None, return_all_languages=False, with_cou
11111108
.group_by(text('books_languages_link.lang_code')).all()
11121109
tags = list()
11131110
for lang in languages:
1114-
tag = Category(isoLanguages.get_language_name(get_locale(), lang[0].lang_code), lang[0].lang_code)
1111+
tag = Category(isoLanguages.get_language_name(get_locale(), None, lang[0].lang_code), lang[0].lang_code)
11151112
tags.append([tag, lang[1]])
11161113
# Append all books without language to list
11171114
if not return_all_languages:
@@ -1121,7 +1118,7 @@ def speaking_language(self, languages=None, return_all_languages=False, with_cou
11211118
.filter(self.common_filters())
11221119
.count())
11231120
if no_lang_count:
1124-
tags.append([Category(_("None"), "none"), no_lang_count])
1121+
tags.append([Category(_("None"), None, "none"), no_lang_count])
11251122
return sorted(tags, key=lambda x: x[0].name.lower(), reverse=reverse_order)
11261123
else:
11271124
if not languages:
@@ -1175,14 +1172,25 @@ def lcase(s):
11751172
return s.lower()
11761173

11771174

1175+
def title_sort(title, config):
1176+
# calibre sort stuff
1177+
title_pat = re.compile(config.config_title_regex, re.IGNORECASE)
1178+
match = title_pat.search(title)
1179+
if match:
1180+
prep = match.group(1)
1181+
title = title[len(prep):] + ', ' + prep
1182+
return strip_whitespaces(title)
1183+
11781184
class Category:
11791185
name = None
1186+
sort = None
11801187
id = None
11811188
count = None
11821189
rating = None
11831190

11841191
def __init__(self, name, cat_id, rating=None):
11851192
self.name = name
1193+
self.sort = name
11861194
self.id = cat_id
11871195
self.rating = rating
11881196
self.count = 1

cps/editbooks.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1611,7 +1611,7 @@ def add_objects(db_book_object, db_object, db_session, db_type, add_elements):
16111611
if db_type == 'author':
16121612
new_element = db_object(add_element, helper.get_sorted_author(add_element.replace('|', ',')))
16131613
elif db_type == 'series':
1614-
new_element = db_object(add_element, add_element)
1614+
new_element = db_object(add_element, db.title_sort(add_element, config))
16151615
elif db_type == 'custom':
16161616
new_element = db_object(value=add_element)
16171617
elif db_type == 'publisher':
@@ -1642,7 +1642,7 @@ def create_objects_for_addition(db_element, add_element, db_type):
16421642
elif db_type == 'series':
16431643
if db_element.name != add_element:
16441644
db_element.name = add_element
1645-
db_element.sort = add_element
1645+
db_element.sort = db.title_sort(add_element, config)
16461646
elif db_type == 'author':
16471647
if db_element.name != add_element:
16481648
db_element.name = add_element

cps/search.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,6 @@ def render_adv_search_results(term, offset=None, order=None, limit=None):
258258

259259
cc = calibre_db.get_cc_columns(config, filter_config_custom_read=True)
260260
calibre_db.create_functions()
261-
# calibre_db.session.connection().connection.connection.create_function("lower", 1, db.lcase)
262261
query = calibre_db.generate_linked_query(config.config_read_column, db.Books)
263262
q = query.outerjoin(db.books_series_link, db.Books.id == db.books_series_link.c.book)\
264263
.outerjoin(db.Series)\

cps/web.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,6 @@ def get_matching_tags():
301301
tag_dict = {'tags': []}
302302
q = calibre_db.session.query(db.Books).filter(calibre_db.common_filters(True))
303303
calibre_db.create_functions()
304-
# calibre_db.session.connection().connection.connection.create_function("lower", 1, db.lcase)
305304
author_input = request.args.get('authors') or ''
306305
title_input = request.args.get('title') or ''
307306
include_tag_inputs = request.args.getlist('include_tag') or ''
@@ -1026,7 +1025,7 @@ def series_list():
10261025
.count())
10271026
if no_series_count:
10281027
entries.append([db.Category(_("None"), "-1"), no_series_count])
1029-
entries = sorted(entries, key=lambda x: x[0].name.lower(), reverse=not order_no)
1028+
entries = sorted(entries, key=lambda x: (x[0].sort or x[0].name).lower(), reverse=not order_no)
10301029
return render_title_template('list.html',
10311030
entries=entries,
10321031
folder='web.books_list',

0 commit comments

Comments
 (0)