Skip to content
Snippets Groups Projects
Select Git revision
  • b422db506621661d8086a4a3f6f0851794ee6ec0
  • main default protected
  • old_beta_site
  • smart_caching
  • 51-endpoint-course-slow-to-load
  • dork
  • dork2
  • v2.0.8 protected
  • v2.0.7 protected
  • v2.0.6 protected
  • v2.0.5 protected
  • v2.0.4 protected
  • v2.0.3 protected
  • v2.0.2 protected
  • v2.0.1 protected
  • v2.0.0 protected
  • v1.1.10 protected
  • v1.1.9 protected
  • v1.1.8 protected
  • v1.1.7 protected
  • v1.1.6 protected
  • v1.1.5 protected
  • v1.1.4 protected
  • v1.1.3 protected
  • v1.1.2 protected
  • v1.1.1 protected
  • v1.1 protected
27 results

faq.tsx

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    object_data.py 30.60 KiB
    # -------------------- User --------------------
    
    TEST_DATA_USER_43 = \
        {
            "id": 43,
            "handle": "videoag",
            "display_name": "Video",
            "full_name": "Video AG",
        }
    
    TEST_DATA_NEW_USER_NO_ID_WITH_EMAIL = \
        {
            # ID is not known
            "handle": "new_user",
            "display_name": "Neuer",
            "full_name": "Neuer Alter",
            "email": "someone@fsmpi.rwth-aachen.de",
        }
    
    # -------------------- Chapters --------------------
    
    TEST_DATA_CHAPTER_1 = \
        {
            "id": 1,
            "start_time": 60,
            "name": "test1",
        }
    TEST_DATA_CHAPTER_1_MOD = TEST_DATA_CHAPTER_1 | \
        {
            "visible": True,
        }
    
    TEST_DATA_CHAPTER_2 = \
        {
            "id": 2,
            "start_time": 7200,
            "name": "test2",
        }
    TEST_DATA_CHAPTER_2_MOD = TEST_DATA_CHAPTER_2 | \
        {
            "visible": True,
        }
    
    _TEST_DATA_CHAPTER_3 = \
        {
            "id": 3,
            "start_time": 360,
            "name": "Hidden",
        }
    TEST_DATA_CHAPTER_3_MOD = _TEST_DATA_CHAPTER_3 | \
        {
            "visible": False,
        }
    
    TEST_DATA_CHAPTER_5 = \
        {
            "id": 5,
            "start_time": 429,
            "name": "Something",
        }
    TEST_DATA_CHAPTER_5_MOD = TEST_DATA_CHAPTER_5 | \
        {
            "visible": True,
        }
    
    # -------------------- Media Files --------------------
    
    TEST_DATA_MEDIUM_FILE_1 = \
        {
            "id": 1,
            "file_path": "thumbnail/l_3.jpg",
            "lecture": 3,
            "producer_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "process_target_id": "thumbnail",
            "input_data_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "producer_job_id": None,
            "to_be_replaced": False,
        }
    TEST_DATA_MEDIUM_FILE_2 = \
        {
            "id": 2,
            "file_path": "thumbnail/l_25.jpg",
            "lecture": 25,
            "producer_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "process_target_id": "thumbnail",
            "input_data_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "producer_job_id": None,
            "to_be_replaced": False,
        }
    TEST_DATA_MEDIUM_FILE_3 = \
        {
            "id": 3,
            "file_path": "thumbnail/l_186.jpg",
            "lecture": 186,
            "producer_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "process_target_id": "thumbnail",
            "input_data_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "producer_job_id": None,
            "to_be_replaced": False,
        }
    TEST_DATA_MEDIUM_FILE_4 = \
        {
            "id": 4,
            "file_path": "thumbnail/l_1186.jpg",
            "lecture": 1186,
            "producer_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "process_target_id": "thumbnail",
            "input_data_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "producer_job_id": None,
            "to_be_replaced": False,
        }
    TEST_DATA_MEDIUM_FILE_5 = \
        {
            "id": 5,
            "file_path": "pub/09ss-fosap/09ss-fosap-090421.mp4",
            "lecture": 186,
            "producer_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "process_target_id": "video_1080",
            "input_data_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "producer_job_id": None,
            "to_be_replaced": False,
        }
    TEST_DATA_MEDIUM_FILE_6 = \
        {
            "id": 6,
            "file_path": "vpnonline/07ws-buk/07ws-buk-071026.mp4",
            "lecture": 3,
            "producer_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "process_target_id": "video",
            "input_data_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "producer_job_id": None,
            "to_be_replaced": False,
        }
    TEST_DATA_MEDIUM_FILE_7 = \
        {
            "id": 7,
            "file_path": "pub/07ws-diskrete/07ws-diskrete-071211.mp4",
            "lecture": 25,
            "producer_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "process_target_id": "video",
            "input_data_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "producer_job_id": None,
            "to_be_replaced": False,
        }
    TEST_DATA_MEDIUM_FILE_8 = \
        {
            "id": 8,
            "file_path": "vpnonline/11ws-infin/11ws-infin-111010.mp4",
            "lecture": 1186,
            "producer_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "process_target_id": "video",
            "input_data_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "producer_job_id": None,
            "to_be_replaced": False,
        }
    TEST_DATA_MEDIUM_FILE_9 = \
        {
            "id": 9,
            "file_path": "pub/09ss-fosap/09ss-fosap-090421-720p.mp4",
            "lecture": 186,
            "producer_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "process_target_id": "video_720",
            "input_data_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "producer_job_id": None,
            "to_be_replaced": False,
        }
    TEST_DATA_MEDIUM_FILE_10 = \
        {
            "id": 10,
            "file_path": "pub/09ss-fosap/09ss-fosap-090421-480p.mp4",
            "lecture": 186,
            "producer_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "process_target_id": "video_480",
            "input_data_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
            "producer_job_id": None,
            "to_be_replaced": False,
        }
    
    # -------------------- Media Metadata --------------------
    
    TEST_DATA_MEDIUM_METADATA_5 = \
        {
            "id": 5,
            "type": "plain_video",
            "file_size": 42,
            "file_format": "mp4",
            "vertical_resolution": 720,
            "horizontal_resolution": 1280,
            "video_frame_rate_numerator": 25,
            "video_frame_rate_denominator": 1,
            "audio_sample_rate": 44000,
            "audio_channel_count": 2,
            "duration_sec": 5243,
        }
    TEST_DATA_MEDIUM_METADATA_6 = \
        {
            "id": 6,
            "type": "thumbnail",
            "file_size": 42,
            "file_format": "jpg",
            "vertical_resolution": 640,
            "horizontal_resolution": 640,
        }
    
    
    TEST_DATA_MEDIUM_METADATA_7 = \
        {
            "id": 7,
            "type": "plain_video",
            "file_size": 42,
            "file_format": "mp4",
            "vertical_resolution": 720,
            "horizontal_resolution": 1280,
            "video_frame_rate_numerator": 25,
            "video_frame_rate_denominator": 1,
            "audio_sample_rate": 44000,
            "audio_channel_count": 2,
            "duration_sec": 5420,
        }
    TEST_DATA_MEDIUM_METADATA_8 = \
        {
            "id": 8,
            "type": "thumbnail",
            "file_size": 42,
            "file_format": "jpg",
            "vertical_resolution": 640,
            "horizontal_resolution": 640,
        }
    
    
    TEST_DATA_MEDIUM_METADATA_15 = \
        {
            "id": 15,
            "type": "plain_video",
            "file_size": 42,
            "file_format": "mp4",
            "vertical_resolution": 1080,
            "horizontal_resolution": 1920,
            "video_frame_rate_numerator": 25,
            "video_frame_rate_denominator": 1,
            "audio_sample_rate": 44000,
            "audio_channel_count": 2,
            "duration_sec": 5431,
        }
    TEST_DATA_MEDIUM_METADATA_16 = \
        {
            "id": 16,
            "type": "plain_video",
            "file_size": 42,
            "file_format": "mp4",
            "vertical_resolution": 720,
            "horizontal_resolution": 1280,
            "video_frame_rate_numerator": 25,
            "video_frame_rate_denominator": 1,
            "audio_sample_rate": 44000,
            "audio_channel_count": 2,
            "duration_sec": 5431,
        }
    TEST_DATA_MEDIUM_METADATA_25 = \
        {
            "id": 25,
            "type": "plain_video",
            "file_size": 42,
            "file_format": "mp4",
            "vertical_resolution": 480,
            "horizontal_resolution": 854,
            "video_frame_rate_numerator": 25,
            "video_frame_rate_denominator": 1,
            "audio_sample_rate": 44000,
            "audio_channel_count": 2,
            "duration_sec": 5431,
        }
    TEST_DATA_MEDIUM_METADATA_17 = \
        {
            "id": 17,
            "type": "thumbnail",
            "file_size": 42,
            "file_format": "jpg",
            "vertical_resolution": 640,
            "horizontal_resolution": 640,
        }
    
    
    TEST_DATA_MEDIUM_METADATA_19 = \
        {
            "id": 19,
            "type": "plain_video",
            "file_size": 42,
            "file_format": "mp4",
            "vertical_resolution": 720,
            "horizontal_resolution": 1280,
            "video_frame_rate_numerator": 25,
            "video_frame_rate_denominator": 1,
            "audio_sample_rate": 44000,
            "audio_channel_count": 2,
            "duration_sec": 5001,
        }
    TEST_DATA_MEDIUM_METADATA_20 = \
        {
            "id": 20,
            "type": "thumbnail",
            "file_size": 42,
            "file_format": "jpg",
            "vertical_resolution": 640,
            "horizontal_resolution": 640,
        }
    
    # -------------------- Publish Media --------------------
    
    TEST_DATA_PUBLISH_MEDIUM_186 = \
        {
            "id": 186,
            "title": "",
            "medium_metadata": TEST_DATA_MEDIUM_METADATA_15,
            "url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/09ss-fosap/resources/medium_file/5",
            "download_url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/09ss-fosap/resources/medium_file/5?download=true",
            "include_in_player": True,
        }
    TEST_DATA_PUBLISH_MEDIUM_186_MOD = TEST_DATA_PUBLISH_MEDIUM_186 | \
        {
            "visible": True,
        }
    
    TEST_DATA_PUBLISH_MEDIUM_204 = \
        {
            "id": 204,
            "title": "",
            "medium_metadata": TEST_DATA_MEDIUM_METADATA_16,
            "url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/09ss-fosap/resources/medium_file/9",
            "download_url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/09ss-fosap/resources/medium_file/9?download=true",
            "include_in_player": True,
        }
    TEST_DATA_PUBLISH_MEDIUM_204_MOD = TEST_DATA_PUBLISH_MEDIUM_204 | \
        {
            "visible": True,
        }
    
    TEST_DATA_PUBLISH_MEDIUM_1368 = \
        {
            "id": 1368,
            "title": "Super video!",
            "medium_metadata": TEST_DATA_MEDIUM_METADATA_5,
            "url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/07ws-buk/resources/medium_file/6",
            "download_url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/07ws-buk/resources/medium_file/6?download=true",
            "include_in_player": True,
        }
    TEST_DATA_PUBLISH_MEDIUM_1368_MOD = TEST_DATA_PUBLISH_MEDIUM_1368 | \
        {
            "visible": False,
        }
    
    TEST_DATA_PUBLISH_MEDIUM_1495 = \
        {
            "id": 1495,
            "title": "",
            "medium_metadata": TEST_DATA_MEDIUM_METADATA_7,
            "url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/07ws-diskrete/resources/medium_file/7",
            "download_url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/07ws-diskrete/resources/medium_file/7?download=true",
            "include_in_player": True,
        }
    TEST_DATA_PUBLISH_MEDIUM_1495_MOD = TEST_DATA_PUBLISH_MEDIUM_1495 | \
        {
            "visible": True,
        }
    
    TEST_DATA_PUBLISH_MEDIUM_1497 = \
        {
            "id": 1497,
            "title": "",
            "medium_metadata": TEST_DATA_MEDIUM_METADATA_19,
            "url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/11ws-infin/resources/medium_file/8",
            "include_in_player": True,
        }
    TEST_DATA_PUBLISH_MEDIUM_1497_MOD = TEST_DATA_PUBLISH_MEDIUM_1497 | \
        {
            "visible": True,
            "download_url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/11ws-infin/resources/medium_file/8?download=true",
        }
    
    TEST_DATA_PUBLISH_MEDIUM_100003 = \
        {
            "id": 100003,
            "title": "",
            "medium_metadata": TEST_DATA_MEDIUM_METADATA_6,
            "url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/07ws-buk/resources/medium_file/1",
            "include_in_player": False,
        }
    TEST_DATA_PUBLISH_MEDIUM_100003_MOD = TEST_DATA_PUBLISH_MEDIUM_100003 | \
        {
            "visible": True,
        }
    
    TEST_DATA_PUBLISH_MEDIUM_100025 = \
        {
            "id": 100025,
            "title": "",
            "medium_metadata": TEST_DATA_MEDIUM_METADATA_8,
            "url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/07ws-diskrete/resources/medium_file/2",
            "include_in_player": False,
        }
    TEST_DATA_PUBLISH_MEDIUM_100025_MOD = TEST_DATA_PUBLISH_MEDIUM_100025 | \
        {
            "visible": True,
        }
    
    TEST_DATA_PUBLISH_MEDIUM_100186 = \
        {
            "id": 100186,
            "title": "",
            "medium_metadata": TEST_DATA_MEDIUM_METADATA_17,
            "url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/09ss-fosap/resources/medium_file/3",
            "include_in_player": False,
        }
    TEST_DATA_PUBLISH_MEDIUM_100186_MOD = TEST_DATA_PUBLISH_MEDIUM_100186 | \
        {
            "visible": True,
        }
    
    TEST_DATA_PUBLISH_MEDIUM_101186 = \
        {
            "id": 101186,
            "title": "",
            "medium_metadata": TEST_DATA_MEDIUM_METADATA_20,
            "url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/11ws-infin/resources/medium_file/4",
            "include_in_player": False,
        }
    TEST_DATA_PUBLISH_MEDIUM_101186_MOD = TEST_DATA_PUBLISH_MEDIUM_101186 | \
        {
            "visible": True,
        }
    
    TEST_DATA_PUBLISH_MEDIUM_101189 = \
        {
            "id": 101189,
            "title": "",
            "medium_metadata": TEST_DATA_MEDIUM_METADATA_25,
            "url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/09ss-fosap/resources/medium_file/10",
            "download_url": "https://api.video.fsmpi.rwth-aachen.de/api/v0/course/09ss-fosap/resources/medium_file/10?download=true",
            "include_in_player": True,
        }
    TEST_DATA_PUBLISH_MEDIUM_101189_MOD = TEST_DATA_PUBLISH_MEDIUM_101189 | \
        {
            "visible": True,
        }
    
    # -------------------- Lectures --------------------
    
    TEST_DATA_LECTURE_1_NO_CHAP_MEDIA = \
        {
            "id": 1,
            "course_id": 2,
            "title": "Einführung zur Berechenbarkeit",
            "speaker": "",
            "location": "",
            "time": "2007-10-19T12:00:00.000Z",
            "duration": 0,
            "description": "",
            "no_recording": False,
            "livestream_planned": False,
            "authentication_methods": [
                "rwth",
                "fsmpi"
            ],
            "media_duration_sec": None,
        }
    TEST_DATA_LECTURE_1_NO_CHAP_MEDIA_MOD = TEST_DATA_LECTURE_1_NO_CHAP_MEDIA | \
        {
            "visible": True,
            "internal_comment": "",
            "publish_time": None,
        }
    TEST_DATA_LECTURE_1 = TEST_DATA_LECTURE_1_NO_CHAP_MEDIA | {
        "chapters": [],
        "publish_media": []
    }
    TEST_DATA_LECTURE_1_MOD = TEST_DATA_LECTURE_1_NO_CHAP_MEDIA_MOD | {
        "chapters": [],
        "publish_media": []
    }
    
    TEST_DATA_LECTURE_2_NO_CHAP_MEDIA = \
        {
            "id": 2,
            "course_id": 2,
            "title": "Einführung zur Berechenbarkeit",
            "speaker": "",
            "location": "",
            "time": "2007-10-23T08:30:00.000Z",
            "duration": 0,
            "description": "",
            "no_recording": False,
            "livestream_planned": False,
            "authentication_methods": [
                "rwth",
                "fsmpi"
            ],
            "media_duration_sec": None,
        }
    TEST_DATA_LECTURE_2_NO_CHAP_MEDIA_MOD = TEST_DATA_LECTURE_2_NO_CHAP_MEDIA | \
        {
            "visible": True,
            "internal_comment": "",
            "publish_time": None,
        }
    TEST_DATA_LECTURE_2 = TEST_DATA_LECTURE_2_NO_CHAP_MEDIA | {
        "chapters": [],
        "publish_media": []
    }
    TEST_DATA_LECTURE_2_MOD = TEST_DATA_LECTURE_2_NO_CHAP_MEDIA_MOD | {
        "chapters": [],
        "publish_media": []
    }
    
    TEST_DATA_LECTURE_3_NO_CHAP_MEDIA = \
        {
            "id": 3,
            "course_id": 2,
            "title": "Einführung zur Berechenbarkeit",
            "speaker": "",
            "location": "",
            "time": "2007-10-26T12:00:00.000Z",
            "duration": 0,
            "description": "",
            "no_recording": False,
            "livestream_planned": False,
            "authentication_methods": ["public"],
            "media_duration_sec": 5243,
        }
    TEST_DATA_LECTURE_3_NO_CHAP_MEDIA_MOD = TEST_DATA_LECTURE_3_NO_CHAP_MEDIA | \
        {
            "visible": True,
            "internal_comment": "",
            "publish_time": None,
        }
    TEST_DATA_LECTURE_3 = TEST_DATA_LECTURE_3_NO_CHAP_MEDIA | {
        "chapters": [TEST_DATA_CHAPTER_5],
        "publish_media": [TEST_DATA_PUBLISH_MEDIUM_100003]
    }
    TEST_DATA_LECTURE_3_MOD = TEST_DATA_LECTURE_3_NO_CHAP_MEDIA_MOD | {
        "chapters": [TEST_DATA_CHAPTER_5_MOD],
        "publish_media": [TEST_DATA_PUBLISH_MEDIUM_1368_MOD, TEST_DATA_PUBLISH_MEDIUM_100003_MOD]
    }
    
    TEST_DATA_LECTURE_25_NO_CHAP_MEDIA = \
        {
            "id": 25,
            "course_id": 3,
            "title": "Graphentheorie: Grundbegriffe, Datenstrukturen, Algorithmus für Breitensuche",
            "speaker": "",
            "location": "",
            "time": "2007-12-11T13:30:00.000Z",
            "duration": 0,
            "description": "",
            "no_recording": False,
            "livestream_planned": False,
            "authentication_methods": ["public"],
            "media_duration_sec": 5420,
        }
    TEST_DATA_LECTURE_25_NO_CHAP_MEDIA_MOD = TEST_DATA_LECTURE_25_NO_CHAP_MEDIA | \
        {
            "visible": True,
            "internal_comment": "",
            "publish_time": "2007-12-12T19:12:04.000Z",
        }
    TEST_DATA_LECTURE_25 = TEST_DATA_LECTURE_25_NO_CHAP_MEDIA | {
        "chapters": [TEST_DATA_CHAPTER_1, TEST_DATA_CHAPTER_2],
        "publish_media": [TEST_DATA_PUBLISH_MEDIUM_1495, TEST_DATA_PUBLISH_MEDIUM_100025]
    }
    TEST_DATA_LECTURE_25_MOD = TEST_DATA_LECTURE_25_NO_CHAP_MEDIA_MOD | {
        "chapters": [TEST_DATA_CHAPTER_1_MOD, TEST_DATA_CHAPTER_2_MOD],
        "publish_media": [TEST_DATA_PUBLISH_MEDIUM_1495_MOD, TEST_DATA_PUBLISH_MEDIUM_100025_MOD]
    }
    
    _TEST_DATA_LECTURE_26_NO_CHAP_MEDIA = \
        {
            "id": 26,
            "course_id": 3,
            "title": "Hamiltonkreis, Eulertour, Eulerweg",
            "speaker": "",
            "location": "",
            "time": "2007-12-18T13:30:00.000Z",
            "duration": 0,
            "description": "",
            "no_recording": False,
            "livestream_planned": False,
            "authentication_methods": [],
            "media_duration_sec": None,
        }
    TEST_DATA_LECTURE_26_NO_CHAP_MEDIA_MOD = _TEST_DATA_LECTURE_26_NO_CHAP_MEDIA | \
        {
            "visible": False,
            "internal_comment": "",
            "publish_time": None,
        }
    TEST_DATA_LECTURE_26_MOD = TEST_DATA_LECTURE_26_NO_CHAP_MEDIA_MOD | {
        "chapters": [TEST_DATA_CHAPTER_3_MOD],
        "publish_media": []
    }
    
    TEST_DATA_LECTURE_29_NO_CHAP_MEDIA = \
        {
            "id": 29,
            "course_id": 3,
            "title": "Modulare Arithmetik: Gruppe, Ring, Körper, abelsche Gruppe, Untergruppe, Einheitengruppe. Restklassenringe, Primzahl.",
            "speaker": "",
            "location": "",
            "time": "2008-01-17T08:15:00.000Z",
            "duration": 0,
            "description": "",
            "no_recording": False,
            "livestream_planned": False,
            "authentication_methods": ["password"],
            "media_duration_sec": None,
        }
    TEST_DATA_LECTURE_29_NO_CHAP_MEDIA_MOD = TEST_DATA_LECTURE_29_NO_CHAP_MEDIA | \
        {
            "visible": True,
            "internal_comment": "",
            "publish_time": None,
        }
    TEST_DATA_LECTURE_29 = TEST_DATA_LECTURE_29_NO_CHAP_MEDIA | {
        "chapters": [],
        "publish_media": []
    }
    TEST_DATA_LECTURE_29_MOD = TEST_DATA_LECTURE_29_NO_CHAP_MEDIA_MOD | {
        "chapters": [],
        "publish_media": []
    }
    
    TEST_DATA_LECTURE_185_NO_CHAP_MEDIA = \
        {
            "id": 185,
            "course_id": 13,
            "title": "Organisatorisches, Motivation, Künstliche Pflanzen, Alphabete, Wörter, Sprachen",
            "speaker": "",
            "location": "",
            "time": "2009-04-16T10:00:00.000Z",
            "duration": 90,
            "description": "Sorry für den schlechten Ton",
            "no_recording": False,
            "livestream_planned": False,
            "authentication_methods": [
                "public"
            ],
            "media_duration_sec": None,
        }
    TEST_DATA_LECTURE_185_NO_CHAP_MEDIA_MOD = TEST_DATA_LECTURE_185_NO_CHAP_MEDIA | \
        {
            "visible": True,
            "internal_comment": "",
            "publish_time": None,
        }
    TEST_DATA_LECTURE_185 = TEST_DATA_LECTURE_185_NO_CHAP_MEDIA | {
        "chapters": [],
        "publish_media": []
    }
    TEST_DATA_LECTURE_185_MOD = TEST_DATA_LECTURE_185_NO_CHAP_MEDIA_MOD | {
        "chapters": [],
        "publish_media": []
    }
    
    TEST_DATA_LECTURE_186_NO_CHAP_MEDIA = \
        {
            "id": 186,
            "course_id": 13,
            "title": "Alphabete, Wörter, Sprachen, Reguläre Ausdrücke",
            "speaker": "",
            "location": "",
            "time": "2009-04-21T08:15:00.000Z",
            "duration": 45,
            "description": "",
            "no_recording": False,
            "livestream_planned": False,
            "authentication_methods": [
                "public"
            ],
            "media_duration_sec": 5431,
        }
    TEST_DATA_LECTURE_186_NO_CHAP_MEDIA_MOD = TEST_DATA_LECTURE_186_NO_CHAP_MEDIA | \
        {
            "visible": True,
            "internal_comment": "",
            "publish_time": "2009-05-18T03:13:20.000Z",
        }
    TEST_DATA_LECTURE_186 = TEST_DATA_LECTURE_186_NO_CHAP_MEDIA | {
        "chapters": [],
        "publish_media": [
            TEST_DATA_PUBLISH_MEDIUM_186,
            TEST_DATA_PUBLISH_MEDIUM_204,
            TEST_DATA_PUBLISH_MEDIUM_100186,
            TEST_DATA_PUBLISH_MEDIUM_101189,
        ]
    }
    TEST_DATA_LECTURE_186_MOD = TEST_DATA_LECTURE_186_NO_CHAP_MEDIA_MOD | {
        "chapters": [],
        "publish_media": [
            TEST_DATA_PUBLISH_MEDIUM_186_MOD,
            TEST_DATA_PUBLISH_MEDIUM_204_MOD,
            TEST_DATA_PUBLISH_MEDIUM_100186_MOD,
            TEST_DATA_PUBLISH_MEDIUM_101189_MOD,
        ]
    }
    
    TEST_DATA_LECTURE_1186_NO_CHAP_MEDIA = \
        {
            "id": 1186,
            "course_id": 62,
            "title": "Einführung, I. Grundlagen",
            "speaker": "",
            "location": "Aula",
            "time": "2011-10-10T18:30:00.000Z",
            "duration": 90,
            "description": "",
            "no_recording": False,
            "livestream_planned": False,
            "authentication_methods": ["moodle"],
            "media_duration_sec": 5001,
        }
    TEST_DATA_LECTURE_1186_NO_CHAP_MEDIA_MOD = TEST_DATA_LECTURE_1186_NO_CHAP_MEDIA | \
        {
            "visible": True,
            "internal_comment": "",
            "publish_time": "2011-10-17T14:33:45.000Z",
        }
    TEST_DATA_LECTURE_1186 = TEST_DATA_LECTURE_1186_NO_CHAP_MEDIA | {
        "chapters": [],
        "publish_media": [TEST_DATA_PUBLISH_MEDIUM_1497, TEST_DATA_PUBLISH_MEDIUM_101186]
    }
    TEST_DATA_LECTURE_1186_MOD = TEST_DATA_LECTURE_1186_NO_CHAP_MEDIA_MOD | {
        "chapters": [],
        "publish_media": [TEST_DATA_PUBLISH_MEDIUM_1497_MOD, TEST_DATA_PUBLISH_MEDIUM_101186_MOD]
    }
    
    TEST_DATA_LECTURE_1187_NO_CHAP_MEDIA = \
        {
            "id": 1187,
            "course_id": 62,
            "title": "",
            "speaker": "",
            "location": "Aula",
            "time": "2011-10-17T18:30:00.000Z",
            "duration": 90,
            "description": "noch kein Titel",
            "no_recording": False,
            "livestream_planned": False,
            "authentication_methods": ["moodle"],
            "media_duration_sec": None,
        }
    TEST_DATA_LECTURE_1187_NO_CHAP_MEDIA_MOD = TEST_DATA_LECTURE_1187_NO_CHAP_MEDIA | \
        {
            "visible": True,
            "internal_comment": "",
            "publish_time": None,
        }
    TEST_DATA_LECTURE_1187 = TEST_DATA_LECTURE_1187_NO_CHAP_MEDIA | {
        "chapters": [],
        "publish_media": []
    }
    TEST_DATA_LECTURE_1187_MOD = TEST_DATA_LECTURE_1187_NO_CHAP_MEDIA_MOD | {
        "chapters": [],
        "publish_media": []
    }
    
    TEST_DATA_LECTURE_1188_NO_CHAP_MEDIA = \
        {
            "id": 1188,
            "course_id": 62,
            "title": "",
            "speaker": "",
            "location": "Aula",
            "time": "2050-10-24T18:30:00.000Z",
            "duration": 90,
            "description": "noch kein Titel",
            "no_recording": False,
            "livestream_planned": False,
            "authentication_methods": ["moodle"],
            "media_duration_sec": None,
        }
    TEST_DATA_LECTURE_1188_NO_CHAP_MEDIA_MOD = TEST_DATA_LECTURE_1188_NO_CHAP_MEDIA | \
        {
            "visible": True,
            "internal_comment": "",
            "publish_time": None,
        }
    TEST_DATA_LECTURE_1188 = TEST_DATA_LECTURE_1188_NO_CHAP_MEDIA | {
        "chapters": [],
        "publish_media": []
    }
    TEST_DATA_LECTURE_1188_MOD = TEST_DATA_LECTURE_1188_NO_CHAP_MEDIA_MOD | {
        "chapters": [],
        "publish_media": []
    }
    
    # -------------------- Courses --------------------
    
    TEST_DATA_COURSE_2_NO_LEC = \
        {
            "id": 2,
            "handle": "07ws-buk",
            "full_name": "Berechenbarkeit und Komplexität",
            "short_name": "BuK",
            "organizer": "Prof. Vöcking",
            "topic": "Informatik",
            "description": "Seite zur Veranstaltung...",
            "show_chapters_on_course": False,
            "allow_embed": True,
            "semester": "2007ws",
            "default_authentication_methods": [
                "rwth",
                "fsmpi"
            ],
            "authentication_information": "",
        }
    TEST_DATA_COURSE_2_NO_LEC_MOD = TEST_DATA_COURSE_2_NO_LEC | \
        {
            "listed": True,
            "visible": True,
            "internal_comment": "",
        }
    TEST_DATA_COURSE_2 = TEST_DATA_COURSE_2_NO_LEC | {
        "lectures": [TEST_DATA_LECTURE_1, TEST_DATA_LECTURE_2, TEST_DATA_LECTURE_3]
    }
    TEST_DATA_COURSE_2_MOD = TEST_DATA_COURSE_2_NO_LEC_MOD | {
        "lectures": [TEST_DATA_LECTURE_1_MOD, TEST_DATA_LECTURE_2_MOD, TEST_DATA_LECTURE_3_MOD]
    }
    
    TEST_DATA_COURSE_3_NO_LEC = \
        {
            "id": 3,
            "handle": "07ws-diskrete",
            "full_name": "Diskrete Strukturen",
            "short_name": "Diskrete",
            "organizer": "Prof. Hiß",
            "topic": "Informatik",
            "description": "Von dieser Vorlesungsreihe fehlen die ersten zwei Monate. Wenn wir die Gelegenheit bekommen, filmen wir gerne nochmal.",
            "show_chapters_on_course": False,
            "allow_embed": False,
            "semester": "2007ws",
            "default_authentication_methods": [],
            "authentication_information": "",
        }
    TEST_DATA_COURSE_3_NO_LEC_MOD = TEST_DATA_COURSE_3_NO_LEC | \
        {
            "listed": True,
            "visible": True,
            "internal_comment": "",
        }
    TEST_DATA_COURSE_3 = TEST_DATA_COURSE_3_NO_LEC | {
        "lectures": [TEST_DATA_LECTURE_25, TEST_DATA_LECTURE_29]
    }
    TEST_DATA_COURSE_3_MOD = TEST_DATA_COURSE_3_NO_LEC_MOD | {
        "lectures": [TEST_DATA_LECTURE_25_MOD, TEST_DATA_LECTURE_26_MOD, TEST_DATA_LECTURE_29_MOD]
    }
    
    _TEST_DATA_COURSE_13_NO_LEC = \
        {
            "id": 13,
            "handle": "09ss-fosap",
            "full_name": "Formale Systeme, Automaten, Prozesse",
            "short_name": "FoSAP",
            "organizer": "Prof. Rossmanith",
            "topic": "Informatik",
            "description": "Seite des Lehrstuhls ...",
            "show_chapters_on_course": False,
            "allow_embed": True,
            "semester": "2009ss",
            "default_authentication_methods": [
                "public"
            ],
            "authentication_information": "",
        }
    TEST_DATA_COURSE_13_NO_LEC_MOD = _TEST_DATA_COURSE_13_NO_LEC | \
        {
            "listed": True,
            "visible": False,
            "internal_comment": "",
        }
    TEST_DATA_COURSE_13_MOD = TEST_DATA_COURSE_13_NO_LEC_MOD | {
        "lectures": [TEST_DATA_LECTURE_185_MOD, TEST_DATA_LECTURE_186_MOD]
    }
    
    TEST_DATA_COURSE_62_NO_LEC = \
        {
            "id": 62,
            "handle": "11ws-infin",
            "full_name": "Investition und Finanzierung",
            "short_name": "InFin",
            "organizer": "Prof. Breuer",
            "topic": "BWL",
            "description": "Seite im Campus ...",
            "show_chapters_on_course": False,
            "allow_embed": True,
            "semester": "2011ws",
            "default_authentication_methods": [
                "moodle"
            ],
            "authentication_information": "",
        }
    TEST_DATA_COURSE_62_NO_LEC_MOD = TEST_DATA_COURSE_62_NO_LEC | \
        {
            "listed": False,
            "visible": True,
            "internal_comment": "",
        }
    TEST_DATA_COURSE_62 = TEST_DATA_COURSE_62_NO_LEC | {
        "lectures": [TEST_DATA_LECTURE_1186, TEST_DATA_LECTURE_1187, TEST_DATA_LECTURE_1188]
    }
    TEST_DATA_COURSE_62_MOD = TEST_DATA_COURSE_62_NO_LEC_MOD | {
        "lectures": [TEST_DATA_LECTURE_1186_MOD, TEST_DATA_LECTURE_1187_MOD, TEST_DATA_LECTURE_1188_MOD]
    }
    
    # -------------------- Announcements --------------------
    
    TEST_DATA_ANNOUNCEMENT_1 = \
        {
            "id": 1,
            "text": "Test Ankündigung",
            "type": "info",
            "page_visibility": "only_main_page",
        }
    TEST_DATA_ANNOUNCEMENT_1_MOD = TEST_DATA_ANNOUNCEMENT_1 | \
        {
            "publish_time": "2024-01-26T00:00:00.000Z",
            "expiration_time": "2050-03-25T00:00:00.000Z",
            "visible": True,
        }
    
    TEST_DATA_ANNOUNCEMENT_2 = \
        {
            "id": 2,
            "text": "Neue Ankündigung",
            "type": "info",
            "page_visibility": "all_pages",
        }
    TEST_DATA_ANNOUNCEMENT_2_MOD = TEST_DATA_ANNOUNCEMENT_2 | \
        {
            "publish_time": "2024-03-01T00:00:00.000Z",
            "expiration_time": None,
            "visible": True,
        }
    
    _TEST_DATA_ANNOUNCEMENT_3 = \
        {
            "id": 3,
            "text": "Versteckte Ankündigung",
            "type": "info",
            "page_visibility": "all_pages",
        }
    TEST_DATA_ANNOUNCEMENT_3_MOD = _TEST_DATA_ANNOUNCEMENT_3 | \
        {
            "publish_time": None,
            "expiration_time": None,
            "visible": False,
        }
    
    _TEST_DATA_ANNOUNCEMENT_4 = \
        {
            "id": 4,
            "text": "Upcoming Announcement",
            "type": "warning",
            "page_visibility": "all_pages",
        }
    TEST_DATA_ANNOUNCEMENT_4_MOD = _TEST_DATA_ANNOUNCEMENT_4 | \
        {
            "publish_time": "2050-03-22T00:00:00.000Z",
            "expiration_time": None,
            "visible": True,
        }
    
    _TEST_DATA_ANNOUNCEMENT_5 = \
        {
            "id": 5,
            "text": "Expired Announcement",
            "type": "info",
            "page_visibility": "only_main_page",
        }
    TEST_DATA_ANNOUNCEMENT_5_MOD = _TEST_DATA_ANNOUNCEMENT_5 | \
        {
            "publish_time": "2024-01-26T00:00:00.000Z",
            "expiration_time": "2024-02-01T00:00:00.000Z",
            "visible": True,
        }
    
    # -------------------- Featured --------------------
    
    TEST_DATA_FEATURED_1 = \
        {
            "id": 1,
            "type": "plain",
            "title": "Video AG",
            "text": "Wir machen Vorlesungsvideos",
        }
    TEST_DATA_FEATURED_1_MOD = TEST_DATA_FEATURED_1 | \
        {
            "visible": True,
            "display_priority": 2,
        }
    
    _TEST_DATA_FEATURED_2 = \
        {
            "id": 2,
            "type": "image",
            "title": "Image Panel",
            "text": "",
            "image_url": "https://example.com/image.jpg",
        }
    TEST_DATA_FEATURED_2_MOD = _TEST_DATA_FEATURED_2 | \
        {
            "visible": False,
            "display_priority": 1,
        }
    
    TEST_DATA_FEATURED_3 = \
        {
            "id": 3,
            "type": "course",
            "title": "Course Panel",
            "text": "Vom Winter 07",
            "course_id": None,
        }
    TEST_DATA_FEATURED_3_MOD = TEST_DATA_FEATURED_3 | \
        {
            "visible": True,
            "display_priority": -1,
            "course_id": 13,
        }
    
    TEST_DATA_FEATURED_4 = \
        {
            "id": 4,
            "type": "lecture",
            "title": "Lecture Panel",
            "text": "Watch this!",
            "lecture": TEST_DATA_LECTURE_3,
        }
    TEST_DATA_FEATURED_4_MOD = TEST_DATA_FEATURED_4 | \
        {
            "lecture": TEST_DATA_LECTURE_3_MOD,
            "visible": True,
            "display_priority": 4,
        }