bla
This commit is contained in:
parent
edf14400ac
commit
3600c8b28d
|
|
@ -0,0 +1,73 @@
|
|||
# Files handling
|
||||
|
||||
This document describes how files are handled in this appication.
|
||||
|
||||
# Types of files
|
||||
|
||||
static files: files that are not changed by the application, e.g. images, fonts, etc.¨
|
||||
|
||||
### content documents:
|
||||
|
||||
Files that belong to the content and are managed by the content editors in the CMS (pdf, excel, word, etc.)
|
||||
|
||||
### user documents:
|
||||
|
||||
Files that are uploaded by the users (pdf, etc.). Therefore not visible in the CMS.
|
||||
Images are handled seprately from documents since images require additional processing (resizing, cropping, etc.).
|
||||
Visible in the django admin.
|
||||
|
||||
### content images:
|
||||
|
||||
Images that belong to the content and are managed by the content editors in the CMS.
|
||||
|
||||
### user images:
|
||||
|
||||
Images that are uploaded by the users. Therefore not visible in the CMS. Visible in the django admin.
|
||||
|
||||
## Static files
|
||||
|
||||
These files are publicly served on S3.
|
||||
|
||||
## Content documents
|
||||
|
||||
These files are part of the content. Such as a pdf thas cointains additional information to a course.
|
||||
These files are not publicly available. The content files are uploaded by the editors in the wagtail cms.
|
||||
|
||||
https://www.hacksoft.io/blog/direct-to-s3-file-upload-with-django
|
||||
|
||||
Django handles the permissions to these files. Via a view django checks if the user has permissions to access the file,
|
||||
and gerates a temporary url that is valid for a limited time. Still the documents are served by django. This done for
|
||||
usability reasons. The user sees the url mydomain.com/media/documents/<document-id> and not a url to S3. Therefore the
|
||||
user can share the url with other users. (still they need to login and have the permissions to access the file)
|
||||
|
||||
The downside of this is that the django server processes these files. (could be circumvented by django-sendfile).
|
||||
|
||||

|
||||
|
||||
- These Files are handled stored as wagtail documents. As a model and the file itself is stored in S3.
|
||||
|
||||
### Frontend access to content documents
|
||||
|
||||
For the frontend django generates a fixed url per file /media/documents/<document-id>
|
||||
|
||||
When the frontend requests this file, django checks if the user has permissions to access the file.
|
||||
If so, django generates a temporary url that is valid for a limited time. Then sends a redirect to the frontend.
|
||||
|
||||
In this waz the frontend does not need to know about the permissions. Content grapql can be cached if needed and urls
|
||||
can be shared by the users.
|
||||
|
||||
content_documents
|
||||
user_documents
|
||||
|
||||
public files
|
||||
|
||||
## User documents
|
||||
|
||||
- User uploaded files are stored in S3. but the permissions is handled by django. Same process as content files.
|
||||
|
||||
Same process as content files. But the url is /media/user-uploads/<file-id>
|
||||
And the files are not managed by Wagtail. Due to another model, they are not visible to the user in the CMS.
|
||||
|
||||
## Content images
|
||||
|
||||
Content Images are served directly from S3. The permissions are handled by dja
|
||||
|
|
@ -4,10 +4,10 @@ export DATABASE_URL=postgres://skillbox:skillbox@localhost:5432/skillbox
|
|||
export DEBUG=True
|
||||
export ENABLE_SILKY=False
|
||||
export SECRET_KEY=FOOBAR
|
||||
export USE_AWS=False
|
||||
export USE_AWS=True
|
||||
export WAGTAILADMIN_BASE_URL=/
|
||||
export ALLOW_BETA_LOGIN=True
|
||||
export USE_404_FALLBACK_IMAGE=True
|
||||
|
||||
export AWS_STORAGE_BUCKET_NAME=skillbox-files-preprod
|
||||
export AWS_REGION=eu-central-1
|
||||
#export THEME=my-kv
|
||||
#export APP_FLAVOR=my-kv
|
||||
|
|
|
|||
Loading…
Reference in New Issue