Add "Show in folder" button to photos, albums.
This commit is contained in:
parent
361795237c
commit
400c255aea
5 changed files with 83 additions and 1 deletions
|
@ -1,4 +1,5 @@
|
|||
import flask; from flask import request
|
||||
import os
|
||||
import time
|
||||
import urllib.parse
|
||||
|
||||
|
@ -173,6 +174,24 @@ def post_album_edit(album_id):
|
|||
response = album.jsonify(minimal=True)
|
||||
return jsonify.make_json_response(response)
|
||||
|
||||
@site.route('/album/<album_id>/show_in_folder', methods=['POST'])
|
||||
def post_album_show_in_folder(album_id):
|
||||
if not request.is_localhost:
|
||||
flask.abort(403)
|
||||
|
||||
album = common.P_album(album_id, response_type='json')
|
||||
directories = album.get_associated_directories()
|
||||
if len(directories) != 1:
|
||||
flask.abort(400)
|
||||
directory = directories.pop()
|
||||
|
||||
if os.name == 'nt':
|
||||
command = f'start explorer.exe "{directory.absolute_path}"'
|
||||
os.system(command)
|
||||
return jsonify.make_json_response({})
|
||||
|
||||
flask.abort(501)
|
||||
|
||||
# Album listings ###################################################################################
|
||||
|
||||
@site.route('/all_albums.json')
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import flask; from flask import request
|
||||
import os
|
||||
import traceback
|
||||
import urllib.parse
|
||||
|
||||
|
@ -211,6 +212,19 @@ def post_batch_photos_searchhidden_core(photo_ids, searchhidden):
|
|||
|
||||
return jsonify.make_json_response({})
|
||||
|
||||
@site.route('/photo/<photo_id>/show_in_folder', methods=['POST'])
|
||||
def post_photo_show_in_folder(photo_id):
|
||||
if not request.is_localhost:
|
||||
flask.abort(403)
|
||||
|
||||
photo = common.P_photo(photo_id, response_type='json')
|
||||
if os.name == 'nt':
|
||||
command = f'start explorer.exe /select,"{photo.real_path.absolute_path}"'
|
||||
os.system(command)
|
||||
return jsonify.make_json_response({})
|
||||
|
||||
flask.abort(501)
|
||||
|
||||
@site.route('/batch/photos/set_searchhidden', methods=['POST'])
|
||||
@decorators.required_fields(['photo_ids'], forbid_whitespace=True)
|
||||
def post_batch_photos_set_searchhidden():
|
||||
|
|
|
@ -117,6 +117,13 @@ function set_thumbnail_photo(album_id, photo_id, callback)
|
|||
common.post(url, data, callback);
|
||||
}
|
||||
|
||||
api.albums.show_in_folder =
|
||||
function show_in_folder(album_id, callback)
|
||||
{
|
||||
const url = `/album/${album_id}/show_in_folder`;
|
||||
common.post(url, null, callback);
|
||||
}
|
||||
|
||||
api.albums.callback_follow =
|
||||
function callback_follow(response)
|
||||
{
|
||||
|
@ -306,6 +313,13 @@ function unset_searchhidden(photo_id, callback)
|
|||
common.post(url, null, callback);
|
||||
}
|
||||
|
||||
api.photos.show_in_folder =
|
||||
function show_in_folder(photo_id, callback)
|
||||
{
|
||||
const url = `/photo/${photo_id}/show_in_folder`;
|
||||
common.post(url, null, callback);
|
||||
}
|
||||
|
||||
api.photos.callback_go_to_search =
|
||||
function callback_go_to_search(response)
|
||||
{
|
||||
|
|
|
@ -226,6 +226,10 @@ const ALBUM_ID = undefined;
|
|||
>
|
||||
Refresh directories
|
||||
</button>
|
||||
|
||||
{% if request.is_localhost and associated_directories|length == 1 %}
|
||||
<button id="show_in_folder_button" onclick="return show_in_folder_form();">Show in folder</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div id="left">
|
||||
|
@ -408,6 +412,20 @@ const rename_ed = new editor.Editor(
|
|||
rename_ed_on_save,
|
||||
);
|
||||
|
||||
function show_in_folder_form()
|
||||
{
|
||||
api.albums.show_in_folder(ALBUM_ID, show_in_folder_callback);
|
||||
}
|
||||
|
||||
function show_in_folder_callback(response)
|
||||
{
|
||||
if (response.meta.status !== 200)
|
||||
{
|
||||
alert(JSON.stringify(response));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
function add_album_datalist_on_load(datalist)
|
||||
{
|
||||
/*
|
||||
|
|
|
@ -189,7 +189,10 @@
|
|||
<li>Duration: {{photo.duration_string}}</li>
|
||||
<li>Overall Bitrate: {{photo.bitrate|int}} kbps</li>
|
||||
{% endif %}
|
||||
<li><button id="refresh_metadata_button" class="green_button button_with_spinner" onclick="return refresh_metadata_form();">refresh metadata</button></li>
|
||||
<li><button id="refresh_metadata_button" class="green_button button_with_spinner" onclick="return refresh_metadata_form();">Refresh metadata</button></li>
|
||||
{% if request.is_localhost %}
|
||||
<li><button id="show_in_folder_button" onclick="return show_in_folder_form();">Show in folder</button></li>
|
||||
{% endif %}
|
||||
<li><a href="{{photo|file_link}}?download=true&original_filename=true">Download as original filename</a></li>
|
||||
<li><a href="{{photo|file_link}}?download=true">Download as {{photo.id}}.{{photo.extension}}</a></li>
|
||||
<li>
|
||||
|
@ -455,6 +458,20 @@ function set_searchhidden_callback(response)
|
|||
}
|
||||
}
|
||||
|
||||
function show_in_folder_form()
|
||||
{
|
||||
api.photos.show_in_folder(PHOTO_ID, show_in_folder_callback);
|
||||
}
|
||||
|
||||
function show_in_folder_callback(response)
|
||||
{
|
||||
if (response.meta.status !== 200)
|
||||
{
|
||||
alert(JSON.stringify(response));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// UI //////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
function sort_tag_cards()
|
||||
|
|
Loading…
Reference in a new issue