-
Notifications
You must be signed in to change notification settings - Fork 149
Override upload file max size in mb #2370
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
base: master
Are you sure you want to change the base?
Override upload file max size in mb #2370
Conversation
Thanks for the pull request, @MuPp3t33r! This repository is currently maintained by Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. Where can I find more information?If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources: When can I expect my changes to be merged?Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
@MuPp3t33r Thanks for your detailed PR description. I've approved the tests to run here and will await @bradenmacdonald 's review. |
@MuPp3t33r I notice there are some commit-lint failures. Please note that we use conventional commits across Open edX projects. You can read about the details here. Can you please amend your commit messages to follow our standard? |
@MuPp3t33r Thanks for the revised version here, and especially for the nice testing instructions! I will try to review this shortly. In the meantime, would you mind addressing these minor lint issues? And as @e0d mentioned, we need the commits to start with |
694830e
to
6b60d91
Compare
@e0d @bradenmacdonald |
I've run them. |
Original configuration had a hard-coded limit of 20MB per file supplied to the platform. This change will retain the existing 20MB limit as default, but provide the admin with the ability to override the value via the MFE_CONFIG API (getConfig) The new function includes validation to check that the override value supplied is in fact a valid and positive integer and reverts to default 20MB in case of validation failure
Originally the constant 'maxFileSize' was hardcoded to 20MB and was not configured to use the pre-existing value defined in constants.js This fix removes the hardcoded value and calls the function getUploadFileMaxSize() to determine the value of maxFileSize
This change allows the TextbookForm to fetch the maximum allowed size via a call to getUploadFileMaxSize() defined in constants. Additionally fixes the conversion factor (maxSize/(1024*1024) vs (1000*1000) for consistency with upstream code
This change allows the ModalDropzone to fetch the maximum allowed size via a call to getUploadFileMaxSize() defined in constants. Additionally fixes the conversion factor (maxSize/(1024*1024) vs (1000*1000) for consistency with upstream code
9105deb
to
02e4da3
Compare
@e0d I'm so sorry to keep wasting your time, my experience (or lack thereof) with github clearly shows. with any luck i've done it right this time... Sincerely appreciate your patience with me :) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great! Just need one fix to get the tests passing again:
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #2370 +/- ##
==========================================
+ Coverage 94.50% 94.55% +0.05%
==========================================
Files 1171 1174 +3
Lines 25149 25372 +223
Branches 5374 5557 +183
==========================================
+ Hits 23766 23991 +225
+ Misses 1320 1312 -8
- Partials 63 69 +6 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
@MuPp3t33r This is almost ready to merge! We just need to add a test to get the coverage check passing. Would you mind adding something like this? I think that would do it. // src/constants.test.ts
import { mergeConfig } from '@edx/frontend-platform';
import { getUploadFileMaxSize } from './constants';
describe('getUploadFileMaxSize()', () => {
it('returns the global default when no config value is set', () => {
expect(getUploadFileMaxSize()).toEqual(20 * 1024 * 1024);
});
it('returns OVERRIDE_UPLOAD_FILE_MAX_SIZE_IN_MB from the config when set', () => {
mergeConfig({ OVERRIDE_UPLOAD_FILE_MAX_SIZE_IN_MB: 7 })
expect(getUploadFileMaxSize()).toEqual(7 * 1024 * 1024);
});
}); |
Thanks @bradenmacdonald!
|
I just realised I should probably also update the README.rst to document the new optional configuration, is this the ideal place to document it or is there also another documentation that this would be relevant for? |
@MuPp3t33r Yes, that would be even better - thanks! As for docs I'm not aware of the MFE config being properly documented anywhere :/ I think adding it to the README makes sense for now. |
documentation of new config option and it's usage
add information about new config option affecting files uploads
add test coverage for new config option
Thanks @bradenmacdonald |
its been brought to my attention that there is actually still an issue with this, so it's not yet ready for merge! |
Hi @bradenmacdonald hoping to just get your thoughts\opinion on this: I see in views.py#L97 there is code to get legacy configs which I'm guessing we could use to import the legacy config But based on what I've seen around other places (and in that same file,) these "will eventually be deprecated" Does this mean that eventually all legacy configs will be deprecated in favour of the MFE configs? for example like the asset_storage_handlers.py code here which if I'm not mistaken is still used in conjunction with the MFE's as well? To clarify: even with the authoring mfe's default I mean I could simply update my patch plugin to modify all the relevant values, but having to patch so many things in so many places doesn't sit right with me for what I'd hope to be a simple config, especially if old stuff will be deprecated anyway. Appreciate your input, still trying to wrap my head around everything to be honest :) |
@MuPp3t33r Configuration in our MFEs is a bit of a mess right now. You're asking good questions, but I don't actually know the answer. @arbrandes or @brian-smith-tcril would one of you mind clarifying these questions about which configuration systems will be used in the future, and where a config value for maximum upload sizes in Studio / Authoring MFE should live? I would assume that we should either (A) specify the config only in edx-platform (where it would be enforced by the API) and pull platform's value into the MFE using (some mechanism - runtime config? studio home data?); or (B) have very simple, separate settings in edx-platform and Authoring MFE and make sure the defaults are in sync. |
For attention to @bradenmacdonald to review if this PR meets requirements.
Description
This update makes the following changes:
constants.js
:FilePage.jsx
:maxFileSize
value and instead import it from constants.jsModalDropzone.jsx
:UPLOAD_FILE_MAX_SIZE
constants that were defined and replaced with a call to the new function inconstants.js
TextbookForm.jsx
:UPLOAD_FILE_MAX_SIZE
constants that were defined and replaced with a call to the new function inconstants.js
Imports from constants now use the updated new format
'@src/constants'
instead of the old'../../constants'
Supporting information
this is an improvement to my previous attempt before i really knew what i was doing, now I only know a little bit of what I'm doing :)
Testing instructions
Note that this must be done in MFE_CONFIG and in the CaddyFile to allow Caddy to process your larger requests
Here is a sample plugin allowing user to provide one input for the value and it applies in both locations
tutor plugins enable override_max_asset_upload_size
tutor local stop && tutor local start -d
Now, under the following menus:
You will find that you can upload files up to whatever maximum defined in the
override_max_asset_upload_size
plugin