Extensions Website - Backend Road to Beta #70

Closed
opened 2024-04-08 11:50:51 +02:00 by Dalai Felinto · 1 comment

Sorted back-end tasks

Manifest permissions change

  • Permissions + explanations #166

Site features

  • update API response structure #71

    • version: Implement API version.
    • blocklist: Blocklist - need a new status for this.
    • data: Nest list of extensions dict under "data" with id as a prop.
    • Update docs.
    • Align with Campbell before deploying.
  • Notifications #72

    • Email
      • For moderators:
        • When a new extension is sent to approval queue.
        • When a review is reported.
        • When an extension is reported.
      • For owner of an extension:
        • When any activity happens on approval queue of your extension.
        • When any review happens on your extension.
      • For everyone:
        • When any activity happens after you interacted with the approval queue of an extension.?
    • Feed (similar to Blender Studio).
    • Profile setting to filter email notifications.
  • Media

    • Featured Image
      • Write guidelines
        • Aspect ratio (16:9)
        • Size (min 1080p)
        • Text (avoid small text, avoid low contrast)
        • No Blender (or Blender community) logos
        • No banners/badges (like "new!")
        • Avoid graphic content (nudity, violence)
        • It never shows in the gallery.
    • Introduce Thumbnails for files #51
    • Do not allow GIF previews #57
    • Extension Previews: Allow videos (native or yt embed?)
    • Extension Detail: Allow YouTube embed {youtube id}
    • Icon
  • Blender versions:

    • Filter version based on blender_version query argument: Get the latest extension compatible with that version. (right now we only check the latest to see if it is on the range, but don't check the previous ones to find a valid one).
  • Support deleting extensions #66

  • [ ] Blocklist for slugs not implementing this

    • test-extension
    • Any previously deleted extension
  • Suggest Maximum Version (#97)

    • Anyone can suggest this, owners or moderators can "approve". see #97 for updated solution
    • Owner also can set it directly on the version edit page.
  • Sentry

    • 'TemplateDoesNotExist' 403.
    • 'Cannot record change "%s" to %s: user pk=%s does not exist' (Note: this also happens when we generate fake data).
    • ImproperlyConfigured /approval-queue/{slug}/comment reported in 500 Server Error When Commenting #65
  • Approval Queue (#89)

    • Sort by status (Awaiting Review, Awaiting Changes, Incomplete, Approved).
    • Don't show status on the images.
    • Create activity for image and description changes.
    • [ ] Need extension.complete_state to use on templates.
    • [ ] Option: Unify status of extension and approval activity. something similar might come up later as an optimization for rendering approval queue, otherwise it's not needed/not properly defined
    • Option to hide virus versions
  • Abuse Reports

    • Add "Resolved" and "Dismiss" status.
    • Should add a note when setting to resolved or when archiving.
    • When reporting a review, there is no need for "Versions" (aka Releases).
  • Dev: Generate Fake Data is missing details #50

  • Ratings:

  • Multi-OS #74

  • Draft

API

  • [ ] api_version_max: Parameter set by Blender to educate the server on which API it could send back.
    • The server internally redirects the URL to the correct entry point. not doing this
  • Make the API OpenAPI compatible again (possibly dropping drf_spectacular).

Validator

  • Surface the errors from the .zip extraction code (read_manifest_from_zip).
  • Check for __init__.py when the .zip contains a folder.
  • Allow only a single theme (.xml) per .zip (see faulty file).

Front-end:

  • Support html for manifest errors.
Sorted back-end tasks ## Manifest permissions change * [x] Permissions + explanations #166 ## Site features * [x] update API response structure #71 * [ ] `version`: Implement API version. * [x] `blocklist`: Blocklist - need a new status for this. * [x] `data`: Nest list of extensions dict under "data" with id as a prop. * [ ] Update docs. * [x] Align with Campbell before deploying. * Notifications #72 * [x] Email * [x] For moderators: * [x] When a new extension is sent to approval queue. * [x] When a review is reported. * [x] When an extension is reported. * [x] For owner of an extension: * [x] When any activity happens on approval queue of your extension. * [x] When any review happens on your extension. * [x] For everyone: * [x] When any activity happens after you interacted with the approval queue of an extension.? * [x] Feed (similar to [Blender Studio](https://studio.blender.org/notifications/)). * [x] Profile setting to filter email notifications. * Media * [x] Featured Image * Write guidelines * Aspect ratio (16:9) * Size (min 1080p) * Text (avoid small text, avoid low contrast) * No Blender (or Blender community) logos * No banners/badges (like "new!") * Avoid graphic content (nudity, violence) * It never shows in the gallery. * [x] [Introduce Thumbnails for files #51](https://projects.blender.org/infrastructure/extensions-website/issues/51) * [x] [Do not allow GIF previews #57](https://projects.blender.org/infrastructure/extensions-website/issues/57) * [x] Extension Previews: Allow videos (native or yt embed?) * [ ] Extension Detail: Allow YouTube embed {youtube id} * [x] Icon * Blender versions: * [x] Filter version based on blender_version query argument: Get the latest extension compatible with that version. (right now we only check the latest to see if it is on the range, but don't check the previous ones to find a valid one). * [x] [Support deleting extensions #66](https://projects.blender.org/infrastructure/extensions-website/issues/66) * ~~[ ] Blocklist for slugs~~ not implementing this * test-extension * Any previously deleted extension * [x] Suggest Maximum Version (#97) * [x] Anyone can suggest this, ~~owners or moderators can "approve".~~ see #97 for updated solution * [x] Owner also can set it directly on the version edit page. * Sentry * [x] 'TemplateDoesNotExist' 403. * [x] 'Cannot record change "%s" to %s: user pk=%s does not exist' (Note: this also happens when we generate fake data). * [x] `ImproperlyConfigured /approval-queue/{slug}/comment` reported in [500 Server Error When Commenting #65](https://projects.blender.org/infrastructure/extensions-website/issues/65) * Approval Queue (#89) * [x] Sort by status (Awaiting Review, Awaiting Changes, Incomplete, Approved). * [x] Don't show status on the images. * [x] Create activity for image and description changes. * ~~[ ] Need `extension.complete_state` to use on templates.~~ * ~~[ ] Option: Unify status of extension and approval activity.~~ something similar might come up later as an optimization for rendering approval queue, otherwise it's not needed/not properly defined * [ ] Option to hide virus versions * Abuse Reports * [x] Add "Resolved" and "Dismiss" status. * [x] Should add a note when setting to resolved or when archiving. * [x] When reporting a review, there is no need for "Versions" (aka Releases). * [ ] [Dev: Generate Fake Data is missing details #50](https://projects.blender.org/infrastructure/extensions-website/issues/50) * [x] Ratings: * [x] [Implement replies #64](https://projects.blender.org/infrastructure/extensions-website/issues/64) * [x] If more than one version, force users to pick a version. * [x] [Multi-OS #74](https://projects.blender.org/infrastructure/extensions-website/issues/74) * Draft * [x] Incomplete status should be called "Draft" * [x] [Convert to Draft #98](https://projects.blender.org/infrastructure/extensions-website/issues/98) * [x] [Change draft redirect behaviour #99](https://projects.blender.org/infrastructure/extensions-website/issues/99) ## API * ~~[ ] `api_version_max`: Parameter set by Blender to educate the server on which API it could send back.~~ * ~~The server internally redirects the URL to the correct entry point.~~ not doing this * [ ] Make the API OpenAPI compatible again (possibly dropping drf_spectacular). ## Validator * [x] Surface the errors from the .zip extraction code (read_manifest_from_zip). * [x] Check for `__init__.py` when the .zip contains a folder. * [x] Allow only a single theme (.xml) per .zip (see [faulty file](https://extensions.blender.org/themes/gruvbox/)). **Front-end**: * [x] Support html for manifest errors.
Owner

I am closing this issue, since almost all actionable tasks listed here were implemented.
What hasn't been crossed off:

  • #50 has its own ticket, and it does make sense to complete it
  • youtube embed was discussed briefly, it's already possible to hotlink a title image with a link as a poor workaround
    • the fact that we don't allow to upload images and push towards hotlinking is bad, we should decide what to do about it
    • embedding youtube code will also add google tracking for all visitors, which is something that we may not want to
  • "option to hide virus extensions" is not well defined at this point - admins disable an extension, that may be what's needed in such situations. we may need to review moderation flow as a whole, once we get more feedback from the moderators using the system
I am closing this issue, since almost all actionable tasks listed here were implemented. What hasn't been crossed off: - #50 has its own ticket, and it does make sense to complete it - youtube embed was discussed briefly, it's already possible to hotlink a title image with a link as a poor workaround - the fact that we don't allow to upload images and push towards hotlinking is bad, we should decide what to do about it - embedding youtube code will also add google tracking for all visitors, which is something that we may not want to - "option to hide virus extensions" is not well defined at this point - admins disable an extension, that may be what's needed in such situations. we may need to review moderation flow as a whole, once we get more feedback from the moderators using the system
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: infrastructure/extensions-website#70
No description provided.