Add endpoint for photo generate thumbnail.
This commit is contained in:
		
							parent
							
								
									ffe0be1c37
								
							
						
					
					
						commit
						89bfca8f9f
					
				
					 3 changed files with 60 additions and 0 deletions
				
			
		|  | @ -137,6 +137,18 @@ def post_batch_photos_remove_tag(): | |||
| 
 | ||||
| # Photo metadata operations ######################################################################## | ||||
| 
 | ||||
| @decorators.catch_etiquette_exception | ||||
| @site.route('/photo/<photo_id>/generate_thumbnail', methods=['POST']) | ||||
| def post_photo_generate_thumbnail(photo_id): | ||||
|     special = request.form.to_dict() | ||||
|     special.pop('commit', None) | ||||
| 
 | ||||
|     photo = common.P_photo(photo_id, response_type='json') | ||||
|     photo.generate_thumbnail(**special) | ||||
| 
 | ||||
|     response = jsonify.make_json_response({}) | ||||
|     return response | ||||
| 
 | ||||
| @decorators.catch_etiquette_exception | ||||
| def post_photo_refresh_metadata_core(photo_ids): | ||||
|     if isinstance(photo_ids, str): | ||||
|  |  | |||
|  | @ -165,6 +165,18 @@ function add_tag(photo_id, tagname, callback) | |||
|     common.post(url, data, callback); | ||||
| } | ||||
| 
 | ||||
| api.photos.generate_thumbnail = | ||||
| function generate_thumbnail(photo_id, special, callback) | ||||
| { | ||||
|     var url = `/photo/${photo_id}/generate_thumbnail` | ||||
|     var data = new FormData(); | ||||
|     for (x in special) | ||||
|     { | ||||
|         data.append(x, special[x]); | ||||
|     } | ||||
|     common.post(url, data, callback); | ||||
| } | ||||
| 
 | ||||
| api.photos.refresh_metadata = | ||||
| function refresh_metadata(photo_id, callback) | ||||
| { | ||||
|  |  | |||
|  | @ -12,6 +12,7 @@ | |||
|     <script src="/static/js/api.js"></script> | ||||
|     <script src="/static/js/hotkeys.js"></script> | ||||
|     <script src="/static/js/photo_clipboard.js"></script> | ||||
|     <script src="/static/js/spinner.js"></script> | ||||
|     <script src="/static/js/tag_autocomplete.js"></script> | ||||
| 
 | ||||
| <style> | ||||
|  | @ -39,6 +40,7 @@ | |||
|     grid-area: right; | ||||
| 
 | ||||
|     display: grid; | ||||
|     position: relative; | ||||
|     grid-template: "viewer" 1fr / 1fr; | ||||
| } | ||||
| #editor_area | ||||
|  | @ -98,6 +100,14 @@ | |||
|     max-width: 100%; | ||||
| } | ||||
| 
 | ||||
| #hovering_tools | ||||
| { | ||||
|     position: absolute; | ||||
|     right: 8px; | ||||
|     top: 8px; | ||||
|     background-color: var(--color_theme_primary); | ||||
| } | ||||
| 
 | ||||
| @media screen and (max-width: 800px) | ||||
| { | ||||
|     #content_body | ||||
|  | @ -226,6 +236,11 @@ | |||
| 
 | ||||
|         {% endif %} | ||||
|     </div> | ||||
|     <div id="hovering_tools"> | ||||
|         {% if photo.simple_mimetype == "video" %} | ||||
|         <button id="generate_thumbnail_button" class="green_button button_with_spinner" data-onclick="generate_thumbnail_for_video(event)">Capture thumbnail</button> | ||||
|         {% endif %} | ||||
|     </div> | ||||
| </div> | ||||
| </div> | ||||
| </body> | ||||
|  | @ -287,6 +302,27 @@ function add_remove_photo_tag_callback(response) | |||
|     common.create_message_bubble(message_area, message_positivity, message_text, 8000); | ||||
| } | ||||
| 
 | ||||
| function generate_thumbnail_callback(response) | ||||
| { | ||||
|     if (response["meta"]["status"] == 200) | ||||
|     { | ||||
|         common.create_message_bubble(message_area, "message_positive", "Thumbnail captured", 8000); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         common.create_message_bubble(message_area, "message_negative", response["data"]["error_message"], 8000); | ||||
|     } | ||||
|     generate_thumbnail_button = document.getElementById("generate_thumbnail_button"); | ||||
|     window[generate_thumbnail_button.dataset.spinnerCloser](); | ||||
| } | ||||
| 
 | ||||
| function generate_thumbnail_for_video(event) | ||||
| { | ||||
|     var timestamp = document.querySelector("#right video").currentTime; | ||||
|     var special = {"timestamp": timestamp}; | ||||
|     api.photos.generate_thumbnail(PHOTO_ID, special, generate_thumbnail_callback) | ||||
| } | ||||
| 
 | ||||
| var ZOOM_BG_URL = "url('{{photo|file_link}}')"; | ||||
| function enable_hoverzoom(event) | ||||
| { | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue