Commit graph

591 commits

Author SHA1 Message Date
Michael Mayer 9f4066edb6 Indexer: Improve stacking and indexing of moved files 2020-12-11 22:09:11 +01:00
Michael Mayer 04c17fb77b Indexer: Improve stacking settings and merging 2020-12-11 17:21:13 +01:00
Michael Mayer d82a0ab525 Indexer: Don't optimize merged photos
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-12-09 22:15:10 +01:00
Michael Mayer c0fb3deb06 Indexer: Stack photos while optimizing 2020-12-09 21:44:04 +01:00
Michael Mayer 004400b118 Albums: Improve folder indexing 2020-12-09 13:10:21 +01:00
Michael Mayer 5645cb1d0e Albums: Update folder album slug when path changes
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-12-09 00:44:33 +01:00
Michael Mayer ee49073cf2 Albums: Improve UX and indexing 2020-12-08 22:40:13 +01:00
Michael Mayer 466a1bc3dd Albums: Hide empty folder albums after re-indexing #684 2020-12-08 19:47:27 +01:00
Michael Mayer a43f8be231 Stacks: Repair merge query #681 #667 #593 2020-12-07 17:51:35 +01:00
Michael Mayer ae0af699c6 Stacks: Add advanced indexing options #681 #667 #593 2020-12-07 16:19:03 +01:00
Michael Mayer 56851f4892 WebDAV: Add timeout for fetching directories #664 2020-12-05 01:24:33 +01:00
Michael Mayer d0f8c577b3 Indexer: Add optimize command & automatically fix location data #546 2020-12-05 00:13:44 +01:00
Michael Mayer 6d791f8a59 Indexer: Improve logging #546 2020-12-04 23:16:22 +01:00
Michael Mayer e77fefd78f Indexer: Improve stacking SQL #576 2020-12-04 20:33:17 +01:00
Michael Mayer 902aacece9 Indexer: Merge identical photos (stack files) #576 2020-12-04 19:51:51 +01:00
Michael Mayer dfd9cb53ac Update link entity test #621
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-11-22 03:22:21 +01:00
Michael Mayer 49a299b3b0 Fix links with expiration #621
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-11-22 03:12:31 +01:00
Michael Mayer 59a806c685 Indexer: Fix purge and restore of RAW files #568 #614
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-11-21 23:28:03 +01:00
Michael Mayer 590350a6dd Backend: Fix logging in File.Rename() #568 2020-11-21 18:33:19 +01:00
Michael Mayer 5daa689975 Backend: Format go imports 2020-11-21 18:08:41 +01:00
Michael Mayer ef316c98b7 Implement batch approve #489 2020-11-21 17:36:41 +01:00
Michael Mayer 1ad2d53e16 Indexer: Recover all missing files #568 2020-11-21 15:43:13 +01:00
Michael Mayer 7d87062436 Indexer: Fix handling of renamed and previously missing files #568 2020-11-20 17:25:46 +01:00
Michael Mayer 28f59947df Indexer: Update index when files were renamed #568 2020-11-15 15:15:56 +01:00
Michael Mayer e22e6c6d37 Indexer: Improve duplicate detection #568
Only non-sidecar files in the originals folder will be added to the
duplicates table to avoid side effects.
In addition, the duplicates table is cleaned before and after indexing.
2020-11-15 10:31:46 +01:00
Theresa Gresch c72ddbedcb Backend: Add unit tests 2020-10-20 10:07:27 +02:00
Theresa Gresch 7b9f21207e Backend: Add tests for entity 2020-10-20 09:25:19 +02:00
Theresa Gresch b19e01396a Backend: Add tests for entity 2020-10-19 17:06:09 +02:00
Michael Mayer 4fc693fb0b Permanently delete non-primary files #435
This is a fix for unstacking issues in certain situations. More general
photo delete functionality will be added later, see #167.

