Commit graph

59 commits

Author SHA1 Message Date
abaeb2321f Oops, should be .remove instead of .pop for the cacheclass. 2018-03-23 00:35:56 -07:00
0e3ae11610 Improve normalizers, use less None; Add author search box.
It was getting difficult to remember which of the normalizers
use None and which don't. So let's try to be a little more consistent
and just use empty sets, etc, so the caller can rely on receiving a
set instead of having to check for None.

Also renamed search parameter authors->author to be more in line
with the singular form of extension.
2018-03-22 21:09:21 -07:00
5be174d1b3 Completely rewrite search to use more SQL and less application.
In order to achieve tag_musts, we break each of the musts down
into separate EXISTS queries for each of the matchable children.
Then we INTERSECT those, and finally do other filtering and
ordering as usual.
2018-03-21 19:20:43 -07:00
b5274fefb9 Add caching.py to enable browser caching of files. 2018-03-18 21:42:31 -07:00
ea7401b4f2 Fix common.send_file to use pathclass. 2018-03-18 21:40:32 -07:00
0de755f138 Let the SessionManager use a cacheclass instead of plain dict. 2018-03-18 21:23:48 -07:00
84599b44f7 Store author for bookmark creation. 2018-03-18 15:59:58 -07:00
dffde094e8 Give Albums and Tags an author_id column.
Keeping V11 because I hadn't published previous commits yet.
2018-03-18 15:28:26 -07:00
ffe0be21f5 Fix Photo thumbnail paths to be relative to the PDB's thumb dir.
Previously they were relative to the directory from which the client
was launched, meaning it usually started with ./_etiquette.
Now it should be more portable and less tight.
2018-03-13 02:50:54 -07:00
5f6d21fdee Give Photos a searchhidden property.
By default, photos with searchhidden do not appear in the search
results. This allows a small number of representative images from
a large album to appear in the results, while the rest can be
found on the album's page.

The same effect could be achieved with a tag and forbid search,
but tag searching has much higher cost and it would be more difficult
to implement as a default behavior without requiring lots of special
checks whenever listing tags etc.
2018-03-09 17:10:27 -08:00
f34164bf85 Add search feature has_thumbnails.
Search needs a complete refactor.
But until then, let's keep adding to it!
2018-02-24 23:06:25 -08:00
4e98fcf137 Oops, add the session to /clipboard. 2018-02-24 19:18:15 -08:00
0228fbebfd Move the random hex generator to helpers. 2018-02-24 18:54:59 -08:00
5add26d8fb Add endpoint /batch/photos/refresh_metadata. 2018-02-24 12:52:36 -08:00
5a1d259780 Add /clipboard UI for mass-tagging. 2018-02-22 15:23:57 -08:00
761ae5c30c Add endpoints /batch/photos/add_tag and /remove_tag. 2018-02-20 17:23:51 -08:00
ebe0fcee40 Rename URL /photo_cards -> /batch/photos/photo_card. 2018-02-19 23:44:24 -08:00
91d445a877 Add new page /clipboard, with full photo cards. 2018-02-17 19:12:34 -08:00
606a66cbf9 Remove Photo.filepath and real_filepath in favor of real_path. 2018-02-17 15:19:36 -08:00
59cd922a53 Remove unnecessary methods=GET. 2018-02-17 14:59:02 -08:00
2f9b51b636 Rename Photo.tags -> get_tags. 2018-02-16 23:07:21 -08:00
3c4f69f647 Specify name= on calls to PDB.get_tag.
Sometimes it's easy to forget whether its the name or ID,
and I like the consistency of specifying.
2018-02-16 22:25:56 -08:00
6f4530c88c Let SessionManager.get require Request object; Check IP addr.
So far there is no use case in which get needs to be called with
something other than a Request, and I don't think there will be.
So let's make that part of the design and we can also take the
opportunity to check IP.
2018-02-03 02:10:07 -08:00
c6a396c658 Move ef/endpoints/common.py to ef/common.py
Decided it doesn't belong with the endpoints files.
2018-02-03 01:43:41 -08:00
b39f2e3f7b Create basic_endpoints file. Don't put them in __init__. 2018-02-03 01:34:07 -08:00
cf59f96813 Perform serverside expiration of sessions on get attempt.
Also remove unnecessary conversion to int.
2018-01-19 21:59:50 -08:00
7352d1e141 If the user has a token we don't recognize, give them a new one. 2018-01-15 20:04:47 -08:00
55e1281774 Improve technique for finding cookie set by function.
Instead of iterating through all the outgoing headers.
2018-01-15 18:56:41 -08:00
be0fca729f Create sessions for anons as well, instead of just logged in.
It makes sense that anon sessions are still sessions. So @give_token
will ensure that every request has a session. Logged in conditionals
move from 'if session' to 'if session.user'.
2018-01-15 18:41:21 -08:00
8a1f2c65f9 Tighten the types for _normalize_token; include werkzeug wrappers. 2018-01-15 18:39:40 -08:00
ec4b5b014b Oops, fix missing return statement.
That would cause problems.
2018-01-13 16:14:01 -08:00
57f007d595 Don't use from etiquette import. 2018-01-13 16:12:52 -08:00
d84fc037fe Use urandom instead of uuid for session id. 2018-01-13 15:49:14 -08:00
c049b97bc6 Replace etiquette_flask.py with endpoints package.
Split the object types' endpoints into separate files and group
them better. Should be much easier to navigate and expand.
2018-01-11 19:40:56 -08:00
fe88cdc413 Add decorator catch_etiquette_exception.
To reduce the number of 500 errors and provide 400 instead.
2018-01-09 21:21:15 -08:00
3d8aeec484 Add API endpoints for add/remove photo from album. 2017-12-16 14:19:00 -08:00
f59f94cae9 Fix required_fields looking at wrong jsonify file. 2017-12-16 12:25:01 -08:00
0d0354f4da Rename normalize_filepath to remove_path_badchars.
Because the function does not do any resolving or converting
to an absolute path, I feel the name 'normalize' is inaccurate
and could be misleading when read. This is more clear.
2017-12-07 21:15:10 -08:00
bb5fa816d8 Cleanup: Rename GroupableMixin.add to add_child for clarity.
Especially since for albums it might sound like you're adding a photo.
2017-11-11 22:41:26 -08:00
3f69a2c240 Cleanup: Replace "objectid" with "object_id" in the Python portions. 2017-11-11 22:38:51 -08:00
4836efcf23 HTTP redirect /tag/synonym to /tag/master. 2017-09-18 14:16:33 -07:00
f4ee7ddd9e Include werkzeug Response type in typecheck. 2017-09-18 14:10:25 -07:00
4fc203634c Add new config "enable_login". 2017-07-20 23:25:23 -07:00
9f45f0851a Allow renaming the tag via /tag/x/edit. 2017-07-16 17:28:44 -07:00
22c0163f5b Add /bookmark/id/edit and /bookmark/id.json endpoints. 2017-07-13 23:02:57 -07:00
533970f248 Add more stuff to the to-do list. 2017-07-09 15:48:47 -07:00
a2906db06a Let /refresh_metadata try to generate a thumbnail. 2017-07-09 15:45:10 -07:00
57355cb032 Add /userid/id redirect to /user/name 2017-06-19 17:03:07 -07:00
e58c50c94f Return 400 instead of 500 for /albums/create_album errors. 2017-06-16 02:24:57 -07:00
1b9f7608b1 Send more jsonified exceptions instead of just 500. 2017-06-14 22:48:50 -07:00