forked from ScoDoc/ScoDoc
Fix: acces photo sans photos ni portail
This commit is contained in:
parent
a28f58a443
commit
a4840f494b
@ -73,7 +73,7 @@ from config import Config
|
||||
PHOTO_DIR = os.path.join(Config.SCODOC_VAR_DIR, "photos")
|
||||
ICONS_DIR = os.path.join(Config.SCODOC_DIR, "app", "static", "icons")
|
||||
UNKNOWN_IMAGE_PATH = os.path.join(ICONS_DIR, "unknown.jpg")
|
||||
UNKNOWN_IMAGE_URL = "get_photo_image?etudid=" # with empty etudid => unknown face image
|
||||
|
||||
IMAGE_EXT = ".jpg"
|
||||
JPG_QUALITY = 0.92
|
||||
REDUCED_HEIGHT = 90 # pixels
|
||||
@ -81,6 +81,11 @@ MAX_FILE_SIZE = 4 * 1024 * 1024 # max allowed size for uploaded image, in bytes
|
||||
H90 = ".h90" # suffix for reduced size images
|
||||
|
||||
|
||||
def unknown_image_url() -> str:
|
||||
"URL for 'unkwown' face image"
|
||||
return url_for("scolar.get_photo_image", scodoc_dept=g.scodoc_dept, etudid="")
|
||||
|
||||
|
||||
def photo_portal_url(etud):
|
||||
"""Returns external URL to retreive photo on portal,
|
||||
or None if no portal configured"""
|
||||
@ -118,7 +123,7 @@ def etud_photo_url(etud: dict, size="small", fast=False) -> str:
|
||||
ext_url = photo_portal_url(etud)
|
||||
if not ext_url:
|
||||
# fallback: Photo "unknown"
|
||||
photo_url = scu.ScoURL() + "/" + UNKNOWN_IMAGE_URL
|
||||
photo_url = unknown_image_url()
|
||||
else:
|
||||
# essaie de copier la photo du portail
|
||||
new_path, _ = copy_portal_photo_to_fs(etud)
|
||||
@ -128,7 +133,7 @@ def etud_photo_url(etud: dict, size="small", fast=False) -> str:
|
||||
if scu.CONFIG.PUBLISH_PORTAL_PHOTO_URL:
|
||||
photo_url = ext_url
|
||||
else:
|
||||
photo_url = scu.ScoURL() + "/" + UNKNOWN_IMAGE_URL
|
||||
photo_url = unknown_image_url()
|
||||
return photo_url
|
||||
|
||||
|
||||
@ -143,7 +148,8 @@ def get_photo_image(etudid=None, size="small"):
|
||||
filename = photo_pathname(etud.photo_filename, size=size)
|
||||
if not filename:
|
||||
filename = UNKNOWN_IMAGE_PATH
|
||||
return _http_jpeg_file(filename)
|
||||
r = _http_jpeg_file(filename)
|
||||
return r
|
||||
|
||||
|
||||
def _http_jpeg_file(filename):
|
||||
@ -166,7 +172,7 @@ def _http_jpeg_file(filename):
|
||||
except ValueError:
|
||||
mod_since = None
|
||||
if (mod_since is not None) and last_modified <= mod_since:
|
||||
return "", 304 # not modified
|
||||
return make_response(b"", 304) # not modified
|
||||
#
|
||||
last_modified_str = time.strftime(
|
||||
"%a, %d %b %Y %H:%M:%S GMT", time.gmtime(last_modified)
|
||||
@ -183,7 +189,7 @@ def etud_photo_is_local(etud: dict, size="small"):
|
||||
return photo_pathname(etud["photo_filename"], size=size)
|
||||
|
||||
|
||||
def etud_photo_html(etud: dict = None, etudid=None, title=None, size="small"):
|
||||
def etud_photo_html(etud: dict = None, etudid=None, title=None, size="small") -> str:
|
||||
"""HTML img tag for the photo, either in small size (h90)
|
||||
or original size (size=="orig")
|
||||
"""
|
||||
@ -201,7 +207,7 @@ def etud_photo_html(etud: dict = None, etudid=None, title=None, size="small"):
|
||||
title = nom
|
||||
if not etud_photo_is_local(etud):
|
||||
fallback = (
|
||||
"""onerror='this.onerror = null; this.src="%s"'""" % UNKNOWN_IMAGE_URL
|
||||
f"""onerror='this.onerror = null; this.src="{unknown_image_url()}"'"""
|
||||
)
|
||||
else:
|
||||
fallback = ""
|
||||
@ -218,7 +224,7 @@ def etud_photo_html(etud: dict = None, etudid=None, title=None, size="small"):
|
||||
)
|
||||
|
||||
|
||||
def etud_photo_orig_html(etud=None, etudid=None, title=None):
|
||||
def etud_photo_orig_html(etud=None, etudid=None, title=None) -> str:
|
||||
"""HTML img tag for the photo, in full size.
|
||||
Full-size images are always stored locally in the filesystem.
|
||||
They are the original uploaded images, converted in jpeg.
|
||||
|
Loading…
Reference in New Issue
Block a user