Browse Source

fix issue with exif missing date

main
Simon Conseil 1 month ago
parent
commit
b5ecca461b
  1. 2
      src/sigal/themes/photoswipe/templates/album_items.html
  2. BIN
      tests/sample/pictures/exifTest/22-nodate.jpg
  3. 35
      tests/test_extended_caching.py

2
src/sigal/themes/photoswipe/templates/album_items.html

@ -24,7 +24,7 @@
<div class="pswp-caption-content"> <div class="pswp-caption-content">
{{ img_description(media, with_big=False) }} {{ img_description(media, with_big=False) }}
</div> </div>
<figcaption>{{ media.title }}{{ (" - " + media.exif.datetime) if media.exif else "" }}</figcaption> <figcaption>{{ media.title }}{{ (" - " + media.exif.datetime) if media.exif and media.exif.datetime else "" }}</figcaption>
</figure> </figure>
{% endif %} {% endif %}
{% endfor %} {% endfor %}

BIN
tests/sample/pictures/exifTest/22-nodate.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

35
tests/test_extended_caching.py

@ -21,20 +21,23 @@ def test_save_cache(settings, tmpdir):
# test exif # test exif
album = gal.albums["exifTest"] album = gal.albums["exifTest"]
media = next(m for m in album.medias if m.src_filename == "21.jpg")
cache_img = cache["exifTest/21.jpg"] cache_img = cache["exifTest/21.jpg"]
assert cache_img["exif"] == album.medias[0].exif assert cache_img["exif"] == media.exif
assert "markdown_metadata" not in cache_img assert "markdown_metadata" not in cache_img
assert cache_img["file_metadata"] == album.medias[0].file_metadata assert cache_img["file_metadata"] == media.file_metadata
media = next(m for m in album.medias if m.src_filename == "22.jpg")
cache_img = cache["exifTest/22.jpg"] cache_img = cache["exifTest/22.jpg"]
assert cache_img["exif"] == album.medias[1].exif assert cache_img["exif"] == media.exif
assert "markdown_metadata" not in cache_img assert "markdown_metadata" not in cache_img
assert cache_img["file_metadata"] == album.medias[1].file_metadata assert cache_img["file_metadata"] == media.file_metadata
media = next(m for m in album.medias if m.src_filename == "noexif.png")
cache_img = cache["exifTest/noexif.png"] cache_img = cache["exifTest/noexif.png"]
assert cache_img["exif"] == album.medias[2].exif assert cache_img["exif"] == media.exif
assert "markdown_metadata" not in cache_img assert "markdown_metadata" not in cache_img
assert cache_img["file_metadata"] == album.medias[2].file_metadata assert cache_img["file_metadata"] == media.file_metadata
# test iptc and md # test iptc and md
album = gal.albums["iptcTest"] album = gal.albums["iptcTest"]
@ -75,27 +78,33 @@ def test_restore_cache(settings, tmpdir):
def test_load_exif(settings, tmpdir): def test_load_exif(settings, tmpdir):
settings["destination"] = str(tmpdir) settings["destination"] = str(tmpdir)
gal1 = Gallery(settings, ncpu=1) gal1 = Gallery(settings, ncpu=1)
gal1.albums["exifTest"].medias[2].exif = "blafoo" gal1.albums["exifTest"].medias[3].exif = "blafoo"
# set mod_date in future, to force these values # set mod_date in future, to force these values
gal1.metadataCache = { gal1.metadataCache = {
"exifTest/21.jpg": {"exif": "Foo", "mod_date": 100000000000}, "exifTest/21.jpg": {"exif": "Foo", "mod_date": 100000000000},
"exifTest/22.jpg": {"exif": "Bar", "mod_date": 100000000000}, "exifTest/22.jpg": {"exif": "Bar", "mod_date": 100000000000},
"exifTest/22-nodate.jpg": {"exif": "Baz", "mod_date": 100000000000},
} }
extended_caching.load_metadata(gal1.albums["exifTest"]) extended_caching.load_metadata(gal1.albums["exifTest"])
assert gal1.albums["exifTest"].medias[0].exif == "Foo" def get_media(gal, filename):
assert gal1.albums["exifTest"].medias[1].exif == "Bar" return next(
assert gal1.albums["exifTest"].medias[2].exif == "blafoo" m for m in gal.albums["exifTest"].medias if m.src_filename == filename
)
assert get_media(gal1, "21.jpg").exif == "Foo"
assert get_media(gal1, "22.jpg").exif == "Bar"
assert get_media(gal1, "noexif.png").exif == "blafoo"
# check if setting gallery.metadataCache works # check if setting gallery.metadataCache works
gal2 = Gallery(settings, ncpu=1) gal2 = Gallery(settings, ncpu=1)
extended_caching.save_cache(gal1) extended_caching.save_cache(gal1)
extended_caching.load_metadata(gal2.albums["exifTest"]) extended_caching.load_metadata(gal2.albums["exifTest"])
assert gal2.albums["exifTest"].medias[0].exif == "Foo" assert get_media(gal2, "21.jpg").exif == "Foo"
assert gal2.albums["exifTest"].medias[1].exif == "Bar" assert get_media(gal2, "22.jpg").exif == "Bar"
assert gal2.albums["exifTest"].medias[2].exif == "blafoo" assert get_media(gal2, "noexif.png").exif == "blafoo"
def test_load_metadata_missing(settings, tmpdir): def test_load_metadata_missing(settings, tmpdir):

Loading…
Cancel
Save