Skip to content
Snippets Groups Projects
  • Dalton's avatar
    b7fa2f34
    Add the ability to verify/unverify questions (#17030) · b7fa2f34
    Dalton authored
    * 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 test :wrench:
    
    
    
    Co-authored-by: default avatardan sutton <dan@dpsutton.com>
    Co-authored-by: default avatarMaz Ameli <maz@metabase.com>
    Co-authored-by: default avataralxnddr <alxnddr@gmail.com>
    b7fa2f34
    History
    Add the ability to verify/unverify questions (#17030)
    Dalton authored
    * 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 test :wrench:
    
    
    
    Co-authored-by: default avatardan sutton <dan@dpsutton.com>
    Co-authored-by: default avatarMaz Ameli <maz@metabase.com>
    Co-authored-by: default avataralxnddr <alxnddr@gmail.com>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
service.js 2.13 KiB