From dea6a0217b5b8755504de48195a9d8ecde46dd4f Mon Sep 17 00:00:00 2001 From: fanfounet Date: Wed, 12 Jun 2024 10:39:26 +0200 Subject: [PATCH] [DONE] Fanfounet/webtv mode (#1129) * add webtv mode * Fix after comments PR --------- Co-authored-by: Charneau Franck --- CONFIGURATION_EN.md | 1160 ++++++++++++++++++++++++++++++++ CONFIGURATION_FR.md | 3 + pod/main/configuration.json | 13 + pod/main/context_processors.py | 3 + pod/main/templates/navbar.html | 18 +- pod/main/tests/test_views.py | 10 + 6 files changed, 1199 insertions(+), 8 deletions(-) create mode 100644 CONFIGURATION_EN.md diff --git a/CONFIGURATION_EN.md b/CONFIGURATION_EN.md new file mode 100644 index 0000000000..c6482866aa --- /dev/null +++ b/CONFIGURATION_EN.md @@ -0,0 +1,1160 @@ +# + +## + +* `CAS` + > default value: `1.5.2` +* `ModelTranslation` + > default value: `0.18.7` +* `captcha` + > default value: `0.5.17` +* `chunked_upload` + > default value: `2.0.0` +* `ckeditor` + > default value: `6.3.0` +* `django_select2` + > default value: `latest` +* `honeypot` + > default value: `1.0.3` +* `mozilla_django_oidc` + > default value: `3.0.0` +* `pwa` + > default value: `1.1.0` +* `rest_framework` + > default value: `3.14.0` +* `shibboleth` + > default value: `latest` +* `sorl.thumbnail` + > default value: `12.9.0` +* `tagging` + > default value: `0.5.0` + +## + +### Database + +* `DATABASES` + > default value: + + ```python + { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + } + } + ``` + + >> + +### Email + +* `CONTACT_US_EMAIL` + > default value: `` + >> +* `CUSTOM_CONTACT_US` + > default value: `False` + >> +* `DEFAULT_FROM_EMAIL` + > default value: `noreply` + >> +* `EMAIL_HOST` + > default value: `smtp.univ.fr` + >> +* `EMAIL_PORT` + > default value: `25` + >> +* `EMAIL_SUBJECT_PREFIX` + > default value: `` + >> +* `SERVER_EMAIL` + > default value: `noreply` + >> +* `SUBJECT_CHOICES` + > default value: `()` + >> +* `SUPPORT_EMAIL` + > default value: `None` + >> +* `USER_CONTACT_EMAIL_CASE` + > default value: `` + >> +* `USE_ESTABLISHMENT_FIELD` + > default value: `False` + >> + +### Encoding + +* `FFMPEG_AUDIO_BITRATE` + > default value: `192k` + >> +* `FFMPEG_CMD` + > default value: `ffmpeg` + >> +* `FFMPEG_CREATE_THUMBNAIL` + > default value: `-vf "fps=1/(%(duration)s/%(nb_thumbnail)s)" -vsync vfr "%(output)s_%%04d.png"` + >> +* `FFMPEG_CRF` + > default value: `20` + >> +* `FFMPEG_EXTRACT_SUBTITLE` + > default value: `-map 0:%(index)s -f webvtt -y "%(output)s"` + >> +* `FFMPEG_EXTRACT_THUMBNAIL` + > default value: `-map 0:%(index)s -an -c:v copy -y "%(output)s"` + >> +* `FFMPEG_HLS_COMMON_PARAMS` + > default value: `-c:v %(libx)s -preset %(preset)s -profile:v %(profile)s -pix_fmt yuv420p -level %(level)s -crf %(crf)s -sc_threshold 0 -force_key_frames "expr:gte(t,n_forced*1)" -c:a aac -ar 48000 -max_muxing_queue_size 4000` + >> +* `FFMPEG_HLS_ENCODE_PARAMS` + > default value: `-vf "scale=-2:%(height)s" -maxrate %(maxrate)s -bufsize %(bufsize)s -b:a:0 %(ba)s -hls_playlist_type vod -hls_time %(hls_time)s -hls_flags single_file -master_pl_name "livestream%(height)s.m3u8" -y "%(output)s"` + >> +* `FFMPEG_HLS_TIME` + > default value: `2` + >> +* `FFMPEG_INPUT` + > default value: `-hide_banner -threads %(nb_threads)s -i "%(input)s"` + >> +* `FFMPEG_LEVEL` + > default value: `3` + >> +* `FFMPEG_LIBX` + > default value: `libx264` + >> +* `FFMPEG_M4A_ENCODE` + > default value: `-vn -c:a aac -b:a %(audio_bitrate)s "%(output)s"` + >> +* `FFMPEG_MP3_ENCODE` + > default value: `-vn -codec:a libmp3lame -qscale:a 2 -y "%(output)s"` + >> +* `FFMPEG_MP4_ENCODE` + > default value: `-map 0:v:0 %(map_audio)s -c:v %(libx)s -vf "scale=-2:%(height)s" -preset %(preset)s -profile:v %(profile)s -pix_fmt yuv420p -level %(level)s -crf %(crf)s -maxrate %(maxrate)s -bufsize %(bufsize)s -sc_threshold 0 -force_key_frames "expr:gte(t,n_forced*1)" -max_muxing_queue_size 4000 -c:a aac -ar 48000 -b:a %(ba)s -movflags faststart -y -vsync 0 "%(output)s"` + >> +* `FFMPEG_NB_THREADS` + > default value: `0` + >> +* `FFMPEG_NB_THUMBNAIL` + > default value: `3` + >> +* `FFMPEG_PRESET` + > default value: `slow` + >> +* `FFMPEG_PROFILE` + > default value: `high` + >> +* `FFMPEG_STUDIO_COMMAND` + > default value: `-hide_banner -threads %(nb_threads)s %(input)s %(subtime)s -c:a aac -ar 48000 -c:v h264 -profile:v high -pix_fmt yuv420p -crf %(crf)s -sc_threshold 0 -force_key_frames "expr:gte(t,n_forced*1)" -max_muxing_queue_size 4000 -deinterlace` + >> +* `FFPROBE_CMD` + > default value: `ffprobe` + >> +* `FFPROBE_GET_INFO` + > default value: `%(ffprobe)s -v quiet -show_format -show_streams %(select_streams)s -print_format json -i %(source)s` + >> + +### file management + +* `FILES_DIR` + > default value: `files` + >> +* `FILE_UPLOAD_TEMP_DIR` + > default value: `/var/tmp` + >> +* `MEDIA_ROOT` + > default value: `/pod/media` + >> +* `MEDIA_URL` + > default value: `/media/` + >> +* `STATICFILES_STORAGE` + > default value: `` + >> +* `STATIC_ROOT` + > default value: `/pod/static` + >> +* `STATIC_URL` + > default value: `/static/` + >> +* `USE_PODFILE` + > default value: `False` + >> +* `VIDEOS_DIR` + > default value: `videos` + >> + +### language + + + +* `LANGUAGES` + > default value: `(('fr', 'Français'), ('en', 'English')))` + >> +* `LANGUAGE_CODE` + > default value: `fr` + >> + +### Main + +* `ADMINS` + > default value: `[("Name", "adminmail@univ.fr"),]` + >> +* `ALLOWED_HOSTS` + > default value: `['pod.localhost']` + >> +* `BASE_DIR` + > default value: `os.path.dirname(os.path.dirname(os.path.abspath(__file__)))` + >> +* `CACHES` + > default value: `{}` + >> +* `CSRF_COOKIE_SECURE` + > default value: `not DEBUG` + >> +* `DEBUG` + > default value: `True` + >> +* `USE_DEBUG_TOOLBAR` + > default value: `True` + >> A boolean value that enables or disables the debugging tool.

+ >> Never deploy a production site with USE_DEBUG_TOOLBAR enabled.

+ >> _ref : [django-debug-toolbar.readthedocs.io](https://django-debug-toolbar.readthedocs.io/en/latest/)_
+* `LOGIN_URL` + > default value: `/authentication_login/` + >> +* `MANAGERS` + > default value: `[]` + >> +* `PROXY_HOST` + > default value: `` + >> +* `PROXY_PORT` + > default value: `` + >> +* `SECRET_KEY` + > default value: `A_CHANGER` + >> +* `SECURE_SSL_REDIRECT` + > default value: `False` + >> Unless your site should be available over both SSL and non-SSL
+ >> connections, you may want to either set this setting True
+ >> or configure a load balancer or reverse-proxy server
+ >> to redirect all connections to HTTPS.
+* `SESSION_COOKIE_AGE` + > default value: `14400` + >> +* `SESSION_COOKIE_SAMESITE` + > default value: `Lax` + >> +* `SESSION_COOKIE_SECURE` + > default value: `not DEBUG` + >> +* `SESSION_EXPIRE_AT_BROWSER_CLOSE` + > default value: `True` + >> +* `SITE_ID` + > default value: `1` + >> +* `TEST_SETTINGS` + > default value: `False` + >> Use to check if globals settings are in test mode or not.
+* `THIRD_PARTY_APPS` + > default value: `[]` + >> +* `TIME_ZONE` + > default value: `UTC` + >> + +### Obsolescence + +* `ACCOMMODATION_YEARS` + > default value: `{}` + >> +* `ARCHIVE_OWNER_USERNAME` + > default value: `"archive"` + >> +* `POD_ARCHIVE_AFFILIATION` + > default value: `[]` + >> +* `WARN_DEADLINES` + > default value: `[60, 30, 7]` + >> + +### Templating + +* `COOKIE_LEARN_MORE` + > default value: `` + >> +* `DARKMODE_ENABLED` + > default value: `False` + >> +* `DYSLEXIAMODE_ENABLED` + > default value: `False` + >> +* `HIDE_CHANNEL_TAB` + > default value: `False` + >> +* `HIDE_CURSUS` + > default value: `False` + >> +* `HIDE_DISCIPLINES` + > default value: `False` + >> +* `HIDE_LANGUAGE_SELECTOR` + > default value: `False` + >> +* `HIDE_SHARE` + > default value: `False` + >> +* `HIDE_TAGS` + > default value: `False` + >> +* `HIDE_TYPES` + > default value: `False` + >> +* `HIDE_TYPES_TAB` + > default value: `False` + >> +* `HIDE_USERNAME` + > default value: `False` + >> +* `HIDE_USER_FILTER` + > default value: `False` + >> +* `HIDE_USER_TAB` + > default value: `False` + >> +* `HOMEPAGE_NB_VIDEOS` + > default value: `12` + >> +* `HOMEPAGE_SHOWS_PASSWORDED` + > default value: `False` + >> +* `HOMEPAGE_SHOWS_RESTRICTED` + > default value: `False` + >> +* `MENUBAR_HIDE_INACTIVE_OWNERS` + > default value: `True` + >> +* `MENUBAR_SHOW_STAFF_OWNERS_ONLY` + > default value: `False` + >> +* `SHIB_NAME` + > default value: `Identify Federation` + >> +* `SHOW_EVENTS_ON_HOMEPAGE` + > default value: `False` + >> +* `SHOW_ONLY_PARENT_THEMES` + > default value: `False` + >> +* `TEMPLATE_VISIBLE_SETTINGS` + > default value: `{}` + >> + +### Transcoding + +* `TRANSCRIPTION_AUDIO_SPLIT_TIME` + > default value: `600` + >> +* `TRANSCRIPTION_MODEL_PARAM` + > default value: `{}` + >> +* `TRANSCRIPTION_NORMALIZE` + > default value: `False` + >> +* `TRANSCRIPTION_NORMALIZE_TARGET_LEVEL` + > default value: `-16.0` + >> +* `TRANSCRIPTION_STT_SENTENCE_BLANK_SPLIT_TIME` + > default value: `0.5` + >> Maximum time in seconds of gaps between each word for cutting subtitles with the STT tool.
+* `TRANSCRIPTION_STT_SENTENCE_MAX_LENGTH` + > default value: `2` + >> Maximum time in seconds for a sentence when transcribing with the STT tool.
+* `TRANSCRIPTION_TYPE` + > default value: `STT` + >> +* `TRANSCRIPT_VIDEO` + > default value: `start_transcript` + >> +* `USE_TRANSCRIPTION` + > default value: `False` + >> + +## + +### AI Enhancement application configuration + +AI Enhancement app to be able to use artificial intelligence enhancements for videos.
+Set `USE_AI_ENHANCEMENT` to True to activate this application.
+ +* `AI_ENHANCEMENT_API_URL` + > default value: `` + >> API URL for the AI video enhancement.
+ >> Example: 'https://aristote.univ.fr/api'
+ >> Project Link: https://www.demainestingenieurs.centralesupelec.fr/aristote/
+* `AI_ENHANCEMENT_API_VERSION` + > default value: `` + >> API version for the AI video enhancement.
+* `AI_ENHANCEMENT_CGU_URL` + > default value: `` + >> URL for General Terms and Conditions for API uses for the AI video enhancement.
+ >> Example: 'https://aristote.univ.fr/cgu'
+ >> Project Link: https://www.demainestingenieurs.centralesupelec.fr/aristote/
+* `AI_ENHANCEMENT_CLIENT_ID` + > default value: `mocked_id` + >> The video enhancement AI client ID.
+ >> Example: 'v1'
+* `AI_ENHANCEMENT_CLIENT_SECRET` + > default value: `mocked_secret` + >> The video enhancement AI client secret password.
+* `AI_ENHANCEMENT_FIELDS_HELP_TEXT` + > default value: `` + >> Set of help texts displayed with the form for improving a video with Aristotle's AI.
+* `USE_AI_ENHANCEMENT` + > default value: `False` + >> Activation of artificial intelligence enhancements. Allows users to use it.
+ +### + +* `AFFILIATION` + > default value: `` + >> +* `AFFILIATION_EVENT` + > default value: `` + >> +* `AFFILIATION_STAFF` + > default value: `` + >> +* `AUTH_CAS_USER_SEARCH` + > default value: `user` + >> +* `AUTH_LDAP_BIND_DN` + > default value: `` + >> +* `AUTH_LDAP_BIND_PASSWORD` + > default value: `` + >> +* `AUTH_LDAP_USER_SEARCH` + > default value: `` + >> +* `AUTH_TYPE` + > default value: `` + >> +* `CAS_ADMIN_AUTH` + > default value: `False` + >> To disable CAS authentication for the entire django admin app, set CAS_ADMIN_AUTH = False
+* `CAS_FORCE_LOWERCASE_USERNAME` + > default value: `False` + >> +* `CAS_GATEWAY` + > default value: `False` + >> +* `CAS_LOGOUT_COMPLETELY` + > default value: `True` + >> See [kstateome/django-cas](https://github.com/kstateome/django-cas)
+* `CAS_SERVER_URL` + > default value: `sso_cas` + >> +* `CREATE_GROUP_FROM_AFFILIATION` + > default value: `False` + >> +* `CREATE_GROUP_FROM_GROUPS` + > default value: `False` + >> +* `DEFAULT_AFFILIATION` + > default value: `` + >> +* `ESTABLISHMENTS` + > default value: `` + >> +* `GROUP_STAFF` + > default value: `AFFILIATION_STAFF` + >> +* `HIDE_LOCAL_LOGIN` + > default value: `False` + >> +* `HIDE_USERNAME` + > default value: `False` + >> +* `LDAP` + > default value: `` + >> +* `LDAP_SERVER` + > default value: `` + >> +* `OIDC_CLAIM_FAMILY_NAME` + > default value: `family_name` + >> +* `OIDC_CLAIM_PREFERRED_USERNAME` + > default value: `preferred_username` + >> +* `OIDC_CLAIM_GIVEN_NAME` + > default value: `given_name` + >> +* `OIDC_DEFAULT_ACCESS_GROUP_CODE_NAMES` + > default value: `[]` + >> +* `OIDC_DEFAULT_AFFILIATION` + > default value: `` + >> +* `OIDC_NAME` + > default value: `` + >> +* `OIDC_OP_AUTHORIZATION_ENDPOINT` + > default value: `https` + >> +* `OIDC_OP_JWKS_ENDPOINT` + > default value: `https` + >> +* `OIDC_OP_TOKEN_ENDPOINT` + > default value: `https` + >> +* `OIDC_OP_USER_ENDPOINT` + > default value: `https` + >> +* `OIDC_RP_CLIENT_ID` + > default value: `os.environ` + >> +* `OIDC_RP_CLIENT_SECRET` + > default value: `os.environ` + >> +* `OIDC_RP_SIGN_ALGO` + > default value: `` + >> +* `POPULATE_USER` + > default value: `None` + >> +* `REMOTE_USER_HEADER` + > default value: `REMOTE_USER` + >> +* `SHIBBOLETH_ATTRIBUTE_MAP` + > default value: `` + >> +* `SHIBBOLETH_STAFF_ALLOWED_DOMAINS` + > default value: `` + >> +* `SHIB_LOGOUT_URL` + > default value: `` + >> +* `SHIB_NAME` + > default value: `` + >> +* `SHIB_URL` + > default value: `` + >> +* `USER_CAS_MAPPING_ATTRIBUTES` + > default value: `` + >> +* `USER_LDAP_MAPPING_ATTRIBUTES` + > default value: `` + >> +* `USE_CAS` + > default value: `False` + >> +* `USE_OIDC` + > default value: `False` + >> +* `USE_SHIB` + > default value: `False` + >> + +### + + +### + +* `ACTIVE_MODEL_ENRICH` + > default value: `False` + >> +* `ALL_LANG_CHOICES` + > default value: `` + >> +* `DEFAULT_LANG_TRACK` + > default value: `fr` + >> +* `KIND_CHOICES` + > default value: `` + >> +* `LANG_CHOICES` + > default value: `` + >> +* `LINK_SUPERPOSITION` + > default value: `False` + >> +* `MODEL_COMPILE_DIR` + > default value: `/path/of/project/Esup-Pod/compile-model` + >> +* `PREF_LANG_CHOICES` + > default value: `` + >> +* `ROLE_CHOICES` + > default value: `` + >> +* `TRANSCRIPTION_MODEL_PARAM` + > default value: `` + >> +* `TRANSCRIPTION_TYPE` + > default value: `STT` + >> +* `USE_ENRICH_READY` + > default value: `False` + >> + +### Cut application configuration + +Cut application to cut videos.
+Set `USE_CUT` to True to activate this application.
+ +* `USE_CUT` + > default value: `True` + >> Activation of the Cut application
+ +### Dressing application configuration + +Dressing App to customize a video with watermark & credits.
+Set `USE_DRESSING` to True to activate this application.
+ +* `USE_DRESSING` + > default value: `True` + >> Activation of dressings. Allows users to customize a video with watermark & credits.
+ +### + + +### Video import application configuration + +Import_video app to import external videos into Pod.
+Set `USE_IMPORT_VIDEO` to True to activate this application.
+ +* `MAX_UPLOAD_SIZE_ON_IMPORT` + > default value: `4` + >> Maximum size in Gb of video files that can be imported into the platform
+ >> via the import_video application (0 = no maximum size).
+* `RESTRICT_EDIT_IMPORT_VIDEO_ACCESS_TO_STAFF_ONLY` + > default value: `True` + >> Only "staff" users will be able to import videos
+* `USE_IMPORT_VIDEO` + > default value: `True` + >> Activation of the video import application
+* `USE_IMPORT_VIDEO_BBB_RECORDER` + > default value: `False` + >> Using the bbb-recorder plugin for the video import module;
+ >> useful for converting a BigBlueButton presentation into a video file.
+* `IMPORT_VIDEO_BBB_RECORDER_PLUGIN` + > default value: `/home/pod/bbb-recorder/` + >> bbb-recorder plugin directory (see [jibon57/bbb-recorder](https://github.com/jibon57/bbb-recorder) documentation).
+ >> bbb-recorder must be installed in this directory, on all encoding servers.
+ >> bbb-recorder creates a Downloads directory, at the same level, which requires disk space.
+* `IMPORT_VIDEO_BBB_RECORDER_PATH` + > default value: `True` + >> Directory that will contain the video files generated by bbb-recorder.
+ +### + +* `AFFILIATION_EVENT` + > default value: `['faculty', 'employee', 'staff']` + >> +* `BROADCASTER_PILOTING_SOFTWARE` + > default value: `[]` + >> +* `DEFAULT_EVENT_PATH` + > default value: `` + >> +* `DEFAULT_EVENT_THUMBNAIL` + > default value: `/img/default-event.svg` + >> +* `DEFAULT_EVENT_TYPE_ID` + > default value: `1` + >> +* `DEFAULT_THUMBNAIL` + > default value: `img/default.svg` + >> +* `EMAIL_ON_EVENT_SCHEDULING` + > default value: `True` + >> +* `EVENT_ACTIVE_AUTO_START` + > default value: `False` + >> +* `EVENT_CHECK_MAX_ATTEMPT` + > default value: `10` + >> +* `EVENT_GROUP_ADMIN` + > default value: `event admin` + >> +* `HEARTBEAT_DELAY` + > default value: `45` + >> +* `LIVE_CELERY_TRANSCRIPTION` + > default value: `False` + >> +* `LIVE_TRANSCRIPTIONS_FOLDER` + > default value: `` + >> +* `LIVE_VOSK_MODEL` + > default value: `{}` + >> +* `USE_BBB` + > default value: `False` + >> +* `USE_BBB_LIVE` + > default value: `False` + >> +* `USE_LIVE_TRANSCRIPTION` + > default value: `False` + >> + >> Enable auto-transcritption for live events
+* `VIEW_EXPIRATION_DELAY` + > default value: `60` + >> + +### + +* `LTI_ENABLED` + > default value: `False` + >> +* `PYLTI_CONFIG` + > default value: `{}` + >> The PYLTI_CONFIG variable in your settings.py configures the application consumers and secrets.
+ >> + >> ```python + >> PYLTI_CONFIG = { + >> 'consumers': { + >> '': { + >> 'secret': '' + >> } + >> } + >> } + >> ``` + >> + +### + +* `HOMEPAGE_VIEW_VIDEOS_FROM_NON_VISIBLE_CHANNELS` + > default value: `False` + >> Display videos from non visible channels on the homepage
+* `USE_BBB` + > default value: `True` + >> +* `USE_BBB_LIVE` + > default value: `False` + >> +* `USE_IMPORT_VIDEO` + > default value: `True` + >> Activation of the video import application
+* `USE_MEETING` + > default value: `False` + >> Activate the meeting application
+* `USE_OPENCAST_STUDIO` + > default value: `False` + >> Activate the [Opencast](https://opencast.org/) studio.
+* `VERSION` + > default value: `` + >> Version of the project
+* `WEBTV_MODE` + > default value: `False` + >> Webtv mode allows you to switch POD into a webtv application removing the connection buttons for example
+ +### + + + +* `BBB_API_URL` + > default value: `` + >> +* `BBB_LOGOUT_URL` + > default value: `` + >> +* `BBB_MEETING_INFO` + > default value: `{}` + >> list of key:value to get information from session meeting in BBB
+* `BBB_SECRET_KEY` + > default value: `` + >> +* `DEFAULT_MEETING_THUMBNAIL` + > default value: `/img/default-meeting.svg` + >> Default image displayed as a poster or thumbnail, used to present the meeting.
+ >> This image must be located in the `static` directory.
+* `MEETING_DATE_FIELDS` + > default value: `()` + >> list of date fields for the meeting form
+ >> the fields are grouped into a fieldset
+* `MEETING_DISABLE_RECORD` + > default value: `True` + >> +* `MEETING_MAIN_FIELDS` + > default value: `()` + >> list the main fields for the meeting session form
+ >> the main fields are displayed directly in the form page of a meeting
+* `MEETING_MAX_DURATION` + > default value: `5` + >> set the max duration for a meeting session
+* `MEETING_PRE_UPLOAD_SLIDES` + > default value: `` + >> + >> Pre-loaded slideshow for virtual meetings.
+ >> A user can override this value by choosing a slideshow when creating a virtual meeting.
+ >> Must be in the static directory.
+* `MEETING_RECORD_FIELDS` + > default value: `()` + >> list of all fields that will be hidden if `MEETING_DISABLE_RECORD` is set to True.
+* `MEETING_RECURRING_FIELDS` + > default value: `()` + >> List of all fields involved by the recurring of a meeting
+ >> In this case, all this fields are grouped in a fieldset shown in modal
+* `RESTRICT_EDIT_MEETING_ACCESS_TO_STAFF_ONLY` + > default value: `False` + >> +* `USE_MEETING_WEBINAR` + > default value: `False` + >> Activate Webinar mode for the meetings module
+* `MEETING_WEBINAR_SIPMEDIAGW_URL` + > default value: `` + >> URL of the SIPMediaGW server that manages webinars (e.g. `https://sipmediagw.univ.fr`)
+* `MEETING_WEBINAR_SIPMEDIAGW_TOKEN` + > default value: `` + >> Bearer token for the SIPMediaGW server that manages webinars
+* `MEETING_WEBINAR_FIELDS` + > default value: `("is_webinar", "enable_chat")` + >> List the additional fields for the webinar session form
+ >> the additional fields are displayed directly in the form page of a webinar
+* `MEETING_WEBINAR_AFFILIATION` + > default value: `['faculty', 'employee', 'staff']` + >> Access groups or affiliations of people authorized to create a webinar
+* `MEETING_WEBINAR_GROUP_ADMIN` + > default value: `webinar admin` + >> Group of people authorized to create a webinar
+* `USE_MEETING` + > default value: `False` + >> + +### Playlist application configuration + +Playlist app for the playlist management.
+Set `USE_PLAYLIST` to True to activate this application.
+ +* `COUNTDOWN_PLAYLIST_PLAYER` + > default value: `0` + >> Countdown used between each video when playing an autoplay playlist.
+ >> The coutdown is not present if it at 0.
+* `DEFAULT_PLAYLIST_THUMBNAIL` + > default value: `/static/playlist/img/default-playlist.svg` + >> Default image displayed as a poster or thumbnail, used to present the playlist.
+ >> This image must be located in the `static` directory.
+* `RESTRICT_PROMOTED_PLAYLIST_ACCESS_TO_STAFF_ONLY` + > default value: `True` + >> Restrict access to promoted playlists creation to staff only.
+* `USE_FAVORITES` + > default value: `True` + >> Activation of favorite videos.
+ >> Allows users to add videos to their favorites.
+* `USE_PLAYLIST` + > default value: `True` + >> Activation of playlist. Allows users to add videos in a playlist.
+* `USE_PROMOTED_PLAYLIST` + > default value: `True` + >> Activation of promoted playlists. Allows users to use the promoted playlists.
+ +### + +* `FILES_DIR` + > default value: `files` + >> +* `FILE_ALLOWED_EXTENSIONS` + > default value: `('doc', 'docx', 'odt', 'pdf', 'xls', 'xlsx', 'ods', 'ppt', 'pptx', 'txt', 'html', 'htm', 'vtt', 'srt')` + >> Extensions allowed for documents uploaded in the file manager (lowercase).
+* `FILE_MAX_UPLOAD_SIZE` + > default value: `10` + >> Maximum size in MB per file uploaded in the file manager
+* `IMAGE_ALLOWED_EXTENSIONS` + > default value: `('jpg', 'jpeg', 'bmp', 'png', 'gif', 'tiff', 'webp')` + >> Allowed extensions for images uploaded in the file manager (must be lowercase).
+ +### + +* `USE_NOTIFICATIONS` + > default value: `True` + >> +* `WEBPUSH_SETTINGS` + > default value: + + ```python + { + 'VAPID_PUBLIC_KEY': '', + 'VAPID_PRIVATE_KEY': '', + 'VAPID_ADMIN_EMAIL': 'contact@esup-portail.org' + } + ``` + + >> + +### Quiz application configuration + +Quiz App to add various questions on videos.
+Set `USE_QUIZ` to True to activate this application.
+ +* `USE_QUIZ` + > default value: `True` + >> Activation of quizzes. Allows users to create, respond and use quizzes in videos.
+ +### + +* `ALLOW_MANUAL_RECORDING_CLAIMING` + > default value: `False` + >> +* `ALLOW_RECORDER_MANAGER_CHOICE_VID_OWNER` + > default value: `True` + >> If True, the manager of the recorder can choose the recorder file owner
+* `DEFAULT_RECORDER_ID` + > default value: `1` + >> Add a default recorder to an unidentifiable recording file.
+* `DEFAULT_RECORDER_PATH` + > default value: `/data/ftp-pod/ftp/` + >> Root path of the directory where the recordings are deposited
+* `DEFAULT_RECORDER_TYPE_ID` + > default value: `1` + >> Default video type identifier (if not specified).
+* `DEFAULT_RECORDER_USER_ID` + > default value: `1` + >> Identifier of the default owner (if not specified) of the deposited records.
+* `OPENCAST_DEFAULT_PRESENTER` + > default value: `mid` + >> +* `OPENCAST_FILES_DIR` + > default value: `opencast-files` + >> +* `OPENCAST_MEDIAPACKAGE` + > default value: `-> see xml content` + >> Default content of the xml file to create the mediapackage for the studio. This file will contain all the specifics of the recording (source, cutting, title, presenter etc.)
+* `PUBLIC_RECORD_DIR` + > default value: `records` + >> Web access path (public) to the recording repository directory (`DEFAULT_RECORDER_PATH`).
+ >> Warning: remember to modify the NGINX conf
+* `RECORDER_ADDITIONAL_FIELDS` + > default value: `()` + >> List of additional fields for the recorders form. This list includes the name of the fields corresponding to the editing parameters of a video (Discipline, Channel, Theme, keywords...).
+ >> The following example includes all the possible fields, but can be lightened according to needs.
+ >> The videos will then be generated with the values of the additional fields as defined in their recorder.
+* `RECORDER_ALLOW_INSECURE_REQUESTS` + > default value: `False` + >> +* `RECORDER_BASE_URL` + > default value: `https://pod.univ.fr` + >> +* `RECORDER_SELF_REQUESTS_PROXIES` + > default value: `{"http": None, "https": None}` + >> +* `RECORDER_SKIP_FIRST_IMAGE` + > default value: `False` + >> +* `RECORDER_TYPE` + > default value: `(('video', _('Video')), ('audiovideocast', _('Audiovideocast')), ('studio', _('Studio')))` + >> Type of record managed by the platform.
+ >> A recorder can only upload files of the type offered by the platform.
+ >> The processing is done according to the type of file deposited.
+* `USE_OPENCAST_STUDIO` + > default value: `False` + >> +* `USE_RECORD_PREVIEW` + > default value: `False` + >> If True, displays the video preview icon in the "Claim a recording" page.
+ +### + +* `ACTIVE_VIDEO_COMMENT` + > default value: `False` + >> +* `CACHE_VIDEO_DEFAULT_TIMEOUT` + > default value: `600` + >> + >> Time in second to cache video data
+* `CHANNEL_FORM_FIELDS_HELP_TEXT` + > default value: `` + >> +* `CHUNK_SIZE` + > default value: `1000000` + >> +* `CURSUS_CODES` + > default value: `()` + >> +* `DEFAULT_DC_COVERAGE` + > default value: `TITLE_ETB + " - Town - Country"` + >> +* `DEFAULT_DC_RIGHTS` + > default value: `BY-NC-SA` + >> +* `DEFAULT_THUMBNAIL` + > default value: `img/default.svg` + >> +* `DEFAULT_TYPE_ID` + > default value: `1` + >> +* `DEFAULT_YEAR_DATE_DELETE` + > default value: `2` + >> +* `FORCE_LOWERCASE_TAGS` + > default value: `True` + >> +* `LANG_CHOICES` + > default value: `` + >> +* `LICENCE_CHOICES` + > default value: `()` + >> +* `MAX_DURATION_DATE_DELETE` + > default value: `10` + >> +* `MAX_TAG_LENGTH` + > default value: `50` + >> +* `NOTES_STATUS` + > default value: `()` + >> +* `OEMBED` + > default value: `False` + >> +* `ORGANIZE_BY_THEME` + > default value: `False` + >> +* `RESTRICT_EDIT_VIDEO_ACCESS_TO_STAFF_ONLY` + > default value: `False` + >> +* `THEME_FORM_FIELDS_HELP_TEXT` + > default value: `""` + >> +* `USER_VIDEO_CATEGORY` + > default value: `False` + >> +* `USE_OBSOLESCENCE` + > default value: `False` + >> +* `USE_STATS_VIEW` + > default value: `False` + >> +* `USE_VIDEO_EVENT_TRACKING` + > default value: `False` + >> +* `USE_XAPI_VIDEO` + > default value: `False` + >> + >> Enables sending xAPI statements for the video player.
+ >> Attention, you must set USE_XAPI to True for the statements to be sent.
+* `VIDEO_ALLOWED_EXTENSIONS` + > default value: `()` + >> Allowed extensions for video upload on the platform (lowercase).
+* `VIDEO_FEED_NB_ITEMS` + > default value: `100` + >> +* `VIDEO_FORM_FIELDS` + > default value: `__all__` + >> List of displayed video editing form fields.
+* `VIDEO_FORM_FIELDS_HELP_TEXT` + > default value: `` + >> +* `VIDEO_MAX_UPLOAD_SIZE` + > default value: `1` + >> +* `VIDEO_PLAYBACKRATES` + > default value: `[0.5, 1, 1.5, 2]` + >> +* `VIDEO_RECENT_VIEWCOUNT` + > default value: `180` + >> Duration (in number of days) over which we wish to count the number of recent views.
+* `VIDEO_REQUIRED_FIELDS` + > default value: `[]` + >> +* `VIEW_STATS_AUTH` + > default value: `False` + >> + +### + + + +* `CELERY_BROKER_URL` + > default value: `redis://redis.localhost:6379/5` + >> +* `CELERY_TO_ENCODE` + > default value: `False` + >> +* `DEFAULT_LANG_TRACK` + > default value: `fr` + >> +* `EMAIL_ON_ENCODING_COMPLETION` + > default value: `True` + >> +* `EMAIL_ON_TRANSCRIPTING_COMPLETION` + > default value: `True` + >> +* `ENCODE_STUDIO` + > default value: `start_encode_studio` + >> +* `ENCODE_VIDEO` + > default value: `start_encode` + >> +* `ENCODING_CHOICES` + > default value: `()` + >> +* `ENCODING_TRANSCODING_CELERY_BROKER_URL` + > default value: `False` + >> +* `FORMAT_CHOICES` + > default value: `()` + >> +* `USE_REMOTE_ENCODING_TRANSCODING` + > default value: `False` + >> +* `POD_API_URL` + > default value: `` + >> Address of API rest to be called at the end of remote encoding or remote transcription.
+ >> Example: `https://pod.univ.fr/rest/`
+* `POD_API_TOKEN` + > default value: `` + >> Authentication token used for the call at the end of remote encoding or remote transcription.
+ >> To create it, go to Admin > Authentication token > token.
+* `VIDEO_RENDITIONS` + > default value: `[]` + >> + +### + +* `ES_INDEX` + > default value: `pod` + >> +* `ES_MAX_RETRIES` + > default value: `10` + >> +* `ES_TIMEOUT` + > default value: `30` + >> +* `ES_URL` + > default value: `["http://elasticsearch.localhost:9200/"]` + >> +* `ES_VERSION` + > default value: `6` + >> +* `ES_OPTIONS` + > default value: `{}` + >> + +### + +Application for sending xAPI statements to an LRS.
+No statements persist in Pod, they are all sent to the configured LRS.
+Please note, Celery must be set to send statements.
+ +* `USE_XAPI` + > default value: `False` + >> +* `XAPI_ANONYMIZE_ACTOR` + > default value: `True` + >> +* `XAPI_LRS_LOGIN` + > default value: `` + >> +* `XAPI_LRS_PWD` + > default value: `` + >> +* `XAPI_LRS_URL` + > default value: `` + >> diff --git a/CONFIGURATION_FR.md b/CONFIGURATION_FR.md index 1ec921e701..0594364eeb 100644 --- a/CONFIGURATION_FR.md +++ b/CONFIGURATION_FR.md @@ -1191,6 +1191,9 @@ Mettre `USE_IMPORT_VIDEO` à True pour activer cette application.
* `VERSION` > valeur par défaut : `` >> Version courante du projet
+* `WEBTV_MODE` + > valeur par défaut : `False` + >> Mode webtv permet de basculer POD en une application webtv ensupprimant les boutons de connexions par exemple
### Configuration de l’application meeting diff --git a/pod/main/configuration.json b/pod/main/configuration.json index b8dd1c5937..19a5ad51ef 100644 --- a/pod/main/configuration.json +++ b/pod/main/configuration.json @@ -1588,6 +1588,19 @@ }, "pod_version_end": "", "pod_version_init": "3.1.0" + }, + "WEBTV_MODE": { + "default_value": false, + "description": { + "en": [ + "Webtv mode allows you to switch POD into a webtv application removing the connection buttons for example" + ], + "fr": [ + "Mode webtv permet de basculer POD en une application webtv ensupprimant les boutons de connexions par exemple" + ] + }, + "pod_version_end": "", + "pod_version_init": "3.7.0" } }, "title": { diff --git a/pod/main/context_processors.py b/pod/main/context_processors.py index b4aa95530d..6f7ca5fec4 100644 --- a/pod/main/context_processors.py +++ b/pod/main/context_processors.py @@ -85,6 +85,8 @@ ) USE_NOTIFICATIONS = getattr(django_settings, "USE_NOTIFICATIONS", True) +WEBTV_MODE = getattr(django_settings, "WEBTV_MODE", False) + def context_settings(request): """Return all context settings.""" @@ -146,6 +148,7 @@ def context_settings(request): RESTRICT_EDIT_MEETING_ACCESS_TO_STAFF_ONLY ) new_settings["USE_NOTIFICATIONS"] = USE_NOTIFICATIONS + new_settings["WEBTV_MODE"] = WEBTV_MODE return new_settings diff --git a/pod/main/templates/navbar.html b/pod/main/templates/navbar.html index 1002de7fa3..675ee251dc 100644 --- a/pod/main/templates/navbar.html +++ b/pod/main/templates/navbar.html @@ -335,14 +335,16 @@
{% trans 'Your statistics' %}
{% else %}{# user not authenticated #} - {% get_setting "LOGIN_URL" "/authentication_login/" as LOGIN_URL %} - {% if request.path != LOGIN_URL %} - + {% if not WEBTV_MODE %} + {% get_setting "LOGIN_URL" "/authentication_login/" as LOGIN_URL %} + {% if request.path != LOGIN_URL %} + + {% endif %} {% endif %} {% endif %} diff --git a/pod/main/tests/test_views.py b/pod/main/tests/test_views.py index f2be6aeb5c..af408b92ca 100644 --- a/pod/main/tests/test_views.py +++ b/pod/main/tests/test_views.py @@ -525,6 +525,16 @@ def test_statistics_playlists(self) -> None: print(" ---> test_statistics_playlists ok") + @override_settings(WEBTV_MODE=True) + def test_login_button_hidden(self) -> None: + """Test if login button is hidden when the webtv mode is true.""" + importlib.reload(context_processors) + response = self.client.get("/") + self.assertFalse( + 'id="nav-authentication"' in response.content.decode(), + "test if login button is correctly hidden", + ) + class TestBlock(TestCase): """Block tests case."""