Commit graph

192 commits

Author SHA1 Message Date
545ea62818 Add some docstrings and comments near get_cached_instance. 2020-04-03 12:33:19 -07:00
dd3d40de53 Experimental: Allow search results to include albums.
I've been thinking about this for a while but couldn't think of
the perfect way to implement it. I still haven't, so instead I'm
just starting with something and we'll see how to improve later.
At any rate, I can update the rest of the system to expect Albums
coming out of search so that if I ever have a better algorithm
everything else will already be ready for it.
For this first experiment, just any photos that are part of an album
will send that album out as a result. It doesn't even respect the
limit parameter, it's really just to see how it feels to use.
2020-04-02 22:36:40 -07:00
e94e35c98c Add option to natural_sort filenames before digesting. 2020-04-02 21:57:54 -07:00
374763f990 Reduce log level of savepoints to 5.
So far I am satisfied with how they are working, and they clutter
the output so much I can't read anything else.
For reference, logging.DEBUG is 10.
2020-04-02 21:56:41 -07:00
6529aedde6 Add docstring to PDB.__init__. 2020-03-06 09:43:16 -08:00
961ece0081 digest_directory excludes extend defaults instead of overriding them.
With this change, there is currently no way to specify that I actually
want to include thumbs.db etc, but I think the likelikhood of wanting
to extend the defaults greatly exceeds wanting to overrid them.
2020-02-27 14:17:30 -08:00
9d620b4b97 Remove unused imports & other small things. 2020-02-20 22:44:56 -08:00
854fa4db51 Rename PDB.register_user -> new_user.
I was treating User a little bit special here, but I prefer to
have the more consistent terminology.
2020-02-20 00:18:40 -08:00
1fc2ed09f5 Remove commit argument from ALL methods. @transaction does it. 2020-02-19 23:56:09 -08:00
0a984117c5 Add rollback queue, like commit queue. 2020-02-19 23:46:30 -08:00
8c797024e0 Remove calls to pdb.commit(). Let @transaction do it. 2020-02-19 22:58:21 -08:00
04f3f6f297 Remove commit=False from all method calls, it's default now. 2020-02-19 22:20:21 -08:00
3a9d7fc2dc Set default commit=False for ALL methods.
I'm working on tightening up some of the transaction code. In the
past it was default commit=True because I would launch the repl, do
something, and quit, so it was nice to have auto commit. But really
it makes more sense to have it default False and be explicit when
to commit.
2020-02-19 20:08:24 -08:00
108ba8bd95 Add PDB.release_savepoint. 2020-02-19 17:00:08 -08:00
bcd13b9ae4 Make the commit queue task popping a little more clear. 2020-02-19 16:26:23 -08:00
e7c90faf79 PhotoDB.rollback without savepoint should roll all, like real sql.
In sqlite3, rollback without a savepoint undoes the entire pending
transaction stack, whereas I was just popping the last save.
This change makes it match real sqlite. Also the only current call
for rollback is in the @transaction decorator which is already
explicit.
2020-02-19 16:26:02 -08:00
1375d9fb26 Fix new_photo, data[extension] to use new pathclass.Extension. 2020-02-19 15:11:52 -08:00
d6d7521bce Assert table exists for any sql op involving argument tables.
At the moment, all of these functions are safe because they're
called with hardcoded tables determined by other code, not user input.
But while I was working in this area I felt it would be good to add
a safety check just in case.
2020-02-04 18:15:14 -08:00
64f9eb5f2b Replace some % formatting with fstrings. 2020-02-04 18:12:41 -08:00
2ffe3940e6 Update OutOfDate message to show actual argument. 2020-01-28 10:52:19 -08:00
947d05a4fa Revert 488d793, reinstate PhotoDB.normalize_tagname.
In that commit, I missed three more calls in objects.py and
now I'm deciding that 5x copy-paste is not worth it.
2019-06-15 16:49:52 -07:00
bdff14ecf2 Identify a logic error without actually fixing it.
😎
2019-04-26 23:14:14 -07:00
cc6e7a8b16 Improve line consistency across the PhotoDB.new_* methods.
By clarifying why some lines are above / below the generate_id
call and putting similar code in similar order to each other.
2019-04-26 23:12:55 -07:00
a9865d8546 Replace PhotoDB.normalize_tagname with real call to Tag.norm_name.
I originally did this because I didn't want to accidentally call
Tag.normalize_name and forget to pass the valid parameters. However,
having this single method be on PhotoDB while the other norms are
part of their proper class has been an eyesore.
So since there are only a few calls to this I'm just inlining them
and trusting to not forget if I add more in the future.
2019-04-26 23:06:41 -07:00
d24f93809b Add message parameter to commit instead of logging separately.
The upside is that we can get rid of some redundancy and reduce
the friction of adding more commit messages.
The downside of this is that the log statement always reports from
commit, instead of the function calling commit. But with unique
messages this shouldn't be too much trouble and should be worth it.
2019-04-01 23:29:01 -07:00
68a567d266 Perform is None check before detailed type checks. 2019-04-01 23:17:35 -07:00
ad140e485e Two small docstring improvements. 2019-03-16 13:09:02 -07:00
d66dc53215 Require voussoirkit 0.0.28 for sqlhelpers.listify.
Instead of defining that within etiquette.
2019-01-01 18:08:47 -08:00
c6c6158062 Save this assignment until it's needed. 2018-12-21 23:44:50 -08:00
7674610b88 Somewhat simplify a few conditions in photodb init. 2018-11-24 22:25:25 -08:00
1eb5a6f465 Rename DatabaseOutOfDate's parameter 'current' -> 'existing'. 2018-11-24 22:06:16 -08:00
dbdd509cd2 Rearrange imports so voussoirkit is right after lib imports.
Added a styleguide.md file to refer back to.
Since voussoirkit is a library it feels better to have it below
the rest of the library and above the local project imports.
2018-11-04 19:27:20 -08:00
4d1575719b Bump voussoirkit requirement to 0.0.24 for pathclass exceptions. 2018-09-23 14:54:11 -07:00
670bc8b375 Allow setting searchhidden during new_photo. 2018-09-21 21:31:57 -07:00
53c86c30a1 Improve clarity of the recursive_dict_ helper functions & usage. 2018-08-11 18:19:55 -07:00
3b3c690ae3 Remove return value from load_config, so no illusion of purity.
This method already relies on object state anyway and writes back
to self.config, so the return value is unnecessary.
2018-08-11 18:19:10 -07:00
9eb9220ca9 Read and write the config file as UTF-8. 2018-08-11 17:57:19 -07:00
30e3aa9c6f Simplify and improve rollback logic. 2018-07-29 16:28:57 -07:00
30d96139c2 Remove commit param from PDB.sql_* methods nobody was using.
And is better left to the caller anyway.
2018-07-29 16:05:49 -07:00
9328600355 Add message parameter to PDB.savepoint for better logging.
Helps to have a visual on which methods are creating the saves.
2018-07-29 16:03:04 -07:00
8447fb3343 Make deleting and unlinking tags require confirmation.
Added text inside the delete buttons and made them confirm.
2018-07-28 20:25:25 -07:00
2a45f4e17e Add parameter albums to purge_empty_albums as starting set.
Like purge_deleted_files, you can provide a list of albums to
act as the starting point instead of letting it use the default
of all albums.
2018-07-22 20:21:00 -07:00
8a12a24e8e Add tag_autocomplete.js.
Instead of embedding the entire tag list in the search.html template
every single time, this script loads the tags from the new,
cache-enabled endpoint /all_tags.json. Then we can use html5
datalists to create autocomplete forms on the search and photo pages.
2018-07-22 20:19:05 -07:00
4c65ccaf68 Big! Liberate Groupables from strict heirarchy. Multiple parents.
I found that the strict heirarchy was not satisfying the situation
where one tag is the intersection of two others, but we can only
pick one as the parent

