Fix some comments
This commit is contained in:
parent
61bf30c3b8
commit
d6445bb95c
|
|
@ -20,54 +20,10 @@ Visible in the django admin.
|
||||||
|
|
||||||
Images that belong to the content and are managed by the content editors in the CMS.
|
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 documents
|
||||||
|
|
||||||
- User uploaded files are stored in S3. but the permissions is handled by django. Same process as content files.
|
User documents and images hare handled by uploadcare. In the database we oly have the url.
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
Content Images are served directly from S3. The permissions are handled by dja
|
Content Images are served directly from S3. The permissions are handled by django. Request to django are checked and redirected to the S3 bucket.
|
||||||
|
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
#!/bin/bash
|
|
||||||
export SECRET_KEY=abcd1234
|
|
||||||
export DATABASE_HOST=localhost
|
|
||||||
export DATABASE_USER=postgres
|
|
||||||
export PGPASSWORD=postgres
|
|
||||||
export DATABASE_NAME=skillbox_test_cypress
|
|
||||||
export DATABASE_PORT=5432
|
|
||||||
export DATABASE_URL=postgres://$DATABASE_USER:$PGPASSWORD@$DATABASE_HOST:$DATABASE_PORT/$DATABASE_NAME
|
|
||||||
export DEBUG=True
|
|
||||||
export USE_AWS=False
|
|
||||||
export SERVE_VIA_WEBPACK=False
|
|
||||||
export OAUTH_CLIENT_ID=1111111-222222-333-3444444
|
|
||||||
export OAUTH_CLIENT_SECRET=Abcd1234!
|
|
||||||
export OAUTH_ACCESS_TOKEN_URL=https://hepverlag-cms.grape.novu.ch/oauth/token
|
|
||||||
export OAUTH_AUTHORIZE_URL=https://hepverlag-cms.grape.novu.ch/oauth/authorize
|
|
||||||
export OAUTH_API_BASE_URL=https://hepverlag-cms.grape.novu.ch/
|
|
||||||
export OAUTH_LOCAL_REDIRECT_URI=http://localhost:8000/api/oauth/callback/
|
|
||||||
export NODE_OPTIONS=--max_old_space_size=3072
|
|
||||||
|
|
||||||
export DATABASE_HOST=localhost
|
|
||||||
export DATABASE_PORT=5432
|
|
||||||
export DATABASE_URL=postgres://$DATABASE_USER:$PG_PASSWORD@$DATABASE_HOST:$DATABASE_PORT/$DATABASE_NAME
|
|
||||||
psql -U $DATABASE_USER -h $DATABASE_HOST -c "drop database $DATABASE_NAME"
|
|
||||||
|
|
||||||
#npm install --prefix client
|
|
||||||
#npm run "install:cypress" --prefix client
|
|
||||||
psql -U $DATABASE_USER -h $DATABASE_HOST -c "create database $DATABASE_NAME"
|
|
||||||
python server/manage.py dummy_data
|
|
||||||
python server/manage.py runserver &
|
|
||||||
npm run dev --prefix client &
|
|
||||||
cd client
|
|
||||||
/node_modules/.bin/cypress run
|
|
||||||
|
|
@ -1,14 +1,13 @@
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.urls import path, re_path, include
|
|
||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
|
from django.urls import path, re_path, include
|
||||||
from django.views.generic import RedirectView
|
from django.views.generic import RedirectView
|
||||||
from wagtail.admin import urls as wagtailadmin_urls
|
|
||||||
from wagtail import urls as wagtail_urls
|
from wagtail import urls as wagtail_urls
|
||||||
|
from wagtail.admin import urls as wagtailadmin_urls
|
||||||
from wagtail.documents import urls as wagtaildocs_urls
|
from wagtail.documents import urls as wagtaildocs_urls
|
||||||
from wagtail.images.views.serve import ServeView
|
from wagtail.images.views.serve import ServeView
|
||||||
|
|
||||||
from wagtailautocomplete.urls.admin import urlpatterns as autocomplete_admin_urls
|
from wagtailautocomplete.urls.admin import urlpatterns as autocomplete_admin_urls
|
||||||
|
|
||||||
from core import views
|
from core import views
|
||||||
|
|
@ -19,14 +18,14 @@ urlpatterns = [
|
||||||
re_path(r"^guru/", admin.site.urls),
|
re_path(r"^guru/", admin.site.urls),
|
||||||
re_path(r"^statistics/", include("statistics.urls", namespace="statistics")),
|
re_path(r"^statistics/", include("statistics.urls", namespace="statistics")),
|
||||||
# wagtail
|
# wagtail
|
||||||
re_path(r'^api/images/([^/]*)/(\d*)/([^/]*)/[^/]*$', login_required(ServeView.as_view(action='redirect')), name='wagtailimages_serve'),
|
re_path(r'^api/images/([^/]*)/(\d*)/([^/]*)/[^/]*$', login_required(ServeView.as_view(action='redirect')),
|
||||||
|
name='wagtailimages_serve'),
|
||||||
|
|
||||||
re_path(r"^cms/autocomplete/", include(autocomplete_admin_urls)),
|
re_path(r"^cms/autocomplete/", include(autocomplete_admin_urls)),
|
||||||
re_path(r"^cms/pages/(\d+)/$", override_wagtailadmin_explore_default_ordering),
|
re_path(r"^cms/pages/(\d+)/$", override_wagtailadmin_explore_default_ordering),
|
||||||
re_path(r"^cms/", include(wagtailadmin_urls)),
|
re_path(r"^cms/", include(wagtailadmin_urls)),
|
||||||
re_path(r"^documents/", include(wagtaildocs_urls)),
|
re_path(r"^documents/", include(wagtaildocs_urls)),
|
||||||
|
|
||||||
|
|
||||||
# graphql backend
|
# graphql backend
|
||||||
re_path(r"^api/", include("api.urls", namespace="api")),
|
re_path(r"^api/", include("api.urls", namespace="api")),
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue