Change all kudos displays to use users instead of pseuds

Description

Change all kudos displays to use users instead of pseuds. A non-exhaustive list:

  • Remove has_many :kudos on Pseud.

  • Change has_many :kudos, through: :pseuds to just has_many :kudos on User.

  • Update the list of kudos on a work, either the JS-loaded fragment or the full page, to use user names. Expire the existing cached fragments.

  • Update the kudos mailer to use user names. Since kudos emails don't link to the kudos givers (yet, ), it should be fine if we have a mix of pseuds and users in RedisMailQueue during the transition.

  • Update all the specs and cukes in the world.

Remove code that edits pseuds on kudos, since we're removing the Rails association between them. However, we will keep saving default pseud IDs on kudos (and removing them when users are deleted) to make this change safe to revert. We will remove the remaining code before dropping the pseud ID column on kudos.

How to test:

  • Check https://test.archiveofourown.org/works/603186: this work has kudos where the pseud is not the user's default pseud: "test2 (zz9pzza), Hy-phen (sarken)". Once this change is deployed, you should see "zz9pzza, sarken".

  • Leave logged in kudos.

    • Check that the kudos displays your username.

    • Check that the new kudos shows up first in the list of kudos under a work (this list should be sorted most recent).

    • Check that the work's creator receives a kudos notification email showing your username.

  • Check that you cannot leave kudos on your own work.

  • Open your work in a private window (browse as guest). In another window where you're logged in, make the work restricted. In the private window, check that leaving guest kudos shows "You can't leave guest kudos on a restricted work."

Environment

None

Assignee

redsummernight

Reporter

redsummernight

Roadmap

Misc

Priority

Medium

Affects versions

Fix versions

Components

BackEnd

Difficulty

Medium

Required Access Level

None

Milestone

Internal 0.9
Configure