For example, does red_jacket belong under clothes.red_clothes or
clothes.jackets? A search for "red_clothes AND jackets" might
give us someone wearing red pants and a black jacket, so this
definitely needs to be a separate tag, but picking only one
parent for it is not sufficient. Now, a search for red_clothes
and a search for jackets will both find our red_jacket photo.

The change also applies to Albums because why not, and I'm sure
a similar case can be made.

Unfortunately this means tags no longer have one true qualname.
The concept of qualnames has not been completely phased out but
it's in progress.

This commit is very big because I was not sure for a long time
whether to go through with it, and so much stuff had to change
that I don't want to go back and figure out what could be grouped
together.
2018-07-20 13:09:06 -07:00
4987db4bd0 Switch to f-string formatting in many places. 2018-07-18 18:36:36 -07:00
38bac41eb9 Add helpers.split_easybake_string for prelim parsing.
Helps to remove some distractions from the main easybake method.
2018-07-15 14:23:43 -07:00
f06b0915ab Add new_photo_kwargs to the create_or_get call.
Due to the closure, it was already working just fine, but I
want the explicitness of having it there.
2018-07-15 13:52:08 -07:00
57a9e0d4dc Move PDB.close out of the sqlmixin, into main class.
Doesn't really deserve to be with the sql stuff.
2018-07-15 13:27:04 -07:00
0c8a57b6aa Make the assert methods public. 2018-05-06 21:09:09 -07:00
40c255b0d0 Pass object instantiations through a cacher.
I want the system to only have one instance of a particular
object at any time, so that we can effectively cache things
in them.
2018-05-06 21:09:08 -07:00