Commit graph

408 commits

Author SHA1 Message Date
f3bceb4688 Remove get_cached_flat_dict, add get_cached_tag_export. 2020-09-14 05:49:24 -07:00
cf64c79809 When grouping tags, update tagged photos to prefer child.
I am also considering applying the opposite effect when ungrouping.
Should a photo with A.B get A when A and B are ungrouped? There are
some cases where the answer is yes, and others no, depending on the
reason you're ungrouping the tags. Whereas this change is non-
controversial and simply enforces the existing standard of adding
more specific tags to a photo.
2020-09-14 05:46:43 -07:00
f1d17350a7 Add Photo.remove_tags. 2020-09-14 05:38:20 -07:00
85f24dd1f5 Let Photo.remove_tag only remove exact tag, not children.
I wrote this because I felt it would be a useful shorthand, as a way
of nuking all tags of a subtree off a photo, but it's too easy
to cause collateral damage when composing remove_tag with other
functions. So, when you remove tags from a photo, you'll have to be
more specific.
2020-09-14 05:37:47 -07:00
54add8ad61 Add search parameter yield_albums.
The exact details of this feature are still experimental, but I think
the concept is sound enough to make it an official parameter.
2020-09-14 05:16:36 -07:00
188095c30b Remove unnecessary intermediate variable syn_lines. 2020-09-12 17:33:45 -07:00
5dcccae646 Fix add_children all(bail) causing short-circuit. 2020-09-12 13:14:40 -07:00
d41bad63e7 Move reset of cached_tag_flat_dict out of GroupableMixin into Tag.
That should not have been there!
Needed to add the BAIL sentinel so that Tag methods would only
reset the cache if the internal method actually did made any changes.
2020-09-12 01:19:03 -07:00
74445d0a1f Add internal _add_child so that plural doesn't call transacted.
add_children was calling add_child in a loop. Since this is a parent
class, that call would actually call the subclasses' add_child method,
which has a transaction decorator, and create unnecessary transactions.
2020-09-12 01:00:39 -07:00
21921dc8fc Rename cached_frozen_children -> cached_tag_flat_dict. 2020-09-12 00:56:32 -07:00
b59c2700db Update _lift_children docstring. 2020-09-12 00:53:12 -07:00
1a53af8821 Replace horrible flat_dict algorithm with actual recursion. 2020-09-12 00:21:37 -07:00
2a9b2cd095 Add methods PDB.get_thing_count for all thing types. 2020-09-11 23:51:57 -07:00
cfb48a8d11 Add disclaimer about yield order to get_things_by_id. 2020-09-11 22:13:30 -07:00
0cdd8c0d71 Add detailed doctstring to digest_directory. 2020-09-11 15:49:02 -07:00
4a3236babe Update digest_directory to handle plural albums at every step. 2020-09-11 15:48:37 -07:00
dea746c45a Alphabetize Album's methods. 2020-09-11 15:21:13 -07:00
1cc70616a5 Replace get_album_by_path with get_albums_by_path generator. 2020-09-11 15:15:12 -07:00
7705848714 Let new_album take multiple associated directories. 2020-09-11 15:02:33 -07:00
519bcf32e6 Add separate plural method Album.add_associated_directories. 2020-09-11 15:02:15 -07:00
8ed5f0be51 Fix tag_expression usage of frozen_children which was tag objects.
At some point, I changed tag_export.flat_dict from using strings as
keys to using actual Tag objects as keys. The tag expression handler
never got updated, so frozen_children[tagname] raised KeyError as
it was looking for a string.
I considered using tag_expression_tree.map to convert all the tree
tokens into tag objects, but when we render the tree back into text
it will say "Tag:name" instead of just "name" throughout the whole
expression, and I don't want to deal with converting those back.
2020-09-09 12:58:57 -07:00
30d7dbdb39 Fix tag_export.flat_dict which was not truthful about synonyms. 2020-09-09 12:53:51 -07:00
a79e14e120 Let search_kwargs[orderby] give back None instead of empty list. 2020-09-09 12:20:49 -07:00
7eb095e17c Experiment: Use width*height instead of area column when searching.
Will see if this has any adverse effects, or if it goes well I can
remove the area and ratio columns.
2020-09-08 21:59:42 -07:00
a8fa621f01 Rewrite helpers.comma_space_split with a simple regex. 2020-09-04 17:00:01 -07:00
e774b5f101 Fix zip_photos attempting to add deleted files. 2020-08-30 18:48:08 -07:00
0b4542089b Accommodate chunk_sequence which now always yields lists. 2020-08-28 17:57:15 -07:00
e40c91a7cf Split reload_metadata into separate functions by mimetype. 2020-08-28 17:51:07 -07:00
45d8809971 Fix crash while trying to get size of deleted file.
Pathclass no longer returns None for missing files, as it did when
this was written.
2020-08-28 17:32:53 -07:00
fa8bbf92f9 Remove call to logging.basicconfig, let the frontend do it. 2020-08-12 12:23:51 -07:00
b15beb73eb Rewrite chunk_sequence to work with generators. 2020-08-12 11:21:48 -07:00
b21e6a1206 Show data directory in DatabaseOutOfDate message, not db file. 2020-07-01 16:19:54 -07:00
363d0bac67 Move THING_CLASSES and thing-related methods to new mixin.
I realized there's no need to have that on the global scope when
it is only used for the thing-methods.
2020-04-15 16:33:16 -07:00
5dffe52830 Start _cached_sql_tables as None, and in the SQL mixin. 2020-04-15 16:31:47 -07:00
35895856e6 Use .clear() instead of reassigning to empty lists.
I cannot remember if there is a reason I chose to use empty lists.
If there is, I'll rediscover it and write a comment. Until then, it
makes sense to use clear as an explicit clearing of the list.
2020-04-15 16:31:09 -07:00
43a665fd91 Replace more %s with fstrings. 2020-04-15 16:29:56 -07:00
930960e22a Move this config prep code into voussoirkit as configlayers. 2020-04-03 17:09:01 -07:00
9c96522cfc Remove thing_map table, just use thing_map class.table. 2020-04-03 15:20:09 -07:00
545ea62818 Add some docstrings and comments near get_cached_instance. 2020-04-03 12:33:19 -07:00
5a16579fe3 Add a 'type' string to all etiquette jsonify outputs. 2020-04-02 22:43:20 -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
0fdf08adf5 Fix bug where searching musts=[A, A.B] ignored B.
The problem was that during the expansion of A, B would get added to
the `total` set. And then because B was already in total, it would
bail early instead of expanding, but that meant it got left out of
the final query. But this only happened sometimes since random set
ordering would sometimes expand B before A and everything was ok.
I think the best solution is to do this first pass that eliminates
ancestors. Furthermore, I realized that the entirety of expand_nested
hinged on this flawed logic and was otherwise completely redundant
for a simple list comprehension.
2020-03-19 19:04:09 -07:00
13c3a1c0e9 Update docstrings for walk_children, walk_parents. 2020-03-19 19:03:47 -07:00
0a8a754cbc Replace set([]) with {}. 2020-03-19 17:40:52 -07:00
e35efb5c61 Make this string an r-string so it gets better syntax highlighting. 2020-03-11 18:11:54 -07:00
6529aedde6 Add docstring to PDB.__init__. 2020-03-06 09:43:16 -08:00
3f2cde02e1 Use send2trash to support recycle_instead_of_delete. 2020-02-27 14:18:46 -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