Return friendly and expanded orderby column separately.
Previously, the UI had to un-transform the expanded column back into the friendly name, which was silly and cumbersome.
This commit is contained in:
parent
79327de0f0
commit
2c29c196a7
3 changed files with 30 additions and 23 deletions
|
@ -776,12 +776,14 @@ class PDBPhotoMixin:
|
|||
else:
|
||||
filename_tree = None
|
||||
|
||||
if orderby:
|
||||
giveback_orderby = [
|
||||
'%s-%s' % (column.replace('RANDOM()', 'random'), direction)
|
||||
for (column, direction) in orderby
|
||||
f'{friendly}-{direction}'
|
||||
for (friendly, expanded, direction) in orderby
|
||||
]
|
||||
|
||||
if not orderby:
|
||||
orderby = [(expanded, direction) for (friendly, expanded, direction) in orderby]
|
||||
else:
|
||||
giveback_orderby = None
|
||||
orderby = [('created', 'desc')]
|
||||
|
||||
if give_back_parameters:
|
||||
|
@ -807,7 +809,7 @@ class PDBPhotoMixin:
|
|||
'within_directory': within_directory or None,
|
||||
'limit': limit,
|
||||
'offset': offset or None,
|
||||
'orderby': giveback_orderby or None,
|
||||
'orderby': giveback_orderby,
|
||||
'yield_albums': yield_albums,
|
||||
'yield_photos': yield_photos,
|
||||
}
|
||||
|
|
|
@ -290,7 +290,10 @@ def normalize_orderby(orderby, warning_bag=None):
|
|||
|
||||
With no direction, direction is implied desc.
|
||||
|
||||
Returns: A list of tuples of (column, direction)
|
||||
Returns: A list of tuples of (column_friendly, column_expanded, direction)
|
||||
where friendly is the name as the user would see it and expanded is the
|
||||
expression to be used in the SQL query. This is important for columns like
|
||||
"area" which is expanded into width*height.
|
||||
'''
|
||||
if orderby is None:
|
||||
orderby = []
|
||||
|
@ -344,23 +347,25 @@ def normalize_orderby(orderby, warning_bag=None):
|
|||
else:
|
||||
raise exc
|
||||
|
||||
if column == 'random':
|
||||
column = 'RANDOM()'
|
||||
column_friendly = column
|
||||
column_expanded = column
|
||||
|
||||
elif column == 'area':
|
||||
column = '(width * height)'
|
||||
if column_expanded == 'random':
|
||||
column_expanded = 'RANDOM()'
|
||||
|
||||
elif column == 'basename':
|
||||
column = 'COALESCE(override_filename, basename)'
|
||||
elif column_expanded == 'area':
|
||||
column_expanded = '(width * height)'
|
||||
|
||||
elif column == 'bitrate':
|
||||
column = '((bytes / 128) / duration)'
|
||||
elif column_expanded == 'basename':
|
||||
column_expanded = 'COALESCE(override_filename, basename)'
|
||||
|
||||
elif column == 'ratio':
|
||||
column = '(width / height)'
|
||||
elif column_expanded == 'bitrate':
|
||||
column_expanded = '((bytes / 128) / duration)'
|
||||
|
||||
requested_order = (column, direction)
|
||||
final_orderby.append(requested_order)
|
||||
elif column_expanded == 'ratio':
|
||||
column_expanded = '(width / height)'
|
||||
|
||||
final_orderby.append( (column_friendly, column_expanded, direction) )
|
||||
|
||||
return final_orderby
|
||||
|
||||
|
|
|
@ -168,13 +168,13 @@
|
|||
<li class="search_builder_orderby_li">
|
||||
<select onchange="return orderby_hide_direction_hook(event);">
|
||||
<option value="created" {{"selected" if selected_column=="created" else ""}}>Creation date</option>
|
||||
<option value="area" {{"selected" if selected_column=="(width * height)" else ""}}>Area</option>
|
||||
<option value="area" {{"selected" if selected_column=="area" else ""}}>Area</option>
|
||||
<option value="width" {{"selected" if selected_column=="width" else ""}}>Width</option>
|
||||
<option value="height" {{"selected" if selected_column=="height" else ""}}>Height</option>
|
||||
<option value="ratio" {{"selected" if selected_column=="(width / height)" else ""}}>Aspect Ratio</option>
|
||||
<option value="ratio" {{"selected" if selected_column=="ratio" else ""}}>Aspect Ratio</option>
|
||||
<option value="bytes" {{"selected" if selected_column=="bytes" else ""}}>File size</option>
|
||||
<option value="duration" {{"selected" if selected_column=="duration" else ""}}>Duration</option>
|
||||
<option value="bitrate" {{"selected" if selected_column=="((bytes / 128) / duration)" else ""}}>Bitrate</option>
|
||||
<option value="bitrate" {{"selected" if selected_column=="bitrate" else ""}}>Bitrate</option>
|
||||
<option value="tagged_at" {{"selected" if selected_column=="tagged_at" else ""}}>Recently tagged</option>
|
||||
<option value="random" {{"selected" if selected_column=="random" else ""}}>Random</option>
|
||||
</select>
|
||||
|
|
Loading…
Reference in a new issue