feat: proper thumbnail cache handling, removal of cachebusters
This commit is contained in:
parent
5a0c0cf148
commit
d163cfda05
7 changed files with 10 additions and 9 deletions
|
@ -67,8 +67,9 @@ def get_thumbnail(resource: str, filename: str):
|
||||||
static: str = os.path.abspath(config['staticroot'])
|
static: str = os.path.abspath(config['staticroot'])
|
||||||
rpath: str = os.path.join(static, 'upload/thumbnails', resource)
|
rpath: str = os.path.join(static, 'upload/thumbnails', resource)
|
||||||
resp = bottle.static_file(filename, root=rpath)
|
resp = bottle.static_file(filename, root=rpath)
|
||||||
if resp.status_code != 200:
|
if resp.status_code >= 400:
|
||||||
resp = bottle.static_file('default.png', root=rpath)
|
resp = bottle.static_file('default.png', root=rpath)
|
||||||
|
resp.headers['Cache-Control'] = 'public, max-age=0;'
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -112,7 +112,7 @@
|
||||||
<td>{{ product.price_non_member | chf }}</td>
|
<td>{{ product.price_non_member | chf }}</td>
|
||||||
<td>{{ '✓' if product.custom_price else '✗' }}</td>
|
<td>{{ '✓' if product.custom_price else '✗' }}</td>
|
||||||
<td>{{ '✓' if product.stockable else '✗' }}</td>
|
<td>{{ '✓' if product.stockable else '✗' }}</td>
|
||||||
<td><img style="height: 2em;" src="/static/upload/thumbnails/products/{{ product.id }}.png?cacheBuster={{ now }}" alt="Picture of {{ product.name }}" draggable="false"></td>
|
<td><img style="height: 2em;" src="/static/upload/thumbnails/products/{{ product.id }}.png" alt="Picture of {{ product.name }}" draggable="false"></td>
|
||||||
<td>
|
<td>
|
||||||
<div class="btn-group" role="group">
|
<div class="btn-group" role="group">
|
||||||
<a class="btn btn-primary" href="/modproduct?productid={{ product.id }}">Edit</a>
|
<a class="btn btn-primary" href="/modproduct?productid={{ product.id }}">Edit</a>
|
||||||
|
@ -134,7 +134,7 @@
|
||||||
|
|
||||||
<div class="col-sm-2 g-4">
|
<div class="col-sm-2 g-4">
|
||||||
<div class="card h-100">
|
<div class="card h-100">
|
||||||
<img class="card-img-top" src="/static/upload/thumbnails/users/default.png?cacheBuster={{ now }}" alt="Default user avatar" />
|
<img class="card-img-top" src="/static/upload/thumbnails/users/default.png" alt="Default user avatar" />
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<label class="card-title" for="admin-default-images-user">Default user avatar</label>
|
<label class="card-title" for="admin-default-images-user">Default user avatar</label>
|
||||||
<div class="card-text">
|
<div class="card-text">
|
||||||
|
@ -146,7 +146,7 @@
|
||||||
|
|
||||||
<div class="col-sm-2 g-4">
|
<div class="col-sm-2 g-4">
|
||||||
<div class="card h-100">
|
<div class="card h-100">
|
||||||
<img class="card-img-top" src="/static/upload/thumbnails/products/default.png?cacheBuster={{ now }}" alt="Default product image" />
|
<img class="card-img-top" src="/static/upload/thumbnails/products/default.png" alt="Default product image" />
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<label class="card-title" for="admin-default-images-product">Default product image</label>
|
<label class="card-title" for="admin-default-images-product">Default product image</label>
|
||||||
<div class="card-text">
|
<div class="card-text">
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
<input class="form-control" id="modproduct-balance" name="stock" type="text" value="{{ product.stock }}" /><br/>
|
<input class="form-control" id="modproduct-balance" name="stock" type="text" value="{{ product.stock }}" /><br/>
|
||||||
|
|
||||||
<label class="form-label" for="modproduct-image">
|
<label class="form-label" for="modproduct-image">
|
||||||
<img height="150" src="/static/upload/thumbnails/products/{{ product.id }}.png?cacheBuster={{ now }}" alt="Image of {{ product.name }}" />
|
<img height="150" src="/static/upload/thumbnails/products/{{ product.id }}.png" alt="Image of {{ product.name }}" />
|
||||||
</label><br/>
|
</label><br/>
|
||||||
<input class="form-control" id="modproduct-image" type="file" name="image" accept="image/*" /><br/>
|
<input class="form-control" id="modproduct-image" type="file" name="image" accept="image/*" /><br/>
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
<input class="form-control" id="moduser-account-balance-reason" type="text" name="reason" placeholder="Shows up on receipt" /><br/>
|
<input class="form-control" id="moduser-account-balance-reason" type="text" name="reason" placeholder="Shows up on receipt" /><br/>
|
||||||
|
|
||||||
<label class="form-label" for="moduser-account-avatar">
|
<label class="form-label" for="moduser-account-avatar">
|
||||||
<img height="150" src="/static/upload/thumbnails/users/{{ user.id }}.png?cacheBuster={{ now }}" alt="Avatar of {{ user.name }}" />
|
<img height="150" src="/static/upload/thumbnails/users/{{ user.id }}.png" alt="Avatar of {{ user.name }}" />
|
||||||
</label><br/>
|
</label><br/>
|
||||||
<input class="form-control" id="moduser-account-avatar" type="file" name="avatar" accept="image/*" /><br/>
|
<input class="form-control" id="moduser-account-avatar" type="file" name="avatar" accept="image/*" /><br/>
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<img class="card-img-bottom" src="/static/upload/thumbnails/products/{{ product.id }}.png?cacheBuster={{ now }}" alt="Picture of {{ product.name }}" draggable="false"/>
|
<img class="card-img-bottom" src="/static/upload/thumbnails/products/{{ product.id }}.png" alt="Picture of {{ product.name }}" draggable="false"/>
|
||||||
{% set pstock = stock.get_stock(product) %}
|
{% set pstock = stock.get_stock(product) %}
|
||||||
{% if pstock is not none %}
|
{% if pstock is not none %}
|
||||||
<div class="card-img-overlay d-flex flex-column justify-content-end">
|
<div class="card-img-overlay d-flex flex-column justify-content-end">
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
<div class="col-xl-1 col-md-2 col-sm-3 col-4 mb-3">
|
<div class="col-xl-1 col-md-2 col-sm-3 col-4 mb-3">
|
||||||
<div class="card text-bg-light">
|
<div class="card text-bg-light">
|
||||||
<div class="card-header">{{ authuser.name }}</div>
|
<div class="card-header">{{ authuser.name }}</div>
|
||||||
<img class="card-img-bottom" draggable="false" src="/static/upload/thumbnails/users/{{ authuser.id }}.png?cacheBuster={{ now }}" alt="Avatar of {{ authuser.name }}">
|
<img class="card-img-bottom" draggable="false" src="/static/upload/thumbnails/users/{{ authuser.id }}.png" alt="Avatar of {{ authuser.name }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
{{ user.name }}
|
{{ user.name }}
|
||||||
</div>
|
</div>
|
||||||
<img class="card-img-bottom" src="/static/upload/thumbnails/users/{{ user.id }}.png?cacheBuster={{ now }}" alt="Avatar of {{ user.name }}" draggable="false"/>
|
<img class="card-img-bottom" src="/static/upload/thumbnails/users/{{ user.id }}.png" alt="Avatar of {{ user.name }}" draggable="false"/>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
Loading…
Reference in a new issue