Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Portable ZIP Export Format #5260

Merged
merged 41 commits into from
Dec 1, 2024
Merged

Portable ZIP Export Format #5260

merged 41 commits into from
Dec 1, 2024

Conversation

ssddanbrown
Copy link
Member

@ssddanbrown ssddanbrown commented Oct 13, 2024

Todo

  • Finish up format document
    • Add consideration in regard to HTML content (security in usage [csp] and featureset compatibility).
  • ZIP Build Logic
    • Testing
  • Export UI additions
  • Export Endpoints
    • Testing
  • Import role permission
    • Test view/route access control (ensure permission required)
  • Import UI
    • Disable button and show loading on import
  • Import Validator Logic
    • Validate no duplicate ids across types.
    • Display of validation results
    • Extract text to translations
  • Import logic
    • Test file handling & DB roll-back on import error.
    • Image extension handling
    • Test main import handling logic
  • Bring text into translations
  • Other testing
    • Test whole process with external (s3) storage
    • Deep test of cross content references.
  • New activities?
  • Replace id_ciphertext property with newly generated internal ID (setting stored via migration?).
    • The id_ciphertext solution should be fine but better to be completely safe and not risk things, in the event there's some configuration or nuance that could affect things here.

Notes

Originally planned to add API endpoints as part of this, but think it's better to delay in case further changes/development need to be made.

Doc Updates

  • Requirements change - ZIP extension now required.
  • Probably worth a documentation page to cover details. Refer to format docs for advanced users.

@ssddanbrown ssddanbrown added this to the Next Feature Release milestone Oct 13, 2024
@ssddanbrown ssddanbrown self-assigned this Oct 13, 2024
Also updated new route/view to new non-book-specific flow.
Also fixed down migration of old export permissions migration.
Added syles for non-custom, non-image file inputs.
Started planning out back-end handling.
Testing covers main UI access, and main non-successfull import actions.
Started planning stored import model.
Extracted some text to language files.
Split attachment service storage work out so it can be shared.
Reduced import data will now be stored on the import itself, instead of
storing a set of totals.
Added file creation reverting and DB rollback on error.
Added error display on failed import.
Extracted likely shown import form/error text to translation files.
Fixed image size handling, and lack of attachment reference replacements
during testing.
Images were missing their extension after import since it was
(potentially) not part of the import data.
This adds validation via mime sniffing (to match normal image upload
checks) and also uses the same logic to sniff out a correct extension.

Added tests to cover.
Also fixed some existing tests around zip functionality.
And disable button after submit.
Added here because the import could take some time, so it's best to show
an indicator to the user to show that something is happening, and help
prevent duplicate submission or re-submit attempts.
- Handled links to within-zip page images found in chapter/book
  descriptions; Added test to cover.
- Fixed session showing unrelated success on failed import.

Tested import file-create undo on failure as part of this testing.
- Updated test handling to create imports folder when required.
- Updated some tests to delete created import zip files.
Adds an instance id via app settings.
@ssddanbrown ssddanbrown merged commit fdbbcf2 into development Dec 1, 2024
13 of 19 checks passed
@ssddanbrown ssddanbrown deleted the portazips branch December 1, 2024 13:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

1 participant