openstax-cms
The OpenStax CMS, built using Wagtail on top of Django.
File Explorer
Download Latest Version (.zip)- tests.yml
- dependabot.yml
- __init__.py
- tests.py
- urls.py
- views.py
- __init__.py
- seed_ai_prompts.py
- __init__.py
- 0001_initial.py
- __init__.py
- __init__.py
- test_ci_safety.py
- test_content_feedback_provider.py
- test_image_description.py
- test_panels.py
- test_related_pages.py
- test_rich_text_features.py
- test_seed_prompts.py
- test_settings.py
- __init__.py
- agent_patches.py
- apps.py
- models.py
- panel_patches.py
- prompts.py
- README.md
- vector_index.py
- 0001_initial.py
- 0002_customizationrequest.py
- 0003_auto_20200923_1328.py
- 0004_customizationrequest_complete.py
- 0005_customizationrequest_created.py
- 0006_customizationrequest_book.py
- 0007_featureflag.py
- 0008_alter_featureflag_name.py
- 0009_auto_20220203_1256.py
- 0010_alter_featureflag_name.py
- 0011_webviewsettings.py
- 0012_alter_webviewsettings_options.py
- 0013_delete_progresstracker.py
- __init__.py
- __init__.py
- admin.py
- models.py
- serializers.py
- signals.py
- tests.py
- urls.py
- views.py
- wagtail_hooks.py
- __init__.py
- test_drafts.py
- test_migrate_script.py
- test_migration.py
- test_views_migration.py
- __init__.py
- apps.py
- drafts.py
- migration.py
- permissions.py
- routing_rules.py
- urls.py
- views.py
- add_missing_licenses.py
- backfill_remediation_status.py
- convert_book_images.py
- 0001_initial_squashed_0100_videofacultyresources.py
- 0002_auto_20200720_1527.py
- 0101_auto_20200716_1553.py
- 0102_auto_20200716_1605.py
- 0103_auto_20200722_1544.py
- 0103_merge_20200723_1300.py
- 0104_book_give_today.py
- 0105_merge_20200727_1405.py
- 0106_auto_20200728_1547.py
- 0107_auto_20200813_1613.py
- 0108_auto_20200910_1245.py
- 0109_customizationrequest.py
- 0109_remove_book_give_today.py
- 0110_customizationform.py
- 0111_delete_customizationform.py
- 0112_delete_customizationrequest.py
- 0113_merge_20200930_1001.py
- 0114_book_customization_form_content.py
- 0115_auto_20200930_1205.py
- 0116_auto_20200930_1237.py
- 0117_auto_20201002_1301.py
- 0118_auto_20201014_1249.py
- 0119_auto_20201014_1251.py
- 0120_auto_20201016_1253.py
- 0121_auto_20201020_1707.py
- 0122_auto_20201021_1050.py
- 0123_book_support_statement.py
- 0124_auto_20201021_1100.py
- 0125_remove_book_table_of_contents.py
- 0126_auto_20210127_1042.py
- 0127_remove_book_ally_content.py
- 0128_remove_book_coming_soon.py
- 0129_auto_20210709_1624.py
- 0130_remove_book_errata_content.py
- 0131_book_translations.py
- 0132_bookindex_translations.py
- 0133_bookcategories_bookcategory.py
- 0134_alter_book_license_name.py
- 0135_alter_book_license_name.py
- 0136_auto_20220915_0950.py
- 0137_alter_book_salesforce_book_id.py
- 0138_alter_book_authors_alter_book_bookstore_content_and_more.py
- 0138_auto_20230112_1426.py
- 0139_auto_20230112_1426.py
- 0140_merge_20230118_1543.py
- 0141_remove_book_k12_subject_studentresources_k12.py
- 0142_remove_book_digital_isbn_10_and_more.py
- 0143_remove_studentresources_k12_and_more.py
- 0144_book_assignable_book_book_assignable_book_link.py
- 0145_remove_book_assignable_book_link.py
- 0146_alter_facultyresources_link_external_and_more.py
- 0147_alter_facultyresources_link_external_and_more.py
- 0148_book_book_uuid_alter_book_cnx_id.py
- 0149_alter_book_book_state.py
- 0150_book_amazon_iframe.py
- 0151_book_promote_snippet_promotesnippets.py
- 0152_alter_book_promote_snippet_delete_promotesnippets.py
- 0153_book_polish_site_link.py
- 0154_alter_book_salesforce_abbreviation_and_more.py
- 0155_alter_book_book_cover_text_color_and_more.py
- 0156_book_content_warning.py
- 0157_alter_book_print_isbn_13_and_more.py
- 0158_alter_book_cover_color.py
- 0159_book_assignable_isbn_13.py
- 0160_book_require_login_message.py
- 0161_book_audiobook_link.py
- 0162_facultyresources_hidden_studentresources_hidden.py
- 0163_bookrelatedpage.py
- 0164_alter_book_videos.py
- 0165_alter_book_book_uuid_alter_book_cnx_id.py
- 0166_remove_book_high_resolution_pdf_and_more.py
- 0167_remove_book_amazon_iframe_and_more.py
- 0168_remove_book_chegg_link_remove_book_chegg_link_text_and_more.py
- 0169_bookcallout.py
- 0170_remove_book_rex_callout_blurb_and_more.py
- 0171_bookcallout_unique_bookcallout_per_locale.py
- 0172_book_banner_image_book_cover_image_alter_book_cover_and_more.py
- 0173_alter_book_salesforce_abbreviation_and_more.py
- 0174_remove_orientationfacultyresource_creator_fest_resource.py
- 0175_book_remediation_status_and_more.py
- 0176_videofacultyresource_remediation_status.py
- __init__.py
- __init__.py
- constants.py
- models.py
- serializers.py
- tests.py
- urls.py
- views.py
- wagtail_hooks.py
- bash
- entrypoint
- start
- flex-draft-save.md
- flex-migration.md
- app-design.md
- openstax-cms-db.svg
- posthog-cms-implementation-plan.md
- posthog-experiments-measurement.md
- posthog-experiments-runbook.md
- posthog-webview-implementation-plan.md
- refresh-from-prod-runbook.md
- wagtail-transfer-page-sync.md
- 0001_initial.py
- 0002_donationpopup.py
- 0003_auto_20210607_1320.py
- 0004_auto_20210609_1344.py
- 0005_auto_20211021_1045.py
- 0006_fundraiser.py
- 0007_auto_20220516_2113.py
- 0008_thankyounote_source.py
- 0009_alter_thankyounote_options.py
- 0009_thankyounote_salesforce_id.py
- 0010_merge_20250110_1518.py
- 0011_sitebanner.py
- 0012_thankyounote_account_uuid.py
- __init__.py
- __init__.py
- admin.py
- apps.py
- models.py
- serializers.py
- signals.py
- tests.py
- urls.py
- views.py
- wagtail_hooks.py
- 0001_initial.py
- 0002_auto_20161121_1453.py
- 0003_errata_archived.py
- 0004_auto_20161206_1115.py
- 0005_errata_supporting_documentation.py
- 0006_remove_errata_supporting_documentation.py
- 0007_externaldocumentation_internaldocumentation.py
- 0008_auto_20161212_1309.py
- 0009_auto_20170124_1338.py
- 0010_auto_20170126_1218.py
- 0011_auto_20170131_1201.py
- 0012_auto_20170202_1423.py
- 0013_auto_20170203_0955.py
- 0014_auto_20170203_1420.py
- 0015_auto_20170206_1125.py
- 0016_errata_is_assessment_errata.py
- 0017_auto_20170419_1228.py
- 0018_auto_20170919_1140.py
- 0019_auto_20171019_1158.py
- 0020_errata_duplicate_id.py
- 0021_auto_20180125_1128.py
- 0022_auto_20180205_1505.py
- 0023_auto_20180222_1002.py
- 0024_errata_assessment_id.py
- 0025_auto_20180301_1107.py
- 0026_auto_20180308_0943.py
- 0027_errata_number_of_errors.py
- 0028_auto_20180830_1220.py
- 0029_auto_20181002_1052.py
- 0030_auto_20181130_1235.py
- 0031_blockedusers.py
- 0032_auto_20190627_1548.py
- 0033_auto_20190701_1154.py
- 0034_auto_20190730_1153.py
- 0035_emailtext.py
- 0036_errata_junk.py
- 0037_auto_20191210_1419.py
- 0038_auto_20200127_1318.py
- 0039_auto_20200213_1248.py
- 0039_auto_20200213_1418.py
- 0040_merge_20200214_0945.py
- 0041_auto_20200326_1531.py
- 0042_auto_20200401_1500.py
- 0043_auto_20200414_1517.py
- 0044_auto_20200714_1429.py
- 0045_auto_20200721_0959.py
- 0046_auto_20200722_1225.py
- 0047_auto_20200804_1200.py
- 0048_auto_20200807_1056.py
- 0049_alter_errata_status.py
- 0050_auto_20220207_1057.py
- 0051_auto_20220516_2113.py
- 0052_alter_errata_status.py
- 0053_alter_errata_resource.py
- 0054_alter_errata_resource.py
- 0055_remove_errata_accounts_user_email_and_more.py
- 0056_alter_errata_options.py
- __init__.py
- errata-admin-ui.js
- email.html
- email.txt
- __init__.py
- admin.py
- forms.py
- models.py
- serializers.py
- tests.py
- urls.py
- views.py
- wagtail_hooks.py
- books_license.yaml
- books_no_cnx_id.yaml
- books_prealgebra.yaml
- books_univ_physics.yaml
- contact.yaml
- partners.yaml
- README.md
- retired_book.yaml
- 0001_initial.py
- 0002_auto_20160906_1344.py
- 0003_auto_20160906_1348.py
- 0004_auto_20160906_1403.py
- 0005_remove_stickynote_header.py
- 0006_auto_20161213_1054.py
- 0007_footer.py
- 0008_auto_20170822_0956.py
- 0009_auto_20170912_1337.py
- 0010_auto_20170914_1600.py
- 0011_mail.py
- 0012_auto_20171009_1008.py
- 0013_auto_20180515_1603.py
- 0014_auto_20180607_1351.py
- 0015_auto_20180816_1056.py
- 0016_cloudfrontdistribution.py
- 0017_auto_20200325_1058.py
- 0018_auto_20200727_1047.py
- 0019_stickynote_show_popup.py
- 0020_givetoday.py
- 0021_auto_20201002_1012.py
- 0022_emergencymessaging_delete_stickynote.py
- __init__.py
- wagtail_transfer_chooser.css
- __init__.py
- apps.py
- checks.py
- functions.py
- models.py
- signals.py
- tests.py
- views.py
- wagtail_hooks.py
- 0001_initial.py
- __init__.py
- __init__.py
- admin.py
- functions.py
- models.py
- tests.py
- 0001_initial.py
- 0002_newsarticle_tags.py
- 0003_auto_20160517_1521.py
- 0004_newsarticle_press_kit.py
- 0005_auto_20160523_1023.py
- 0006_auto_20160523_1042.py
- 0007_auto_20160523_1049.py
- 0008_newsarticle_author.py
- 0009_auto_20160614_1024.py
- 0010_auto_20160614_1032.py
- 0011_auto_20160614_1034.py
- 0012_auto_20160614_1037.py
- 0013_auto_20160616_1033.py
- 0014_auto_20160617_1140.py
- 0015_remove_newsarticle_heading.py
- 0016_newsarticle_heading.py
- 0017_auto_20161018_0757.py
- 0018_auto_20161025_1300.py
- 0019_experts_expertspr_pressindex_pressrelease.py
- 0020_auto_20180509_1016.py
- 0021_auto_20180515_1603.py
- 0022_auto_20180515_1612.py
- 0023_missionstatement_missionstatements.py
- 0024_auto_20180517_1102.py
- 0025_auto_20180517_1426.py
- 0026_auto_20180517_1434.py
- 0027_auto_20180517_1443.py
- 0028_remove_pressindex_mentions.py
- 0029_pressindex_mentions.py
- 0030_auto_20180521_1137.py
- 0031_auto_20180523_0934.py
- 0032_auto_20180705_1947.py
- 0033_auto_20181113_1249.py
- 0034_auto_20191008_1546.py
- 0035_auto_20210226_1150.py
- 0036_blogtype_contenttype.py
- 0037_newsarticle_collections.py
- 0038_auto_20220420_1547.py
- 0039_auto_20220427_1107.py
- 0040_alter_newsarticle_content_types.py
- 0041_alter_newsarticletag_tag.py
- 0041_auto_20220517_1353.py
- 0042_auto_20220520_0855.py
- 0042_merge_20220519_1249.py
- 0043_alter_newsarticle_featured_video.py
- 0044_auto_20220520_1158.py
- 0045_merge_20220520_1523.py
- 0046_auto_20220616_1349.py
- 0047_alter_newsarticle_article_subjects_and_more.py
- 0048_pressindex_faqs_pressindex_infographic_image_and_more.py
- 0049_pressindex_about_alter_pressindex_mentions.py
- 0050_newsindex_display_footer_and_more.py
- 0051_alter_pressindex_faqs.py
- 0052_newsarticlerelatedpage.py
- 0053_alter_newsarticle_body_alter_pressindex_faqs_and_more.py
- 0054_alter_pressindex_faqs.py
- 0056_alter_pressindex_faqs.py
- 0057_alter_pressindex_faqs.py
- 0058_alter_pressindex_faqs.py
- 0059_alter_pressindex_faqs.py
- 0060_alter_pressindex_faqs.py
- 0061_alter_pressindex_faqs.py
- __init__.py
- __init__.py
- feeds.py
- models.py
- search.py
- tests.py
- urls.py
- views.py
- __init__.py
- base.py
- docker.py
- local.py.example
- test.py
- __init__.py
- api.py
- api_fields.py
- functions.py
- middleware.py
- preview.py
- tests.py
- urls.py
- wagtail_transfer_patches.py
- wagtail_transfer_security.py
- wagtail_transfer_urls.py
- wsgi.py
- 0001_initial.py
- 0002_create_user_profile.py
- __init__.py
- __init__.py
- models.py
- 0001_initial.py
- 0002_alter_menus_options_alter_menus_menu.py
- 0003_menus_feature_flag_menus_flag_value_menus_key_and_more.py
- 0004_menus_partial_url.py
- 0005_alter_menus_options_menus_sort_order_and_more.py
- 0006_drop_orphan_component_key_region.py
- 0007_alter_menus_name.py
- 0008_alter_menus_name_remove_unique.py
- __init__.py
- __init__.py
- models.py
- serializers.py
- signals.py
- tests.py
- urls.py
- views.py
- wagtail_hooks.py
- __init__.py
- create_subject_pages.py
- create_subjects_page.py
- refresh_from_prod_fixup.py
- __init__.py
- 0001_initial_squashed_0232_auto_20200623_0848.py
- 0002_auto_20200813_1540.py
- 0002_auto_20200928_1405.py
- 0003_merge_20200930_1001.py
- 0004_delete_roverpage.py
- 0004_llphpage.py
- 0005_auto_20201105_1414.py
- 0006_auto_20201105_1620.py
- 0007_merge_20201106_1444.py
- 0008_tutormarketing.py
- 0009_auto_20201204_1518.py
- 0010_auto_20201204_1520.py
- 0011_auto_20201204_1524.py
- 0012_auto_20201204_1525.py
- 0013_auto_20201204_1532.py
- 0014_auto_20201207_1355.py
- 0015_delete_card.py
- 0016_auto_20201209_0842.py
- 0017_tutorlanding.py
- 0018_auto_20210126_0947.py
- 0019_auto_20210126_1056.py
- 0020_auto_20210126_1314.py
- 0021_auto_20210126_1318.py
- 0022_auto_20210126_1323.py
- 0023_auto_20210126_1333.py
- 0024_auto_20210126_1336.py
- 0025_auto_20210126_1519.py
- 0026_auto_20210126_1521.py
- 0027_auto_20210126_1607.py
- 0028_auto_20210127_1109.py
- 0029_auto_20210127_1300.py
- 0030_auto_20210127_1302.py
- 0031_auto_20210127_1304.py
- 0032_auto_20210127_1347.py
- 0033_auto_20210127_1356.py
- 0034_auto_20210127_1550.py
- 0035_auto_20210127_1612.py
- 0036_auto_20210127_1731.py
- 0037_auto_20210426_1315.py
- 0038_auto_20210427_1025.py
- 0039_auto_20210427_1415.py
- 0040_auto_20210505_1339.py
- 0041_auto_20210506_1329.py
- 0042_auto_20210506_1347.py
- 0043_auto_20210506_1453.py
- 0044_auto_20210513_1515.py
- 0045_auto_20210517_0957.py
- 0046_auto_20210628_1632.py
- 0047_institutionalpartnership_application_link.py
- 0048_auto_20210830_1133.py
- 0049_auto_20211215_1046.py
- 0050_auto_20211216_1220.py
- 0051_auto_20220207_1342.py
- 0051_subjects.py
- 0052_alter_supporters_funder_groups.py
- 0052_subject_subjectorderable.py
- 0053_alter_supporters_funder_groups.py
- 0053_subject_page_description.py
- 0054_alter_supporters_funder_groups.py
- 0055_supporters_disclaimer.py
- 0056_merge_20220208_1013.py
- 0057_merge_20220223_1247.py
- 0058_alter_subject_tutor_ad.py
- 0059_alter_supporters_funder_groups.py
- 0060_auto_20220412_1344.py
- 0061_alter_impactstory_body.py
- 0062_alter_impactstory_body.py
- 0063_auto_20220614_1525.py
- 0064_formheadings.py
- 0065_auto_20220823_1112.py
- 0066_allylogos.py
- 0067_alter_aboutuspage_what_cards_and_more.py
- 0067_learningresearchpage.py
- 0068_k12mainpage_k12subject.py
- 0069_merge_20230118_1543.py
- 0069_remove_learningresearchpage_mission_header_and_more.py
- 0070_alter_k12mainpage_faqs_and_more.py
- 0071_merge_20230202_1030.py
- 0072_k12mainpage_subject_list_default_and_more.py
- 0073_assignable.py
- 0074_remove_assignable_admin_button_text_and_more.py
- 0075_remove_assignable_available_courses_and_more.py
- 0076_remove_assignable_heading_and_more.py
- 0077_assignable_add_assignable_cta_button_text_and_more.py
- 0078_rename_add_assignable_header_assignable_faq_header_and_more.py
- 0079_remove_assignable_section_2_image_and_more.py
- 0080_homepage_k12_cta_button_text_and_more.py
- 0081_remove_allylogos_openstax_logos_and_more.py
- 0082_remove_webinarpage_description_and_more.py
- 0083_alter_k12mainpage_testimonials.py
- 0084_customizablepage_squashed_0110_alter_rootpage_body.py
- 0111_alter_rootpage_body_squashed_0130_alter_rootpage_body.py
- 0131_alter_impact_making_a_difference.py
- 0131_alter_impact_making_a_difference_squashed_0144_alter_rootpage_body_alter_rootpage_layout.py
- 0132_remove_rootpage_layout.py
- 0133_rootpage_layout.py
- 0134_alter_rootpage_layout.py
- 0135_alter_rootpage_layout.py
- 0136_alter_rootpage_layout.py
- 0137_alter_rootpage_body_alter_rootpage_layout.py
- 0137_alter_rootpage_promote_image.py
- 0138_alter_rootpage_body.py
- 0139_alter_rootpage_body.py
- 0140_alter_rootpage_body.py
- 0141_alter_rootpage_body.py
- 0142_alter_rootpage_body.py
- 0143_alter_rootpage_body_alter_rootpage_layout.py
- 0144_alter_rootpage_body_alter_rootpage_layout.py
- 0145_alter_rootpage_body_alter_rootpage_layout.py
- 0146_alter_rootpage_body.py
- 0147_merge_20240725_1221.py
- 0148_alter_rootpage_layout.py
- 0149_alter_rootpage_body.py
- 0150_alter_rootpage_body.py
- 0151_alter_assignable_faqs_alter_faq_questions_and_more.py
- 0152_alter_rootpage_body_alter_rootpage_layout.py
- 0153_alter_homepage_options.py
- 0154_alter_impact_improving_access.py
- 0155_alter_rootpage_layout.py
- 0156_alter_rootpage_body.py
- 0157_alter_rootpage_body.py
- 0158_alter_rootpage_body.py
- 0159_alter_rootpage_body.py
- 0160_alter_rootpage_body.py
- 0161_assignable_instructor_help_cta_button_text_and_more.py
- 0162_assignable_cta_section_footer.py
- 0163_rootpage_school.py
- 0164_partnerspage_header_image.py
- 0165_alter_rootpage_body.py
- 0166_formheadings_adoption_logged_in_intro_heading_and_more.py
- 0167_alter_rootpage_body.py
- 0168_flexpagerelatedpage.py
- 0169_alter_rootpage_body.py
- 0170_alter_assignable_faqs_and_more.py
- 0171_alter_rootpage_body.py
- 0172_alter_rootpage_body.py
- 0173_alter_rootpage_body.py
- 0174_alter_rootpage_body.py
- 0175_alter_rootpage_body.py
- 0176_alter_generalpage_body_alter_rootpage_body.py
- 0176_alter_rootpage_body.py
- 0177_merge_20260622_1923.py
- 0178_alter_rootpage_body.py
- 0179_remove_give_page_ptr_remove_give_promote_image_and_more.py
- 0180_delete_homepage.py
- 0181_alter_rootpage_body.py
- 0182_alter_rootpage_body.py
- 0182_persontag.py
- 0183_alter_rootpage_body.py
- 0183_cards_colors_list_to_csv.py
- 0184_merge_0183_alter_rootpage_body_0183_cards_colors_list_to_csv.py
- 0185_alter_rootpage_body.py
- 0186_alter_rootpage_body.py
- 0187_cards_colors_csv_to_per_card.py
- 0188_alter_rootpage_body.py
- 0189_alter_rootpage_body.py
- 0190_alter_assignable_faqs_alter_faq_questions_and_more.py
- 0190_alter_rootpage_body.py
- 0191_merge_20260709_2003.py
- 0192_alter_assignable_faqs_alter_faq_questions_and_more.py
- 0193_alter_assignable_faqs_alter_faq_questions_and_more.py
- 0194_alter_assignable_faqs_alter_faq_questions_and_more.py
- 0195_alter_rootpage_body.py
- 0196_alter_rootpage_body.py
- 0197_alter_rootpage_body.py
- 0198_alter_rootpage_body.py
- 0199_alter_rootpage_body.py
- 0200_alter_rootpage_body.py
- 0201_cards_flat_colors_to_config.py
- 0202_alter_assignable_faqs_alter_faq_questions_and_more.py
- 0203_alter_rootpage_body.py
- 0204_alter_rootpage_body.py
- 0205_alter_rootpage_body.py
- 0206_alter_assignable_faqs_alter_faq_questions_and_more.py
- 0206_alter_rootpage_body.py
- 0207_alter_assignable_faqs_alter_faq_questions_and_more.py
- 0208_merge_20260812_1741.py
- 0209_alter_rootpage_body.py
- 0210_alter_assignable_faqs_alter_faq_questions_and_more.py
- __init__.py
- __init__.py
- about.py
- bases.py
- constants.py
- core.py
- giving.py
- k12.py
- legal.py
- marketing.py
- partners.py
- subjects.py
- support.py
- openstax.png
- conditional-school-field.js
- openstax-collapse-block.js
- openstax-color-swatches.css
- openstax-color-swatches.js
- news_article.html
- general_page.html
- promote_to_home_confirm.html
- choose_page.html
- admin_base.html
- base.html
- edit.html
- page.html
- __init__.py
- pages_tags.py
- __init__.py
- test_admin.py
- test_big_numbers_block.py
- test_config_collapsed.py
- test_faq_block.py
- test_link_resolution.py
- test_pages.py
- test_person_block.py
- test_preview.py
- test_promote_home.py
- test_promote_home_admin.py
- test_refresh_from_prod_fixup.py
- test_shared_blocks.py
- test_subjects_models.py
- test_table_block.py
- test_table_sources.py
- test_templatetags.py
- test_views.py
- test_wagtail_transfer_import_page.py
- test_wagtail_transfer_patches.py
- test_wagtail_transfer_security.py
- __init__.py
- custom_blocks.py
- promote_home.py
- shared_blocks.py
- table_block.py
- table_sources.py
- views.py
- views_promote.py
- wagtail_hooks.py
- favicon.ico
- check_redirects.py
- add.html
- __init__.py
- base.txt
- dev.txt
- production.txt
- test.txt
- delete_resource_downloads.py
- sync_salesforce_book_names.py
- sync_thank_you_notes.py
- update_opportunities.py
- update_partners.py
- update_resource_downloads.py
- update_schools.py
- update_schools_and_mapbox.py
- upload_mapbox_schools.py
- 0001_initial.py
- 0002_auto_20160318_0843.py
- 0003_school.py
- 0004_auto_20180522_1342.py
- 0005_auto_20180522_1530.py
- 0006_auto_20180522_1552.py
- 0007_auto_20180522_1557.py
- 0008_mapboxdataset.py
- 0009_salesforcesettings.py
- 0010_auto_20180910_1320.py
- 0011_auto_20190531_0025.py
- 0012_mapboxdataset_style_url.py
- 0013_mapboxdataset_tileset_id.py
- 0014_remove_mapboxdataset_dataset_id.py
- 0015_adoptionopportunityrecord.py
- 0016_auto_20190815_1211.py
- 0017_adoptionopportunityrecord_updated.py
- 0018_remove_adoptionopportunityrecord_updated.py
- 0019_adoptionopportunityrecord_updated.py
- 0020_school_salesforce_id.py
- 0021_partner.py
- 0022_auto_20191111_1220.py
- 0023_auto_20191111_1229.py
- 0024_auto_20191111_1525.py
- 0025_partner_books.py
- 0026_auto_20191115_1123.py
- 0027_auto_20191122_1705.py
- 0028_partner_partner_logo.py
- 0029_partner_visible_on_website.py
- 0030_auto_20191220_1353.py
- 0031_auto_20200109_1048.py
- 0032_partner_partner_website.py
- 0033_partner_partner_list_label.py
- 0034_auto_20200117_1536.py
- 0035_auto_20200117_1619.py
- 0036_partner_formstack_url.py
- 0037_partnercategorymapping_partnerfieldnamemapping_partnertypemapping.py
- 0038_remove_partnertypemapping_salesforce_name.py
- 0039_auto_20200304_0919.py
- 0039_partner_lead_sharing.py
- 0040_partnerfieldnamemapping_hidden.py
- 0041_merge_20200311_1529.py
- 0042_salesforceforms.py
- 0043_salesforceforms_debug.py
- 0044_auto_20200615_1402.py
- 0045_auto_20200707_1042.py
- 0046_auto_20200720_1527.py
- 0047_auto_20200721_1134.py
- 0048_auto_20200721_1256.py
- 0049_resourcedownload_salesforce_id.py
- 0050_auto_20200724_1333.py
- 0051_auto_20200727_1324.py
- 0052_auto_20200728_1547.py
- 0053_remove_adoptionopportunityrecord_updated.py
- 0054_remove_adoptionopportunityrecord_book.py
- 0055_adoptionopportunityrecord_verified.py
- 0056_auto_20200730_1547.py
- 0057_partner_instructional_level_k12.py
- 0058_auto_20201012_0946.py
- 0058_partnerreview.py
- 0059_auto_20201005_1411.py
- 0060_partnerreview_partner.py
- 0061_merge_20201012_1151.py
- 0062_savingsnumber.py
- 0063_auto_20201014_1229.py
- 0064_auto_20201015_1524.py
- 0065_auto_20201016_1253.py
- 0066_auto_20201021_1627.py
- 0067_auto_20201023_0945.py
- 0068_auto_20201028_1341.py
- 0069_auto_20201028_1350.py
- 0070_partnerreview_approved_review_text.py
- 0071_auto_20201028_1427.py
- 0072_auto_20201028_1434.py
- 0073_remove_partnerreview_approved_review_text.py
- 0074_partnerreview_partner_response_date.py
- 0075_auto_20201117_1412.py
- 0076_auto_20201117_1419.py
- 0077_partnerreview_to_delete.py
- 0078_auto_20201119_1633.py
- 0079_auto_20201130_1600.py
- 0080_resourcedownload_contact_id.py
- 0081_auto_20210510_1023.py
- 0082_partner_partnership_level.py
- 0083_alter_resourcedownload_contact_id.py
- 0084_alter_resourcedownload_contact_id.py
- 0085_partnerreview_user_faculty_status.py
- 0086_alter_partnerreview_user_faculty_status.py
- 0087_school_location.py
- 0088_school_total_school_enrollment.py
- 0089_auto_20211014_1124.py
- 0090_auto_20211014_1201.py
- 0091_auto_20211018_1150.py
- 0092_auto_20211018_1152.py
- 0093_partnerreview_submitted_by_account_uuid.py
- 0094_alter_partnerreview_submitted_by_account_id.py
- 0095_adoptionopportunityrecord_account_uuid.py
- 0096_salesforceforms_debug_email.py
- 0097_auto_20220328_1130.py
- 0098_partner_equity_rating.py
- 0098_remove_resourcedownload_salesforce_id.py
- 0099_remove_resourcedownload_number_of_times_accessed.py
- 0100_merge_20220426_0826.py
- 0100_partner_partner_sf_account_id.py
- 0101_merge_20220506_1353.py
- 0102_auto_20220512_0814.py
- 0103_auto_20220516_1045.py
- 0104_alter_partner_visible_on_website.py
- 0105_auto_20221212_1543.py
- 0106_remove_resourcedownload_salesforce__account_b11d37_idx_and_more.py
- 0107_alter_resourcedownload_account_uuid_and_more.py
- 0108_partner_partner_anniversary_date_and_more.py
- 0109_remove_partner_salesforce_created_date.py
- 0110_partner_account_id_partner_partner_status.py
- 0111_alter_partner_partner_sf_account_id_and_more.py
- 0112_remove_adoptionopportunityrecord_fall_student_number_and_more.py
- 0113_school_created_school_updated.py
- 0114_school_industry.py
- 0115_school_research_agreement_end_date_and_more.py
- 0116_salesforcebookname.py
- 0117_resourcedownload_source.py
- 0118_resourcedownload_role.py
- __init__.py
- partner_sync.html
- __init__.py
- admin.py
- functions.py
- models.py
- salesforce.py
- serializers.py
- signals.py
- test_school.py
- test_wagtail_admin.py
- tests.py
- urls.py
- views.py
- wagtail_hooks.py
- flex_migrate.py
- analytics.py
- test_analytics.py
- test_utilities.py
- tests.py
- 0001_initial_squashed_0022_subject_page_content.py
- 0002_auto_20200722_1544.py
- 0003_delete_givetoday.py
- 0004_customizationformcontent.py
- 0005_delete_customizationformcontent.py
- 0006_erratacontent.py
- 0007_erratacontent_heading.py
- 0008_alter_erratacontent_book_state.py
- 0009_alter_erratacontent_book_state.py
- 0010_auto_20210715_1313.py
- 0011_auto_20210715_1317.py
- 0012_auto_20210715_1327.py
- 0013_subjectcategories.py
- 0014_auto_20220126_1603.py
- 0015_rename_subjectcategories_subjectcategory.py
- 0016_subject_icon.py
- 0017_subjectcategory_description.py
- 0018_subject_subject_color.py
- 0019_givebanner.py
- 0020_blogcontenttype.py
- 0020_contentlicense.py
- 0021_blogcollection.py
- 0022_merge_0020_contentlicense_0021_blogcollection.py
- 0023_delete_contentlicense.py
- 0024_k12subject.py
- 0025_facultyresource_icon_studentresource_icon_and_more.py
- 0026_facultyresource_resource_category_and_more.py
- 0027_nowebinarmessage.py
- 0028_webinarcollection.py
- 0029_assignableavailable.py
- 0030_alter_erratacontent_book_state.py
- 0030_amazonbookblurb.py
- 0031_merge_20231101_1313.py
- 0031_merge_20231101_1438.py
- 0032_merge_20231117_0830.py
- 0033_promotesnippet.py
- 0034_delete_assignableavailable.py
- 0035_alter_k12subject_subject_color_and_more.py
- 0036_contentwarning.py
- 0037_pagelayout.py
- 0038_alter_pagelayout_layout.py
- 0039_alter_pagelayout_layout.py
- 0040_remove_pagelayout_background_image.py
- 0041_delete_pagelayout.py
- 0042_alter_amazonbookblurb_locale_and_more.py
- 0043_alter_k12subject_subject_color_and_more.py
- 0044_requireloginmessage.py
- 0045_delete_givebanner.py
- 0046_amazonbookblurb_unique_amazonbookblurb_per_locale_and_more.py
- 0047_remove_blogcollection_unique_blogcollection_name_per_locale_and_more.py
- 0048_remove_promotesnippet_unique_promotesnippet_name_per_locale_and_more.py
- 0049_alter_erratacontent_heading_non_nullable.py
- 0050_remove_facultyresource_creator_fest_resource.py
- __init__.py
- __init__.py
- models.py
- serializers.py
- signals.py
- test_admin_menu.py
- test_migration_0046_dedupe.py
- tests.py
- urls.py
- views.py
- wagtail_hooks.py
- versions.html
- __init__.py
- views.py
- wagtail_hooks.py
- 0001_initial.py
- 0002_webinar_display_on_tutor_page.py
- 0003_webinar_webinar_subjects.py
- 0004_alter_webinar_webinar_subjects.py
- 0005_webinar_webinar_collections.py
- 0006_alter_webinar_spaces_remaining.py
- __init__.py
- __init__.py
- models.py
- search.py
- serializers.py
- signals.py
- tests.py
- urls.py
- views.py
- wagtail_hooks.py
- .gitignore
- .python-version
- AGENTS.md
- CLAUDE.md
- codecov.yml
- CONTRIBUTING.md
- docker-compose.override.yml
- docker-compose.yml
- Dockerfile
- LICENSE
- manage.py
- pyproject.toml
- README.md
- setup.cfg
# Installation Guide
git clone https://github.com/openstax/openstax-cms
Downloads the entire project code from GitHub to your computer.
cd openstax-cms
Moves into the project folder you just downloaded.
2. Official Install Script
Easy Recommended- Homebrew A package manager for macOS/Linux.
brew install postgresql
Installs the pre-built package via Homebrew β no source build required.
brew install python3
Installs the pre-built package via Homebrew β no source build required.
Pulled directly from this repo's README.
3. Docker
Easy- Git Needed to download the project code from GitHub.
- Docker Desktop Needed to build and run containers. Install it and keep it running in the background.
docker-compose up
Runs the command against the services defined in the compose file.
docker-compose exec -e DJANGO_SETTINGS_MODULE=openstax.settings.docker app bash
Runs the command against the services defined in the compose file.
./docker/bash
Type this command into your terminal and run it.
Pulled directly from this repo's README.
4. Python
Easypip3 install -r requirements/dev.txt
Installs the Python libraries listed in requirements.txt (or similar).
Pulled directly from this repo's README.
