Commit Graph

353 Commits

Author SHA1 Message Date
rr- a224297c4f server/db: poor fix for tag aliases' order
It's a hack, but it seems to work okay.
2016-08-16 17:22:33 +02:00
rr- 48af5160df server/search: fix negative offsets causing ISE 2016-08-16 17:22:33 +02:00
rr- 87b1ee4564 server/tests: use real database
I'm experimenting with snapshots and found following limitation of
SQLite: https://www.sqlite.org/isolation.html
2016-08-16 17:22:33 +02:00
rr- 0320a0b55b server/general: improve versioning effectiveness
...by integrating it with sqlalchemy that adds WHERE conditions for each
UPDATE and DELETE statement.
2016-08-16 17:22:33 +02:00
rr- ef4af697c4 server/tags: fix tag sorting
Brainfart from d6942121e5
2016-08-14 17:54:15 +02:00
rr- 9aea55e3d1 server/general: embrace most of PEP8
Ignored only the rules about continuing / hanging indentation.

Also, added __init__.py to tests so that pylint discovers them. (I don't
buy pytest's BS about installing your package.)
2016-08-14 16:44:03 +02:00
rr- af62f8c45a server/general: ditch falcon for in-house WSGI app
For quite some time, I hated Falcon's class maps approach that caused
more chaos than good for Szurubooru. I've taken a look at the other
frameworks (hug, flask, etc) again, but they all looked too
bloated/over-engineered. I decided to just talk to WSGI myself.

Regex-based routing may not be the fastest in the world, but I'm fine
with response time of 10 ms for cached /posts.
2016-08-14 16:43:35 +02:00
rr- d102c9bdba server/tests: update func.posts tests 2016-08-14 16:43:35 +02:00
rr- 264f9ee70b server/tests: update func.mime tests 2016-08-14 16:43:35 +02:00
rr- c23c401c4d server/tests: add func.tags tests 2016-08-14 16:43:35 +02:00
rr- 53e96ba41f server/tests: add func.tag_categories tests 2016-08-14 16:43:35 +02:00
rr- 81dfbaec98 server/tests: add func.users tests 2016-08-14 16:43:35 +02:00
rr- 03c74cb5a3 server/tests: add func.comments tests 2016-08-14 16:43:35 +02:00
rr- 65efc309a8 server/comments: catch bad IDs 2016-08-14 16:43:31 +02:00
rr- 56b3eb9674 server/util: fix case conversion 2016-08-14 16:43:04 +02:00
rr- 86452019a3 server/util: improve catching bad field names
KeyError could catch exceptions that happened inside the serializer
routine and mistakenly report them as an error with user input.
2016-08-14 16:43:04 +02:00
rr- f6f07a35df server/general: authenticated_user->auth_user 2016-08-14 16:43:04 +02:00
rr- c2bbf7b62c server/general: add assertions 2016-08-14 16:43:04 +02:00
rr- bb86e9bf56 server/posts: add more safety checks for notes 2016-08-14 16:43:04 +02:00
rr- 7cd4a1a530 server/tags: verify description size 2016-08-14 16:43:01 +02:00
rr- 3db4f39545 server/tag-categories: correct exception type 2016-08-14 12:31:46 +02:00
rr- 92075bb455 server/tags: don't verify tag names while getting 2016-08-14 12:31:46 +02:00
rr- d6942121e5 server/tags: change tags sort order 2016-08-14 12:31:21 +02:00
rr- 07237bc2bc server/tags: fix changing name case 2016-08-14 11:39:04 +02:00
rr- 7e5deee76b server/tags: fix tag merging 2016-08-14 11:39:04 +02:00
rr- 2b3d193b7c server/tags: don't auto-create tag categories 2016-08-14 11:38:59 +02:00
rr- 8d04df38fd server/general: add entity versions 2016-08-07 09:55:51 +02:00
rr- 9e2dace73f server/posts: improve errors for bad note points 2016-08-05 23:02:34 +02:00
rr- 5092c2c587 server/posts: respect tag creating privilege 2016-08-02 12:44:38 +02:00
rr- a9338f6490 server/general: fix pylint warnings 2016-08-02 12:27:01 +02:00
rr- 2429e95102 server/users: fix cascade deletions 2016-08-02 12:27:01 +02:00
rr- ff189a3915 server/posts: fix deleting post with comments 2016-08-02 12:27:01 +02:00
rr- 92d290b2a4 server/posts: fix removing custom thumbnails 2016-07-31 23:53:23 +02:00
rr- 5e47c5c0c6 server/users: use HTTPS for Gravatar 2016-07-30 13:43:15 +02:00
rr- ef76cdaf8a server/posts: always use null size for bad images 2016-07-30 13:43:15 +02:00
rr- 298aedbc75 server/tags: sort relations like post tags 2016-07-30 13:43:15 +02:00
rr- f40e41ae8b server/tags: allow deleting used tags 2016-07-30 13:43:15 +02:00
rr- 8ef0017531 server/tags: improve tag export performance
2000 ms --> 250 ms (including overhead of unknown size).
Not bad if you ask me.
2016-07-26 23:20:15 +02:00
rr- 3f2717843a server/middleware: log request method 2016-07-26 23:20:15 +02:00
rr- 603420a31d server/middleware: remove unused import 2016-07-17 21:14:56 +02:00
rr- b7f2982c9e server/posts: fix relations bidirectionality 2016-07-17 21:14:03 +02:00
rr- c472229bae server/posts: add relationCount field 2016-07-03 18:30:32 +02:00
rr- c21494be25 server/posts: make relations bidirectional 2016-07-03 18:30:32 +02:00
rr- 48d6fb6b43 server/posts: include thumbnail URLs in relations 2016-07-03 18:30:32 +02:00
rr- 5800f0ebc7 server/tags: fix merging tags
It violated unique constraint on post_tag when a given post was already
tagged with the target tag.
2016-07-03 18:30:32 +02:00
rr- af36c90618 server/general: improve request logging 2016-07-03 18:30:28 +02:00
rr- ac23067fdf server/general: use UTC time stamps 2016-07-03 14:46:28 +02:00
rr- aa0463dafb server/tags: improve creation privilege check 2016-06-23 12:51:44 +02:00
rr- d21b87581d server/general: add show_sql separate from debug 2016-06-23 12:20:05 +02:00
rr- 7eec347bca server/tags: add description field 2016-06-23 00:15:25 +02:00
rr- 2651cbb374 server/users: allow empty avatars if they existed 2016-06-19 19:43:53 +02:00
rr- 4ec826d0a5 server/tags: replace ILIKE expressions
While it makes sense to use ILIKE in search configs to expose side
effects regarding _ and % for power users to use, it certainly didn't
make sense in places changed by this commit. For example, visiting
/tag/___ led to internal server error.
2016-06-18 11:30:32 +02:00
rr- 3c3d0dbb8d server/info: expose a few config variables 2016-06-18 10:55:44 +02:00
rr- 13ca94d4da server/users: fix avatar issues when renaming user 2016-06-17 21:25:28 +02:00
rr- 1019062698 server/users: fix fetching columns 2016-06-16 23:42:36 +02:00
rr- 48cf3b47c0 server/users: don't fetch stats eagerly 2016-06-14 07:50:22 +02:00
rr- d0aaf8fa8f server/posts: optimize default sort order 2016-06-14 07:50:22 +02:00
rr- 36eddad424 server/posts: optimize 'posts around' query 2016-06-14 07:50:22 +02:00
rr- 6b68c77e17 server/posts: add relation-count token 2016-06-13 20:09:15 +02:00
rr- 7a6d25ac43 server/tags: cache default tag category 2016-06-12 22:30:05 +02:00
rr- 162904bfc3 server/info: add serverTime field 2016-06-12 14:26:52 +02:00
rr- 40565e82ae server/posts: change comment-time behavior
Rather than looking at the edit time, now it looks at the creation time.
2016-06-12 14:24:14 +02:00
rr- a67db59d99 server/comments: fix serializing cached scores 2016-06-12 14:01:38 +02:00
rr- e9fb93d5c8 server/general: rename _fields to fields 2016-06-11 22:33:33 +02:00
rr- 8c952c08d0 server/general: report bad field names to user 2016-06-11 17:36:02 +02:00
rr- b13f9dcb68 server/posts: fix comments order 2016-06-11 17:36:02 +02:00
rr- 616854fb1b server/users: let authorized users GET themselves 2016-06-11 17:36:02 +02:00
rr- b5aa3e75c4 server/comments: fix privileges 2016-06-11 17:36:02 +02:00
rr- 5090e3f6c9 server/comments: fix missing score field 2016-06-11 09:29:23 +02:00
rr- dfb2e3d027 server/posts: add getting posts around id
Leave undocumented since it add almost no value for the client
applications.
2016-06-08 22:38:35 +02:00
rr- ded89fee5f server/posts: fix handling bad post ID 2016-06-08 22:38:35 +02:00
rr- 053d1889e0 server/scores: voting for <1 removes favorite 2016-06-08 22:38:35 +02:00
rr- b28f689077 server/posts: add ownFavorite field to posts 2016-06-08 22:38:35 +02:00
rr- 93a5af2097 server/posts: sort by tag category, then by name 2016-06-06 07:46:19 +02:00
rr- f3bb6c28a1 server/general: cosmetic fixes 2016-06-05 10:39:56 +02:00
rr- 508cb6e7ab server/posts: allow anonymous uploads (#90) 2016-06-05 10:30:10 +02:00
rr- caecaee785 server/users: offer more stats in user entity 2016-06-03 21:46:25 +02:00
rr- 805ca845e3 server/users: reduce user fields footprint 2016-06-03 20:14:01 +02:00
rr- 8a5c6f0b31 server/search: fix caching special tokens
special:liked was being reused between users. Now the cache internally
caches object similar to liked:USER.
2016-06-03 19:47:09 +02:00
rr- f0d3589344 server/search: cache by query rather than its text 2016-06-03 19:47:09 +02:00
rr- 59ad5fe402 server/search: refactor, extract parsing 2016-06-03 19:47:09 +02:00
rr- 4428ccfd38 server/images: remove debug blob 2016-06-02 23:42:12 +02:00
rr- 28009bf46d server/general: fix pylint warnings 2016-06-02 23:39:38 +02:00
rr- 7c7adafd82 server/search: improve error messages 2016-06-02 21:15:29 +02:00
rr- a72f6aa585 server/search: fix searching for invalid numbers 2016-06-02 20:56:28 +02:00
rr- 1034362b84 server/search: fix searching by partial range 2016-06-02 20:56:28 +02:00
rr- 802c7feca0 server/search: add safety search for posts 2016-06-02 13:58:08 +02:00
rr- accb5a9187 server/images: fix transaprent background for JPEG 2016-06-02 13:58:08 +02:00
rr- 0743721d06 server/images: seek to 30% video before resizing 2016-06-02 13:58:08 +02:00
rr- 01c74526c7 server/images: work around ffmpeg bug 5609 2016-06-02 13:58:08 +02:00
rr- 446f4d6611 server/search: cache results till non-GET request
250 ms per page --> 30 ms per page (save for the first render). I'd say
it's pretty good
2016-05-31 14:18:50 +02:00
rr- 349f32ccf2 server/search: defer most posts columns 2016-05-30 23:36:58 +02:00
rr- 78612e1da1 server/posts: add new fields 2016-05-30 23:23:22 +02:00
rr- 037fbc61ec server/api: add ability to select fields 2016-05-30 23:08:22 +02:00
rr- 8d1e23aa63 server/general: flatten responses 2016-05-30 22:54:33 +02:00
rr- d0314813cb server/general: move extra details to resources 2016-05-30 22:54:33 +02:00
rr- 48bcbbff83 server/search: improve performance 2016-05-30 20:51:52 +02:00
rr- abef6e5c35 server/info: return who featured the post and when 2016-05-29 12:41:22 +02:00
rr- 4d1f745e38 server/notes: fix note serialization 2016-05-29 12:40:36 +02:00
rr- 731c0442e9 server/search: change named token detection
In particular, treat tokens starting with : as anonymous tokens.
2016-05-24 10:29:14 +02:00
rr- af22ec735d server/posts: send mime type to client 2016-05-22 22:50:00 +02:00
rr- 77998f1660 server/tags: let mods set default category 2016-05-22 22:17:11 +02:00
rr- fa14bf714c server/tags: create snapshots for automatic tags 2016-05-22 22:17:11 +02:00
rr- 6a48020426 server/tags: fix sorting tag siblings 2016-05-22 22:17:11 +02:00
rr- cf3b97b8de server/tags: change response key
Since we're using "results" everywhere else, it makes little sense for
tag siblings to use "siblings" node.
2016-05-22 11:05:18 +02:00
rr- 16d4d3ca68 server/favorites: favoriting sets score to 1 2016-05-21 22:35:18 +02:00
rr- c88dfd228a server/images: replace pipes with temp files
ffmpeg's GIF demuxer needs the input stream to be seekable, which rules
pipes out.
2016-05-20 21:34:02 +02:00
rr- 205f372f76 server/tests: colorize verbose output 2016-05-11 23:47:50 +02:00
rr- 172b956e48 server/search: permit search for tags by alias 2016-05-11 23:47:50 +02:00
rr- 6179f016ae server/search: make searches case insensitive 2016-05-11 23:47:50 +02:00
rr- 82d32ba1fb server/tags: fix removing tags related to others 2016-05-11 23:47:50 +02:00
rr- 4cd5b8c1ac server/tags: fix tag category color validation
This was totally stupid...
2016-05-11 22:09:06 +02:00
rr- a5b2d835d6 server/tags: fix wrong case in merging requests 2016-05-11 18:42:56 +02:00
rr- 59ae0a4c9a server/db: maintain order of tag aliases
First alias has a special meaning in certain contexts, such as post
serialization, where only one alias is chosen to show to the client.
2016-05-11 18:32:53 +02:00
rr- 03498b2d8e server/tags: add tag category color sanitization 2016-05-10 12:18:06 +02:00
rr- 14a20e55f8 server/tests: fix leftover rank strings 2016-05-10 12:15:33 +02:00
rr- ba3678dec1 server/posts: implement FLAG_MAP 2016-05-10 12:15:33 +02:00
rr- 4ec842024c server/users: implement RANK_MAP 2016-05-10 12:15:33 +02:00
rr- cecf620126 server/config: move config validation to app.py 2016-05-10 12:15:33 +02:00
rr- cd15cdff7a server/scores+favorites: merge duplicate code 2016-05-10 12:15:05 +02:00
rr- f140ae6176 server/tests: change test file name 2016-05-10 12:14:54 +02:00
rr- 3481c1072d server/general: fix a few pylint warnings 2016-05-10 12:02:24 +02:00
rr- a668d3ef34 server/tags: output tag category usages 2016-05-09 22:39:04 +02:00
rr- fcbfa90879 serevr/tags: fix search by post count and category 2016-05-09 22:36:29 +02:00
rr- f39e58b1bc server/db: create indexes 2016-05-09 09:43:00 +02:00
rr- 356d5050fd server/tools: add v1.x migration script 2016-05-08 23:26:46 +02:00
rr- 2330cf017d server/db: fix mappings
Post notes had mixed up column types. I fixed that and at the same time,
I took the opportunity to convert everything into Unicode. Also, I've
changed existing migrations rather than creating new ones - it's not
like we're even close to alpha...
2016-05-08 22:18:13 +02:00
rr- 339c9a3333 server/tags: reduce number of queries
On a test page with 50 tags, 158 queries were reduced to 3:

1. Get the authenticated user
2. Get tags for given page
3. Count all tags

Looks just about right.
2016-05-08 20:33:16 +02:00
rr- d813601d92 server/api: log queries in debug mode 2016-05-08 20:33:16 +02:00
rr- 906eddc61f server/users: change avatars to PNG 2016-05-08 18:04:06 +02:00
rr- 2bd02f4921 server/users: fix detecting duplicate user names 2016-05-08 18:04:05 +02:00
rr- 0214341473 server/users: prohibit using special ranks
Anonymous is self explanatory.
Nobody is used solely to mark certain operation as unavailable even to
administrators (<- nobody is higher than administrator).
2016-05-08 18:04:05 +02:00
rr- 198cb0af3e server/users: hardcode available ranks 2016-05-08 16:59:25 +02:00
rr- 58964bcdc9 server/posts: add post listing 2016-05-07 21:50:37 +02:00
rr- 9b591c3f1b server/posts: remember source for URL content 2016-05-05 13:46:57 +02:00
rr- 148858fde9 server/middleware: download files 2016-05-05 13:46:50 +02:00
rr- ab493a01b4 server/net: add basic downloader 2016-05-05 13:24:50 +02:00
rr- e632324f72 server/posts: add post updating 2016-05-02 21:58:13 +02:00
rr- 067e438b8c server/posts: add hasCustomThumbnail to post info 2016-05-02 00:07:33 +02:00
rr- ce095816d9 server/posts: add post creating 2016-05-02 00:07:33 +02:00
rr- a567974784 server/general: refactor method names 2016-04-30 23:54:05 +02:00
rr- f38acf6868 server/func: add content-type related utilities 2016-04-30 17:28:31 +02:00
rr- 4530b6e3b8 server/tests: show SQL queries only with -v 2016-04-30 12:46:52 +02:00
rr- da5b32feeb server/users: fix hiding email from admins etc 2016-04-29 13:16:16 +02:00
rr- c55fb2ef41 server/tags: output tag usage count 2016-04-29 12:58:56 +02:00
rr- 21fd25dd12 server/tags: create tag categories automatically 2016-04-29 12:58:56 +02:00
rr- f59c1e0346 server/tags: create tag categories automatically 2016-04-29 10:33:46 +02:00
rr- 83cc7a568d server/posts: add post (un)favoriting 2016-04-28 19:04:44 +02:00
rr- 0b20132a2f server/api + docs/api: organize responses 2016-04-28 18:20:50 +02:00
rr- 2b69e9b461 server/posts: add post deleting 2016-04-27 19:24:50 +02:00