Commit Graph

560 Commits

Author SHA1 Message Date
Albert Yi
9d4697d5cc Merge pull request #3240 from evazion/fix-3235
Fix #3235: Replacements deleting files currently in use.
2017-07-26 17:10:44 -07:00
evazion
b53371b698 Fix #3235: Replacements deleting files currently in use. 2017-07-24 23:43:38 -05:00
evazion
67528ce5ab Fix hidden attribute leaks in legacy post controller (#3237). 2017-07-24 20:35:12 -05:00
evazion
bda285d97f Post#expunge!: simplify has_children flag logic. 2017-07-21 00:13:20 -05:00
evazion
44f6673d94 Post#expunge!: run callbacks when reparenting children.
* Set parent IDs with `update` instead of `update_column` /
  `update_all` when reparenting children. This fixes it so that new post
  versions are saved and the has_children flag is set on the new parent.

* Slightly simplify logic of update_children_on_destroy: the single
  child case is subsumed by the multi-child case.
2017-07-21 00:13:20 -05:00
evazion
fbee7f6912 Post#expunge!: fix remove_pool! to remove posts from deleted pools.
Don't silently ignore attempts to remove posts from deleted pools.
Remove the restriction on removing posts from deleted pools instead (ref: #1109).

Fixes failure to remove posts from deleted pools during expungement.
2017-07-21 00:13:20 -05:00
evazion
1b310dcc0b Post#expunge!: fix remove_from_all_pools to clear deleted pools.
* Change Post#pools to return all pools, including deleted pools. This
  fixes remove_all_from_pools to remove the post from deleted pools too.

* Change other users of Post#pools to explicitly select undeleted pools.
2017-07-21 00:13:20 -05:00
evazion
bac8ff4de0 Post#expunge!: destroy post replacements on expunge. 2017-07-21 00:13:20 -05:00
evazion
3ed14ae782 Post#expunge!: wrap in transaction. 2017-07-21 00:13:20 -05:00
r888888888
d48ed95191 favoritescontroller#destroy should work even if the post doesn't exist, remove from favorites on expunge (fixes #3222) 2017-07-19 13:39:24 -07:00
r888888888
3a0a032908 remove destroy callback on Post#favorites 2017-07-18 16:32:28 -07:00
evazion
4ead45a787 Remove Post#validate_parent_does_not_have_a_parent method (#3206).
Not used; posts are allowed to have grandparents.
2017-07-14 17:49:12 -05:00
evazion
0390039621 Fix expunging posts from S3 (fixup 4c4ef5c / #3180). 2017-07-01 12:30:59 -05:00
r888888888
4c4ef5cc5b fixes #3180 2017-06-27 15:12:12 -07:00
evazion
c1834ab8dd Inherit models from ApplicationRecord instead of ActiveRecord::Base. 2017-06-16 13:28:31 -05:00
evazion
5c6eb0f475 posts: remove unused update_iqdb method.
Unused since 7aab50f.
2017-06-14 21:31:30 -05:00
evazion
d84feaa4bb posts: fix expunging posts not removing image from iqdb.
`File.exists?(preview_file_path)` is always false because the file has
already been deleted by this point. Remove the check entirely.
2017-06-14 21:31:30 -05:00
evazion
b27f98dc58 posts: fix expunging posts to delete files only after transaction succeeds. 2017-06-14 21:31:30 -05:00
evazion
a844a1daf4 posts: fix expunging posts not deleting files.
Fix expungement to ignore the "file still in use" check.
2017-06-14 21:31:24 -05:00
evazion
27aa9fe82a post replacements: don't delete files still in use.
Bug: if a user replaces a post with another image, then replaces the
post back to the original image, then the deletion job for the original
image will still run. The will delete the original file, but that file
is now in use again and should not be deleted.
2017-06-13 02:20:23 -05:00
Albert Yi
f44f5d1fdb Merge pull request #3126 from evazion/feat-queue-pools
Fix #3125: Show pools in mod queue
2017-06-08 14:13:44 -07:00
evazion
58bd0670b7 Post#pools: avoid query when post has no pools. 2017-06-07 22:45:28 -05:00
evazion
151b276fb9 modqueue: display pools for each post (fix #3125). 2017-06-07 22:45:01 -05:00
evazion
edd02c4019 artstation: normalize to www.artstation.com/artwork/$id for sidebar. 2017-06-07 10:20:18 -05:00
Albert Yi
2e78542a68 Merge pull request #3095 from evazion/fix-3091
Fix #3091: Inconsistency between pool_string and pool.post_ids.
2017-05-30 11:14:46 -07:00
Albert Yi
5b56596de1 Merge pull request #3092 from evazion/opt-reltags
Optimize related tags calculation
2017-05-30 11:12:24 -07:00
evazion
31b58e17b1 pools: lock pool when adding/removing posts (fixes #3091).
Adding a post id to a pool's post_ids string is non-atomic, hence we
must lock the pool to avoid a race condition.

Adding a pool to a post's pool_string is likewise non-atomic, hence we
must lock the post as well.
2017-05-26 18:35:33 -05:00
evazion
a401b1f570 posts: fix nil source tests; fix source:none metatag. 2017-05-26 15:12:39 -05:00
evazion
991d5cbf6d related tags: optimize calculate_from_sample.
calculate_from_sample is called when clicking the General / Artist /
Copyright / Characters buttons during tag editing. Currently it's slow
because it counts up the tags in ruby, and because it makes repeated
calls to memcache in the inner loop when filtering tags by category.

This changes it to do the counting and filtering entirely in SQL using a
GROUP BY tag / COUNT(*) aggregation. This is faster and makes larger
sample sizes more feasible.
2017-05-26 12:41:48 -05:00
evazion
3aa405eac1 Post#favorited_by?: fix to cast to a boolean. 2017-05-23 13:12:10 -05:00
evazion
c5de983f61 Post#favorited_by?: fix to return a boolean. 2017-05-23 11:53:03 -05:00
evazion
565945ab7b flags: move flagging inside Post#delete! 2017-05-17 23:48:37 -05:00
evazion
648cc9ecb7 Move post replacement create action to post replacements controller. 2017-05-14 21:31:01 -05:00
r888888888
78b08d8394 add new model for post replacements, add undo functionality 2017-05-12 17:11:40 -07:00
Albert Yi
dc02dcf0e0 Merge pull request #3015 from evazion/feat-replace-images
Fix #2949: Sample image replacement ability
2017-05-12 17:11:29 -07:00
Albert Yi
f803137106 Merge pull request #3030 from evazion/feat-backups
Backup posts to S3 on creation/replacement
2017-05-08 13:39:41 -07:00
Albert Yi
0018a09f30 Merge pull request #3027 from evazion/feat-flag-cooldown
Add 3 day cooldown between flags
2017-05-08 13:05:38 -07:00
evazion
30a1f204e9 backups: add stub backup service. 2017-05-05 22:18:28 -05:00
evazion
d40da8c5c9 post replacement: leave a system comment after replacement. 2017-05-05 16:10:43 -05:00
evazion
8638b7527b flags: don't set is_flagged twice.
PostFlag#update_post already sets is_flagged when the flag is created.
No need to set it again.
2017-05-04 16:51:49 -05:00
evazion
9f64857719 flags: move status locked check to post_flag.rb. 2017-05-04 16:51:49 -05:00
evazion
038e40ec98 post replacement: increase grace period to 30 days. 2017-05-04 12:30:27 -05:00
evazion
7ade3b6831 Fix #2352: return raw usernames in API instead of pretty names. 2017-05-03 22:16:38 -05:00
evazion
dd920b3ffc post replacement: disallow unhandled cases. 2017-05-02 20:41:18 -05:00
evazion
ca01539c4b post replacement: delete old files after image is replaced. 2017-05-02 20:41:18 -05:00
evazion
e2b988a562 post replacement: add Post#replace! method. 2017-05-02 20:41:18 -05:00
evazion
1baffb31ff Link dA sources as http://$artist.deviantart.com/art/$title-$id in sidebar.
Previously we used 'http://$artist.deviantart.com/gallery/#/d$id'. This
relied on a javascript redirect on Deviantart's end, which didn't work
for people with javascript disabled.
2017-05-01 23:29:16 -05:00
r888888888
48e9856f37 fixes #3007: Eliminate Janitor role 2017-05-01 14:38:30 -07:00
r888888888
621bef3ddf Revert "Merge pull request #2952 from evazion/fix-2950"
This reverts commit ae4509a541197684bfb0538f65afa827854b4335, reversing
changes made to eb008a0e765e231a8fdef594759a61798d6bd1d5.
2017-04-14 12:28:58 -07:00
evazion
c03aa79ece Post#give_favorites_to_parent: wrap in transaction.
Ensure that if anything fails then the entire favorites move will be
rolled back.
2017-04-04 20:44:05 -05:00