- [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)
- [client] only show date taken section on "image" or "video" post type,
since only they can possess date taken metadata
(`client/html/post_readonly_sidebar.tpl`)
- [client] added `date-fns` as dependency (it's much cleaner to format
dates this way)
- [client] added basic sidebar stuff in `html/post_readonly_sidebar.tpl`
- [client] updated `js/models/post.js` to reflect changes
- [client] added `formatUserFriendlyTime()` in `js/util/misc.js`
- [client] added `makeUserFriendlyTime()` in `js/util/views.js` in
conjunction with it
- [misc] ran post-commit; previous commits did not
- [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`
* Continue uploading remaining posts in an upload list even
when one fails
* Allow option to continue uploading even when similar posts are found
Closes#400