Add the ability to verify/unverify questions (#17030)
* rmv old bucm icons and remove verified fill color * add moderation action section to sidebar * add moderation review icon to the saved question header button * hide moderation section when is not a moderator * add UI for ModerationReviewBanner * Backend for moderation-review - create table moderation_review. Same as before but also has a "most_recent" boolean flag for the most recent moderation for easy lookup - POST /moderation-review/ . Status can be "verified" or nil - must be an admin to post - No PUT or edit route yet. Not sure if this is even necessary. _MAYBE_ to edit the text, but certainly not for the status, ids, etc. If there's to be history, let's build some history - Ensure we never have more than 10 reviews. Adding a new review will delete the older ones, mark all old ones as not `most_recent`, and add the newest one as `most_recent true` - Ensure the card actually exists before creating the mod review - Since admin only at this time, don't need to check moderate permission or view permission - When hydrating ensure reviews are ordered by id desc. Should mimic the created_at desc * fix moderation review banner tooltip offset * disable verification button when already verified * rmv iconOnly prop because it seems to do nothing * update getLatestModerationReview to rely on most_recent boolean * Return 400 on invalid status to post /moderation-review the schema was using keywords on the left hand side rather than the symbols. Required a change to the docstring generator, when it made a docstring for enums, it would call (sort (:vs enum)) and need to string em. * Add ModerationReview model to models.clj and copy infra * hydrate moderation reviews on cards * clean up + wire up to BE + ensure mod buttons don't show for normal users * rmv unused moderation redux logic from QuestionDetailsSidebarPanel * finish writing unit tests for FE * ensure getIconForReview returns an object * enable/disable verify button tooltip when unverified/verified * add e2e tests * fix tests * styling tweaks * more styling on moderationReviewBanner * add function for abbreviated timestamp * increase fontsize of timestamp back to 12 * fix tooltip offset * ensure custom locale is separate from 'en' and not used for other languages * Deletion moderation reviews when deleting cards i had actually thought this was a much larger problem. But it turns out we almost never delete cards (thanks comment!). And so we won't really generate a lot of garbage. I was worried that since we aren't using actual foreign keys but just `moderated_item_type "card"` and `moderated_item_id 2` we would have deleted cards with these moderation reviews but that is not the case as the cards aren't deleted. * hide verify disabled button when a question is verified * update test to use queryByTestId * Hydrate moderation reviews on cards on ordered cards * Handle mysql's lack of offset functionality mysql cannot handle just a `offset` clause, it also needs a limit clause grammar from https://dev.mysql.com/doc/refman/8.0/en/select.html: [LIMIT {[offset,] row_count | row_count OFFSET offset}] select id, name from metabase_field offset 5; -- errors select id, name from metabase_field limit 2 offset 5; -- works Since our numbers are so small here there is no worry and just do the offset in memory rather than jump through hoops for different dbs. * Batch hydrate moderation reviews * Don't let /api/user/:userId failure conceal moderation banner * fix moderation cy tests * work around possible bug in toucan hydration dashboards hydrate ordered cards (hydrate [:ordered_cards [:card :moderation_reviews] :series]) Ordered_cards are dashboard_cards which have an optional card_id. But toucan hydration doesn't filter out the nils as they go down. It seems toucan returns a nil card, and then when hydrating the moderation_review, passes the collection of all "cards" including the nil ones into the hydration function for moderation_reviews This feels like a bug to me * Cleanup moderation warnings * Docstring in moderation review * include hoisted moderated_status on cards in collections api * Expect unverified in testCo-authored-by: dan sutton <dan@dpsutton.com> Co-authored-by:
Maz Ameli <maz@metabase.com> Co-authored-by:
alxnddr <alxnddr@gmail.com>
Showing
- enterprise/frontend/src/metabase-enterprise/moderation/actions.js 31 additions, 0 deletions...se/frontend/src/metabase-enterprise/moderation/actions.js
- enterprise/frontend/src/metabase-enterprise/moderation/components/ModerationActions/ModerationActions.jsx 35 additions, 0 deletions...ration/components/ModerationActions/ModerationActions.jsx
- enterprise/frontend/src/metabase-enterprise/moderation/components/ModerationActions/ModerationActions.styled.jsx 35 additions, 0 deletions...components/ModerationActions/ModerationActions.styled.jsx
- enterprise/frontend/src/metabase-enterprise/moderation/components/ModerationActions/ModerationActions.unit.spec.js 28 additions, 0 deletions...mponents/ModerationActions/ModerationActions.unit.spec.js
- enterprise/frontend/src/metabase-enterprise/moderation/components/ModerationReviewBanner/ModerationReviewBanner.jsx 98 additions, 0 deletions...ponents/ModerationReviewBanner/ModerationReviewBanner.jsx
- enterprise/frontend/src/metabase-enterprise/moderation/components/ModerationReviewBanner/ModerationReviewBanner.styled.jsx 40 additions, 0 deletions.../ModerationReviewBanner/ModerationReviewBanner.styled.jsx
- enterprise/frontend/src/metabase-enterprise/moderation/components/ModerationReviewBanner/ModerationReviewBanner.unit.spec.js 104 additions, 0 deletions...oderationReviewBanner/ModerationReviewBanner.unit.spec.js
- enterprise/frontend/src/metabase-enterprise/moderation/components/QuestionModerationSection/QuestionModerationSection.jsx 69 additions, 0 deletions...s/QuestionModerationSection/QuestionModerationSection.jsx
- enterprise/frontend/src/metabase-enterprise/moderation/components/QuestionModerationSection/QuestionModerationSection.styled.jsx 8 additions, 0 deletions...ionModerationSection/QuestionModerationSection.styled.jsx
- enterprise/frontend/src/metabase-enterprise/moderation/constants.js 7 additions, 0 deletions.../frontend/src/metabase-enterprise/moderation/constants.js
- enterprise/frontend/src/metabase-enterprise/moderation/index.js 9 additions, 0 deletions...rise/frontend/src/metabase-enterprise/moderation/index.js
- enterprise/frontend/src/metabase-enterprise/moderation/selectors.js 5 additions, 0 deletions.../frontend/src/metabase-enterprise/moderation/selectors.js
- enterprise/frontend/src/metabase-enterprise/moderation/service.js 87 additions, 0 deletions...se/frontend/src/metabase-enterprise/moderation/service.js
- enterprise/frontend/src/metabase-enterprise/moderation/service.unit.spec.js 196 additions, 0 deletions...d/src/metabase-enterprise/moderation/service.unit.spec.js
- enterprise/frontend/src/metabase-enterprise/plugins.js 1 addition, 0 deletionsenterprise/frontend/src/metabase-enterprise/plugins.js
- frontend/src/metabase-lib/lib/Question.js 5 additions, 1 deletionfrontend/src/metabase-lib/lib/Question.js
- frontend/src/metabase/icon_paths.js 1 addition, 9 deletionsfrontend/src/metabase/icon_paths.js
- frontend/src/metabase/lib/time.js 44 additions, 0 deletionsfrontend/src/metabase/lib/time.js
- frontend/src/metabase/plugins/index.js 7 additions, 0 deletionsfrontend/src/metabase/plugins/index.js
- frontend/src/metabase/query_builder/components/SavedQuestionHeaderButton/SavedQuestionHeaderButton.jsx 10 additions, 0 deletions...s/SavedQuestionHeaderButton/SavedQuestionHeaderButton.jsx
Please register or sign in to comment