Add filter to generate /file/ link with appropriate basename.
Because inlining the |urlencode every time is easy to forget.
This commit is contained in:
parent
bef91b3243
commit
bdec6cf4a3
4 changed files with 20 additions and 13 deletions
|
@ -33,6 +33,7 @@ site.jinja_env.add_extension('jinja2.ext.do')
|
||||||
site.jinja_env.trim_blocks = True
|
site.jinja_env.trim_blocks = True
|
||||||
site.jinja_env.lstrip_blocks = True
|
site.jinja_env.lstrip_blocks = True
|
||||||
site.jinja_env.filters['bytestring'] = jinja_filters.bytestring
|
site.jinja_env.filters['bytestring'] = jinja_filters.bytestring
|
||||||
|
site.jinja_env.filters['file_link'] = jinja_filters.file_link
|
||||||
site.debug = True
|
site.debug = True
|
||||||
|
|
||||||
P = etiquette.photodb.PhotoDB()
|
P = etiquette.photodb.PhotoDB()
|
||||||
|
|
|
@ -1,9 +1,16 @@
|
||||||
import etiquette
|
import etiquette
|
||||||
|
import jinja2.filters
|
||||||
|
|
||||||
import voussoirkit.bytestring
|
import voussoirkit.bytestring
|
||||||
|
|
||||||
def bytestring(x):
|
def bytestring(x):
|
||||||
try:
|
try:
|
||||||
return voussoirkit.bytestring.bytestring(x)
|
return voussoirkit.bytestring.bytestring(x)
|
||||||
except Exception:
|
except Exception as e:
|
||||||
return '??? b'
|
return '??? b'
|
||||||
|
|
||||||
|
def file_link(photo, short=False):
|
||||||
|
if short:
|
||||||
|
return f'/file/{photo.id}{photo.dot_extension}'
|
||||||
|
basename = jinja2.filters.do_urlencode(photo.basename)
|
||||||
|
return f'/file/{photo.id}/{basename}'
|
||||||
|
|
|
@ -8,8 +8,6 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
<link rel="stylesheet" href="/static/css/common.css">
|
<link rel="stylesheet" href="/static/css/common.css">
|
||||||
<script src="/static/js/common.js"></script>
|
<script src="/static/js/common.js"></script>
|
||||||
{% set filename = photo.id + photo.dot_extension %}
|
|
||||||
{% set file_link = "/file/" + filename %}
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
#content_body
|
#content_body
|
||||||
|
@ -192,13 +190,13 @@
|
||||||
<li>Dimensions: {{photo.width}}x{{photo.height}} px</li>
|
<li>Dimensions: {{photo.width}}x{{photo.height}} px</li>
|
||||||
<li>Aspect ratio: {{photo.ratio}}</li>
|
<li>Aspect ratio: {{photo.ratio}}</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li>Size: {{photo.bytestring}}</li>
|
<li>Size: {{photo.bytes|bytestring}}</li>
|
||||||
{% if photo.duration %}
|
{% if photo.duration %}
|
||||||
<li>Duration: {{photo.duration_string}}</li>
|
<li>Duration: {{photo.duration_string}}</li>
|
||||||
<li>Overall Bitrate: {{photo.bitrate|int}} kbps</li>
|
<li>Overall Bitrate: {{photo.bitrate|int}} kbps</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li><a href="/file/{{photo.id}}{{photo.dot_extension}}?download=true&original_filename=true">Download as original filename</a></li>
|
<li><a href="{{photo|file_link}}?download=true&original_filename=true">Download as original filename</a></li>
|
||||||
<li><a href="/file/{{photo.id}}{{photo.dot_extension}}?download=true">Download as {{photo.id}}.{{photo.extension}}</a></li>
|
<li><a href="{{photo|file_link}}?download=true">Download as {{photo.id}}.{{photo.extension}}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<!-- CONTAINING ALBUMS -->
|
<!-- CONTAINING ALBUMS -->
|
||||||
|
@ -228,17 +226,17 @@
|
||||||
<div id="photo_img_holder" onclick="toggle_hoverzoom(event)">
|
<div id="photo_img_holder" onclick="toggle_hoverzoom(event)">
|
||||||
<img
|
<img
|
||||||
id="photo_img"
|
id="photo_img"
|
||||||
src="{{file_link}}"
|
src="{{photo|file_link}}"
|
||||||
alt="{{photo.basename}}"
|
alt="{{photo.basename}}"
|
||||||
onload="this.style.opacity=0.99"
|
onload="this.style.opacity=0.99"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
{% elif photo.simple_mimetype == "video" %}
|
{% elif photo.simple_mimetype == "video" %}
|
||||||
<video src="{{file_link}}" controls preload=none {%if photo.thumbnail%}poster="/thumbnail/{{photo.id}}.jpg"{%endif%}></video>
|
<video src="{{photo|file_link}}" controls preload=none {%if photo.thumbnail%}poster="/thumbnail/{{photo.id}}.jpg"{%endif%}></video>
|
||||||
{% elif photo.simple_mimetype == "audio" %}
|
{% elif photo.simple_mimetype == "audio" %}
|
||||||
<audio src="{{file_link}}" controls></audio>
|
<audio src="{{photo|file_link}}" controls></audio>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="{{file_link}}">View {{filename}}</a>
|
<a href="{{photo|file_link}}">View {{photo.basename}}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -316,6 +314,7 @@ function refresh_metadata(photoid)
|
||||||
post(url, data, callback);
|
post(url, data, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ZOOM_BG_URL = "url('{{photo|file_link(short=True)}}')";
|
||||||
function enable_hoverzoom(event)
|
function enable_hoverzoom(event)
|
||||||
{
|
{
|
||||||
//console.log("enable zoom");
|
//console.log("enable zoom");
|
||||||
|
@ -331,7 +330,7 @@ function enable_hoverzoom(event)
|
||||||
photo_img.style.opacity = "0";
|
photo_img.style.opacity = "0";
|
||||||
photo_img.style.display = "none";
|
photo_img.style.display = "none";
|
||||||
photo_img_holder.style.cursor = "zoom-out";
|
photo_img_holder.style.cursor = "zoom-out";
|
||||||
photo_img_holder.style.backgroundImage = "url('{{file_link}}')";
|
photo_img_holder.style.backgroundImage = ZOOM_BG_URL;
|
||||||
photo_img_holder.onmousemove = move_hoverzoom;
|
photo_img_holder.onmousemove = move_hoverzoom;
|
||||||
move_hoverzoom(event)
|
move_hoverzoom(event)
|
||||||
//setTimeout(function(){img_holder.onclick = toggle_hoverzoom;}, 100);
|
//setTimeout(function(){img_holder.onclick = toggle_hoverzoom;}, 100);
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<div class="photo_card photo_card_list" data-id="{{photo.id}}">
|
<div class="photo_card photo_card_list" data-id="{{photo.id}}">
|
||||||
<input type="checkbox" class="photo_card_selector_checkbox" onclick="on_photo_select(event)"/>
|
<input type="checkbox" class="photo_card_selector_checkbox" onclick="on_photo_select(event)"/>
|
||||||
<span class="photo_card_filename"><a target="_blank" href="/photo/{{photo.id}}">{{photo.basename}}</a></span>
|
<span class="photo_card_filename"><a target="_blank" href="/photo/{{photo.id}}">{{photo.basename}}</a></span>
|
||||||
<a class="photo_card_metadata" target="_blank" href="/file/{{photo.id + photo.dot_extension}}">{{photo.bytestring}}</a>
|
<a class="photo_card_metadata" target="_blank" href="{{photo|file_link}}">{{photo.bytestring}}</a>
|
||||||
</div>
|
</div>
|
||||||
{% else -%}
|
{% else -%}
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@
|
||||||
|
|
||||||
<span class="photo_card_metadata">
|
<span class="photo_card_metadata">
|
||||||
{{- metadata_inner|safe -}}
|
{{- metadata_inner|safe -}}
|
||||||
<a target="_blank" href="/file/{{photo.id + photo.dot_extension}}">{{photo.bytestring}}</a>
|
<a target="_blank" href="{{photo|file_link}}">{{photo.bytestring}}</a>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<input type="checkbox" class="photo_card_selector_checkbox" onclick="on_photo_select(event)"/>
|
<input type="checkbox" class="photo_card_selector_checkbox" onclick="on_photo_select(event)"/>
|
||||||
|
|
Loading…
Reference in a new issue