Signed-off-by: Michael Mayer <michael@lastzero.net>
2020-10-04 14:21:40 +02:00
Michael Mayer 46b9239026 Backend: Refactor user entity and add pro package
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-10-03 13:50:30 +02:00
Phil Davis c90f19ec21
Fix minor typos 2020-10-01 16:00:43 +05:45
Michael Mayer 226f218f80 Backend: Count login attempts and localize error messages
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-09-21 09:40:35 +02:00
Michael Mayer 6d58b76394 Backend: Remove GlobalUID from Address entity
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-09-21 08:55:33 +02:00
Michael Mayer dc8640ca2b Person: Revert previous commit
EulaSigned might cause confusion as it's commonly used for proprietary software.

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-09-17 19:20:12 +02:00
Michael Mayer 48ec25bcba Person: Add EulaSigned date field
Users might need to accept terms & conditions when using external services / APIs.

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-09-16 18:14:09 +02:00
Michael Mayer 9950bc9975 Person: Rename UserActive to IsActive #98 #144
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-09-16 16:44:20 +02:00
Michael Mayer a44351f332 Person: Refactor / rename entity fields #98 #144
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-09-16 16:24:03 +02:00
Michael Mayer d18414e468 Person: Rename optional UserUUID to GlobalUID #98 #144
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-09-16 15:35:35 +02:00
Michael Mayer 3af6e9b83e Frontend: Update user model #98 #144
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-09-13 18:10:31 +02:00
Michael Mayer 84b17194af Backend: Refactor person entity #98 #144
Database column types are now UPPERCASE so that developers can easily recognize them. After upgrading to GORM 2.0, we can use generic types instead.

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-09-13 17:51:43 +02:00
Michael Mayer a071642629 Backend: Refactor person entity fields #144
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-09-07 17:10:43 +02:00
Michael Mayer 01c4b483dd Backend: Refactor person entity for smaller db row size #144
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-09-07 12:18:12 +02:00
Michael Mayer 33888fd231 Backend: Add credentials and extend person entity #98 #144
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-09-06 14:18:40 +02:00
Theresa Gresch 7e7b53590a Backend: Add validation for valid dates in setTakenAt() 2020-08-18 10:42:09 +02:00
Michael Mayer 6e2849fba2 Index: Don't stack files based on XMP InstanceID
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-08-18 00:45:53 +02:00
Michael Mayer d43d3a22e0 Backend: Improve country estimate from folder name
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-08-14 15:36:48 +02:00
Michael Mayer 28595497b1 Backend: Limit place estimates to 36h time difference
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-24 14:06:26 +02:00
Michael Mayer 7d00e68d92 Index: Refactor mime type detection #391
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-21 14:43:45 +02:00
Michael Mayer d20d9c50dd Metadata: Upgrade go-exif v3
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-21 10:52:39 +02:00
Michael Mayer ab6228fb9a Index: Skip empty files #391
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-21 10:44:41 +02:00
Michael Mayer a01e54070d Index: Skip duplicates and handle files with wrong extension #391
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-20 19:48:31 +02:00
Michael Mayer 0da72687e6 Backend: Add Huawei P10 models to camera model lookup table
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-20 13:03:14 +02:00
Michael Mayer cd7cd064b6 Backend: Add Huawei Mate models to camera model lookup table
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-20 12:43:57 +02:00
Michael Mayer 24cfa1aea2 Backend: Refactor file indexing / skipping
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-18 20:58:35 +02:00
Michael Mayer 812e550d76 Backend: Remove unused duplicate field from file entity
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-18 12:39:04 +02:00
Michael Mayer cc946b8ea8 Use int64 for file modification timestamps #391
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-17 16:09:55 +02:00
Michael Mayer 13fe9af2fc Backend: Fix panorama detection #352
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-17 10:10:01 +02:00
Michael Mayer 6847b8b5f9
Complete file browser with symlink support and full folder / file names (#412)
* Backend: Code clean-up

Signed-off-by: Michael Mayer <michael@liquidbytes.net>

* File Browser: Show complete, original file and folder names #408

Signed-off-by: Michael Mayer <michael@liquidbytes.net>

* File Browser: Follow symlinks #201 #403 #407

Warning: Following symlinks can make folder lists non-deterministic
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-16 15:43:23 +02:00
Michael Mayer 6c13b75562 Backend: Improve places logging #399
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-16 14:00:22 +02:00
Michael Mayer 0e5fe5eb43 Index image projection and add panorama filter
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-16 13:02:48 +02:00
Michael Mayer db5edb8e4d Add flag for 360° panoramas #352
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-15 20:59:33 +02:00
Michael Mayer f484dd004c Add Huawei P20 and P20 Pro #399
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-15 09:18:58 +02:00
Michael Mayer d6b848c0e9 Backend: Use common log prefix for places and their cells
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-15 08:31:36 +02:00
Michael Mayer b62af742ae Backend: Improve log messages
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-14 18:00:32 +02:00
Theresa Gresch e6cc639040 Backend: Add unit tests for internal/api 2020-07-14 14:46:27 +02:00
Michael Mayer be94ff624c Edit photo type and sort by recently edited #394
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-14 12:42:31 +02:00
Michael Mayer 7a7c5aa190 UX: Reduce some levels to keep logs clean
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-14 12:39:56 +02:00
Theresa Gresch a5987a0b33 Backend: Add unit tests for internal/api 2020-07-14 11:24:00 +02:00
Michael Mayer 8989c987a2 Unstack all types, except primary and sidecar files #394
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-14 11:00:49 +02:00
Michael Mayer a507f21740 Backend: Remove unused notes field from file entity
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-13 18:09:44 +02:00
Theresa Gresch dac846ba01 Backend: Add unit tests for internal/workers 2020-07-13 16:44:17 +02:00
Michael Mayer 4a9f992056 Thumbs: Use fit_4096 in favor of fit_3840 and add convert limit #362 #388
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-13 15:23:54 +02:00
Michael Mayer 849225e1ea Backend: Tweak db connection params and add stack to panic logs
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-13 15:16:09 +02:00
Theresa Gresch 0144458664 Backend: Add unit tests for internal/query 2020-07-13 12:29:11 +02:00
Theresa Gresch b21433479e Backend: Add unit tests for internal/query 2020-07-13 11:11:52 +02:00
Michael Mayer 4fb263f8a4 Add location field to album metadata
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-12 16:36:39 +02:00
Theresa Gresch edb9bba671 Backend: Add unit tests for internal/photoprism 2020-07-12 14:36:36 +02:00
Michael Mayer 5648c9616e Backend: Refactor location data tables and entities
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-12 08:27:05 +02:00
Michael Mayer 8c53049b4a Backend: Remove deprecated columns from geo and places
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-12 06:54:07 +02:00
Michael Mayer 2bef7e7e9d Backend: Reduce location estimate time difference to 3 days
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-12 05:20:16 +02:00
Michael Mayer 8bf6a7b678 Backend: Fix location estimate query
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-12 05:10:00 +02:00
Michael Mayer 00e334657a Photo: Set defaults for PlaceID, GeoID, CameraID and LensID
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-12 04:48:17 +02:00
Michael Mayer e1c45c4d5f Rename "location" to "geo" to have a short, common prefix for geo data
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-11 23:43:29 +02:00
Michael Mayer 99eaae0816 Backend: Import JSON metadata from Google Photos
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-11 16:46:29 +02:00
Michael Mayer 2c6552ff73 Backend: Remove log in Photo.Create()
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-11 09:41:35 +02:00
Theresa Gresch d4935c2d13 Backend: Add unit tests for internal/entity 2020-07-10 17:35:22 +02:00
Theresa Gresch dcc43ed45d Backend: Add unit tests for internal/entity 2020-07-10 17:27:06 +02:00
Michael Mayer 174e6d53c9 Backend: Use FirstOrCreate() instead of Create() when adding new photos
Not perfect as metadata should rather be merged. Ideally some kind of mutex avoids database conflicts / locks / errors in the future. Right now, we're (intentionally) using the database as "mutex" so that the application code needs less complexity. This is especially problematic on powerful servers with many CPUs and index workers. See also issue #392.

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-10 17:09:39 +02:00
Theresa Gresch dad0ba9d27 Backend: Add unit tests for internal/entity 2020-07-10 15:15:56 +02:00
Theresa Gresch d6c910c16b Backend: Add unit tests for internal/entity 2020-07-10 15:06:37 +02:00
Theresa Gresch 4196420dc7 Backend: Add unit tests for internal/entity 2020-07-10 13:57:51 +02:00
Theresa Gresch 560849ec52 Backend: Add unit tests for internal/entity 2020-07-10 11:44:51 +02:00
Theresa Gresch 1f9528562f Backend: Add unit tests for internal/entity 2020-07-10 10:58:06 +02:00
Theresa Gresch b480bbefcc Backend: Add unit tests for internal/entity 2020-07-10 10:29:56 +02:00
Michael Mayer 3f9454876d Concurrency fix for photo details #357
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-09 17:45:56 +02:00
Theresa Gresch f857198178 Backend: Add unit tests for internal/entity 2020-07-09 16:46:13 +02:00
Theresa Gresch 6212c8d63d Backend: Add unit tests for internal/entity 2020-07-09 15:37:30 +02:00
Theresa Gresch dd7b5b3a1b Backend: Add unit tests for internal/entity 2020-07-09 12:24:44 +02:00
Theresa Gresch 131e822a58 Backend: Add unit tests for internal/entity 2020-07-09 11:50:58 +02:00
Theresa Gresch 15d66fc304 Backend: Add unit tests for internal/entity 2020-07-09 11:27:44 +02:00
Theresa Gresch 006e833249 Backend: Fix unit test 2020-07-08 18:36:37 +02:00
Theresa Gresch 226eafec7b Backend: Add unit tests for internal/entity 2020-07-08 18:09:18 +02:00
Theresa Gresch e1487238e6 Backend: Add unit tests for internal/entity 2020-07-08 17:36:06 +02:00
Theresa Gresch 3e6c21a566 Backend: Add unit tests for internal/entity 2020-07-08 17:06:23 +02:00
Theresa Gresch 380aa0ba4b Backend: Add unit tests for internal/entity 2020-07-08 15:25:33 +02:00
Michael Mayer e2845981c1 Concurrency fixes for cameras, lenss, folders, keywords, and labels #357
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-07 20:44:33 +02:00
Michael Mayer 4b7551fb99 Try fetching country again if create fails #357
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-07 16:56:02 +02:00
Michael Mayer 14420b02a9 Try fetching places and location again if create fails #357
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-07 16:40:29 +02:00
Michael Mayer 3bfbd3070e Fix time difference threshold in Photo.EstimatePlace()
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-07 13:18:34 +02:00
Michael Mayer 6273e77867 Try saving photo a second time after deadlocks #357
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-07 12:59:47 +02:00
Michael Mayer 3fec93ee4e Load existing photo if uid was found in YAML sidecar file #357
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-07 12:20:38 +02:00
Michael Mayer d1db3d04f7 Logs: Improve event log and messages in i18n package
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-07 10:51:55 +02:00
Michael Mayer 8f74fdb8a0 Backend: Fix Photo.GetDetails()
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-06 20:20:03 +02:00
Michael Mayer eeef16f07e Backend: Refactor photo details entity #379 #357
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-06 19:15:57 +02:00
Michael Mayer 4ddf241a6c UX: Rename "analog" to "scan"
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-06 14:35:25 +02:00
Michael Mayer 1284091b77 Backend: Improve FileTitle() function
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-06 11:31:03 +02:00
Michael Mayer 3b8f3ebd23 Improve date input parsing #274 #358
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-06 10:32:37 +02:00
Michael Mayer ca154f3bb3 Replace date picker with day, month & year inputs #274 #358
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-06 07:41:33 +02:00
Michael Mayer 581404648c Add search filter for content that has no album #377
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-05 14:48:49 +02:00
Michael Mayer 4721f9d044 Backend: Improve metadata logs
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-02 08:16:27 +02:00
Michael Mayer f576b000b7 Add event log in Library > Errors
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-01 17:16:24 +02:00
Michael Mayer d4f4af313d Add change password command and improve account page in settings
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-01 12:38:58 +02:00
Michael Mayer 95802d9f6c Add album edit dialog
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-30 11:27:02 +02:00
Michael Mayer 2f88ab2ebc Improve UX of account page
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-30 09:06:59 +02:00
Michael Mayer 0e426a547b Disable account page in public mode
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-30 08:50:44 +02:00
Michael Mayer 56cf8e95e0 Add change password form to settings
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-29 21:14:34 +02:00
Michael Mayer 1c72f88e8c Backend: Improve logging #369
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-29 13:16:55 +02:00
Michael Mayer bfd73932e5 Improve UX and title generation from file names
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-29 11:10:24 +02:00
Michael Mayer f2955fdefc Sharing: Refactor link entity and database columns #367 #18
Add missing fields in js model and rename fields for mode clarity. A link token can be valid for multiple shares.

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-28 14:52:26 +02:00
Michael Mayer 2b2cd8ed23 Backend: Sanitize metadata titles and descriptions
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-27 14:15:25 +02:00
Michael Mayer e7fecd3b27 Improve album sharing and album UX #18 #309
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-27 13:08:45 +02:00
Michael Mayer 4aa7b6cc97 Sharing: Generate share preview images #18
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-26 14:26:36 +02:00
Michael Mayer ff704d56a0 Sharing: Optional view count limit #18
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-26 12:24:05 +02:00
Michael Mayer cfd23666a9 Sharing: Link expiration, view counter and permissions #18
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-26 12:16:13 +02:00
Michael Mayer 5d59b50912 Sharing: ACL authorization for REST API #18
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-25 14:54:04 +02:00
Michael Mayer 1f1f92408a Sharing: Token authentication #18
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-25 01:20:58 +02:00
Michael Mayer 43abf0bd83 Photos: Rename maintained_at to checked_at
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-24 08:34:23 +02:00
Michael Mayer 12cfe6efec Backend: Prefer file title over image classification #361
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-23 11:12:24 +02:00
Michael Mayer 722d7dd421 Improve link sharing dialog and api #18
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-22 15:16:26 +02:00
Michael Mayer 41608d077d Add album share dialog #18
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-16 12:51:46 +02:00
Michael Mayer 2f7c002b4d Backend: Fix location estimate query
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-16 10:08:34 +02:00
Michael Mayer 961fda3b11 Add photos from other albums (clone)
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-14 11:39:53 +02:00
Michael Mayer 01717ae6f7 Backend: Improve country code detection
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-12 18:01:22 +02:00
Michael Mayer d5e4aec8ea Frontend: Add fields to advanced tab (edit dialog)
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-10 18:26:05 +02:00
Michael Mayer f2738c1f65 Backend: Update size limit for (U)UIDs to 42 bytes
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-09 19:40:32 +02:00
Michael Mayer e83bb6ff02 Add comments to entity package constants
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-09 10:51:22 +02:00
Michael Mayer aedc0279e3 Fix places count while indexing
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-09 10:49:27 +02:00
Michael Mayer d72480200e Add approve button to photo card view
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-09 09:20:20 +02:00
Michael Mayer 8fa1cb9392 Add favorite places
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-08 18:32:51 +02:00
Michael Mayer a91206a509 Universal sidecar configuration, indexing with multiple roots #268 #348
Slowly getting to the point where only very few people are able to maintain this codebase :)

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-07 10:09:35 +02:00
Michael Mayer 528f80de3b Code clean-up
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-05 17:03:07 +02:00
Michael Mayer fbf675fbfb Add s2 prefix to all cell ids
Fixes location search when using SQLite

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-05 16:49:32 +02:00
Michael Mayer 5c574e3837 Backend: Hide private photos in moments
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-05 10:59:59 +02:00
Michael Mayer 5a06433a1c Fix restore photo data from YAML files
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-05 10:17:00 +02:00
Michael Mayer 5b1c0f2afe Refactor Photo.LoadLocation and LoadPlace
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-04 22:26:00 +02:00
Michael Mayer f16169c259 Refactor Photo.PlaceLoaded and LocationLoaded
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-04 22:05:24 +02:00
Michael Mayer 6564e7a548 NewPhoto should only set default IDs, not entities
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-04 21:55:00 +02:00
Michael Mayer c0a3ab5ac5 Favorites: Don't count private photos #334
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-04 17:33:00 +02:00
Michael Mayer 916e3a570c Backend: Don't index sidecar files if main file failed
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-04 17:06:42 +02:00
Michael Mayer ca8a8466d4 Indexing bug fixes and UX improvements
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-04 14:56:27 +02:00
Michael Mayer 15113afaa6 Backend: Fix handling of deleted labels
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-02 17:57:12 +02:00
Theresa Gresch ad9167360d
Feature/246 (#345)
* Import: Implement "add to album" in backend #246

Signed-off-by: Michael Mayer <michael@liquidbytes.net>

* Import: Implement "add to album" in frontend #246

Signed-off-by: Michael Mayer <michael@liquidbytes.net>

* Add OriginalName to photo search result

Signed-off-by: Michael Mayer <michael@liquidbytes.net>

* Add json tags to PhotoName and PhotoPath

Signed-off-by: Michael Mayer <michael@liquidbytes.net>

* Photo: Use EstimateCountry() in UpdateLocation()

Signed-off-by: Michael Mayer <michael@liquidbytes.net>

* Photo: Set OriginalName earlier while indexing

Signed-off-by: Michael Mayer <michael@liquidbytes.net>

* Ignore whitespace when stripping sequence from filename #335

Signed-off-by: Michael Mayer <michael@liquidbytes.net>

* Fix labels count for SQLite

Signed-off-by: Michael Mayer <michael@liquidbytes.net>

* Import: Show name of new albums #246

Signed-off-by: Michael Mayer <michael@liquidbytes.net>

* Frontend: Add acceptance test files

Co-authored-by: Michael Mayer <michael@liquidbytes.net>
2020-06-01 09:45:24 +02:00
Michael Mayer a1238c94cc Fix photo test after improving location estimate #260
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-31 18:19:24 +02:00
Michael Mayer 68c758a686 Backend: Improve location list for estimates #260
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-31 17:45:58 +02:00
Michael Mayer 14c89022d3 Improve browsing by original file and folder name #260
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-31 14:42:41 +02:00
Michael Mayer 946f7967b5 Implement download as zip for moments, calendar and folders #154
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-30 21:31:32 +02:00
Michael Mayer 5d92ece264 Albums: Add category filter
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-30 21:11:56 +02:00
Michael Mayer ea6ed61d1f Automatically create albums from folders #260
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-30 15:42:04 +02:00
Michael Mayer 0b1bcf0d4a Replace TiDB with SQLite for improved stability #66
As a side effect, we need less configuration values.

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-30 14:52:47 +02:00
Michael Mayer dd442ab9e9 Add moments #154
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-30 01:41:47 +02:00
Michael Mayer 9a5d4fa719 Backend: Indexing improvements #154
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-29 18:04:30 +02:00
Michael Mayer f6c929528e Locations and places: Revert key renaming
Code reads better this way.

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-29 12:56:24 +02:00
Michael Mayer dcc610d7a9 Use AlbumType to distinguish between manual collections and moments #154
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-29 12:21:17 +02:00
Michael Mayer a77b2431d3 Backend: Improve labels, keywords and caching
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-28 21:20:42 +02:00
Michael Mayer 02800e796e Guess title, location and date from file and path name #154
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-28 15:12:18 +02:00
Michael Mayer f510ac994c XMP: Group files based on DocumentID and Instance ID #335
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-27 13:40:21 +02:00
Michael Mayer 301e510b2d Photos: Generate title based on estimated place #154
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-26 21:51:34 +02:00
Michael Mayer 1df0d9a549 Change name of maintenance worker to "prism" #154
See https://twitter.com/browseyourlife/status/1265289044856123393

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-26 19:27:29 +02:00
Michael Mayer 24cc8089fa Fix favorite counter for archived files #334
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-26 13:43:16 +02:00
Michael Mayer fe732e274c Fix saving photo metadata
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-26 12:46:22 +02:00
Michael Mayer dd42d2b823 Entities: Refactor FirstOrCreate
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-26 11:00:39 +02:00
Michael Mayer 10d5f433aa Albums/Folders: Add category, country, year & month columns #154
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-26 09:02:19 +02:00
Michael Mayer 2156afd85a File browser: Implement clipboard; refactor entities and fixtures #260
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-25 19:10:44 +02:00
Michael Mayer 4421e7d203 Add simple file browser to Library #260
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-24 22:16:06 +02:00
Michael Mayer 03ec4b586d Initial commit for folders and moments #154 #260 #331
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-23 20:58:58 +02:00
Michael Mayer e796d036c2 Fix indexer and add sort by file name #328
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-22 19:05:16 +02:00
Michael Mayer a7122ff4e1 Add /folders API to get directory lists for browsing #260
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-22 16:29:12 +02:00
Michael Mayer f9b6952947 Support for Live Photos #177
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-21 13:26:28 +02:00
Michael Mayer 2efb0039e8 Photos: Add photo_type column and search filters for path / name
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-21 10:03:56 +02:00
Michael Mayer 1297a8cc1f Read taken date from file name #304
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-20 15:10:24 +02:00
Michael Mayer 6f3ccc95aa Backend: Make sure .photoprism directory exists
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-19 19:49:32 +02:00
Michael Mayer 4300d45482 Backend: Log errors in database
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-19 13:48:05 +02:00
Michael Mayer a785a9d708 Backend: Update TestPhoto_Save test
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-19 12:51:19 +02:00
Michael Mayer 27ea0cb214 Backend: Improve entity log and error messages
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-19 12:48:32 +02:00
Michael Mayer 1cf0893b18 Backend: Fix AfterCreate after upgrading GORM
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-19 12:30:26 +02:00
Michael Mayer e61dda495a Add PHOTOPRISM_SIDECAR_HIDDEN and PHOTOPRISM_JPEG_HIDDEN flags #311
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-19 11:00:17 +02:00
Michael Mayer 7777fa95a5 Backend: Don't backup albums to photo yaml (just yet)
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-19 09:44:49 +02:00
Michael Mayer bbe60d120b Backend: Set DescriptionSrc when restored from YAML
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-19 09:21:10 +02:00
Michael Mayer b24d5c03a1 Use YAML files to save and restore photo metadata
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-18 22:18:58 +02:00
Michael Mayer f057880df3 Backend: Fix panic in File.Save()
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-18 17:57:40 +02:00
Michael Mayer 0bf17206d0 Entity: Return error in File.Save() if PhotoID is 0
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-18 17:25:28 +02:00
Theresa Gresch 1fdc2cf610 Backend: Add tests to internal/entity 2020-05-18 16:37:37 +02:00
Michael Mayer a2d5da7afd Entity: Fix query in File.AllFilesMissing()
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-18 16:36:24 +02:00
Theresa Gresch d2975666e5 Backend: Make LocLabel unique in place fixtures 2020-05-18 10:05:33 +02:00
Michael Mayer abfd2fa79d Videos: Improve indexing and searching #312
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-16 17:07:44 +02:00
Michael Mayer 7ee4d5eda5 Photo: Update year and month whenever takenAt may change
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-15 16:06:32 +02:00
Michael Mayer 9937304d0c Metadata: Improve date and error handling; see #302, #304, #305 and #295
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-15 15:29:56 +02:00
Theresa Gresch e4c521d9b3 Backend: Update FindPlaceByLabel function 2020-05-15 13:16:03 +02:00
Theresa Gresch 4aaa4e9fc2 Backend: Add tests to internal/entity 2020-05-15 13:15:10 +02:00
Michael Mayer 71fb67adb2 Videos: Support H.264/AVC .mov files
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-15 09:39:32 +02:00
Theresa Gresch afc1e10646 Backend: Add tests to internal/api 2020-05-14 18:10:01 +02:00
Theresa Gresch 07e4d22464 Backend: Add tests to internal/entity 2020-05-14 15:28:11 +02:00
Theresa Gresch 156c7b295e Backend: Add tests to internal/entity 2020-05-14 15:27:12 +02:00
Theresa Gresch 05078b0e4b Backend: Add test fixtures 2020-05-14 14:17:12 +02:00
Michael Mayer 2045e3d770 Index and show video metadata #17
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-14 11:57:26 +02:00
Theresa Gresch c0a2da8bab Backend: Add tests fixtures 2020-05-13 19:46:49 +02:00
Michael Mayer bd3426ae51 Add video player #17
Still need to index metadata. Work in progress.

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-13 15:36:49 +02:00
Theresa Gresch 25da779c43 Backend: Add tests fixtures 2020-05-13 11:51:51 +02:00
Theresa Gresch 0284f7c101 Backend: Add test fixtures 2020-05-13 10:15:43 +02:00
Theresa Gresch c0b6eaa9d5 Backend: Add tests to internal/entity 2020-05-12 13:52:09 +02:00
Theresa Gresch 687c85ed73 Backend: Fix bug in addLabels function 2020-05-12 11:52:46 +02:00
Theresa Gresch 96208d2c51 Backend: Add tests to internal/entity 2020-05-12 11:51:54 +02:00
Theresa Gresch ac698b6eab Backend: Add test fixtures 2020-05-12 11:51:28 +02:00
Michael Mayer a61f2384b3 Initial video support #17
Still need to add a player and index metadata. Work in progress.

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-11 18:29:17 +02:00
Theresa Gresch e95260e3ab Backend: Add tests to internal/entity 2020-05-11 17:01:19 +02:00
Theresa Gresch 95ab6dfb94 Backend: Add test fixtures 2020-05-11 17:01:05 +02:00
Theresa Gresch 7cce763864 Backend: Refactor test fixtures 2020-05-11 14:49:53 +02:00
Michael Mayer 3c47a85ea5 Backend: Move UpdatePhotoCounts() to entity package
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-11 11:01:28 +02:00
Michael Mayer 4fbed12e94 Backend: Skip archived photos while indexing #300
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-11 08:57:58 +02:00
Michael Mayer 923093042a Purge: Improve photo counts and logging
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-11 07:23:23 +02:00
Michael Mayer 8ccaaff4e5 Backend: Update label photo count and refactor entity fixtures
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-10 19:43:49 +02:00
Michael Mayer 4beeebe5cc Backend: Add Hidden column to PhotoAlbum
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-09 21:00:02 +02:00
Michael Mayer 252e67ce03 Add photo_count column to labels table
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-09 11:00:22 +02:00
Michael Mayer 3aad02501f Run unit tests in separate databases to avoid conflicts
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-08 19:34:29 +02:00
Michael Mayer 2f28c6840e Backend: Try migrations a second time if they fail
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-08 18:18:19 +02:00
Michael Mayer 40b7a1285f Backend: Reduce db migration error log level to debug
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-08 18:02:53 +02:00
Michael Mayer c5dbe1bc14 Backend: Refactor database migration
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-08 17:45:32 +02:00
Michael Mayer 94dfb3cd19 Add WaitForMigration() function to avoid db test failures
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-08 16:36:09 +02:00
Michael Mayer 05d9187167 Update count in places are restoring photos #234
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-08 16:01:34 +02:00
Theresa Gresch aaf1ff64ad Backend: Add tests to internal/entity 2020-05-08 15:46:16 +02:00
Michael Mayer 842da9f09b Backend: Query package refactoring
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-08 15:41:01 +02:00
Theresa Gresch 0d0ba28331 Backend: Add tests to internal/entity 2020-05-08 14:18:11 +02:00
Michael Mayer 1894b4440f Detect and report photos without primary file, e.g. after purging #234
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-08 12:01:28 +02:00
Michael Mayer 3288ede6e6 Simplify Purge() function #234
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-08 12:01:28 +02:00
Theresa Gresch dc23632556 Backend: Add tests to internal/entity 2020-05-08 11:46:09 +02:00
Theresa Gresch a136945470 Backend: Add tests to internal/entity 2020-05-08 10:21:03 +02:00
Michael Mayer c0c0c96c30 Remove primary flag for missing files #234
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-08 09:36:34 +02:00
Michael Mayer 979a5f5c76 Code clean-up and refactoring of purge command #234
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-07 21:55:34 +02:00
Michael Mayer 252672b291 Run purge after indexing files in Web UI #234
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-07 21:46:00 +02:00
Michael Mayer f0187df4a1 Purge command to remove missing files from the index #234
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-05-07 19:42:04 +02:00