- [overview] add camera attribute to posts. parsing is done in
`func/metadata.py` and takes any of the available tags corresponding
to "make" and "model" properties and concatenates them into a string
- [server] improved `func/metadata.py`:
- added camera resolve functions for photos and videos
- moved ffmpeg subprocess and exif image opening to separate function
- optionally reuse existing collection of extracted tags in any of the
functions
- iterative approach to checking for tags' existence as opposed to
imperative
- (somewhat) better error handling
- [server] created alembic migration in `adb2acef2492_add_camera.py`
- not only adds columns, but also scans files and updates their camera
string
- [server] added camera attribute functionality and improved error
handling in `func/posts.py`
- [server] add camera attribute to `model/post.py`
- [server] wrapped exif image reading in a try..except, since it can
fail for some images. Also added a logger message to make it easier to
debug in the future, to fix compatibility issues and make debugging
easier
- [overview] implemented filtering and sorting by date taken, optionally
with null.
- [server] added `SORT_DESC_NULL_LAST` search token in `search/tokens.py`,
`search/base_search_config.py`
- [server] implemented `SORT_DESC_NULL_LAST` functionality in
`search/executor.py`
- [server] added date taken search aliases in
`search/configs/post_search_config.py`
- [server] added `NullCriterion` in `search/criteria.py`; it's literally
null
- [server] implemented filtering by null for date criterion in
`search/configs/util.py`
- [server] aliased `NullCriterion` to "null", "none", "unknown", or "?" in
`search/parser.py`
- [server][minor] added "posted" and "edited" aliases to creation_date
and last_edit_date
- [server] attempt to use DateTimeOriginal in `func/metadata.py` to
resolve date taken (compatibility issue originally found in photo
taken on LG Optimus L90)
- [server] created basic utility for resolving date taken @ `func/metadata.py`
- [server] utilize `func/metadata.py` in `func/posts.py`
- [server] created Alembic migration that adds `date_taken` column to `post`
- [server] updated `model/post.py:Post` to have new column
* `test_modify_saves_non_empty_diffs` needs non-transactional
db, so moved to seperate file
* Replaced incompatable usage of `db.session.rollback()`
with parametrerized function calls
* xfail conditionals for search removed, as we can no longer
get current driver with binds
* Also remove usage of deprecated `pytest.yield_fixture`
Furthermore, an update to Pillow has improved the floating-point
precision of the image hash algorithm, requiring minor updates to
the respective unit tests.
See https://github.com/python-pillow/Pillow/pull/4320