diff --git a/accounts/__pycache__/__init__.cpython-38.pyc b/accounts/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 00000000..51160fc3 Binary files /dev/null and b/accounts/__pycache__/__init__.cpython-38.pyc differ diff --git a/accounts/__pycache__/email.cpython-38.pyc b/accounts/__pycache__/email.cpython-38.pyc new file mode 100644 index 00000000..9b2e30b6 Binary files /dev/null and b/accounts/__pycache__/email.cpython-38.pyc differ diff --git a/accounts/__pycache__/forms.cpython-38.pyc b/accounts/__pycache__/forms.cpython-38.pyc new file mode 100644 index 00000000..3afc31ec Binary files /dev/null and b/accounts/__pycache__/forms.cpython-38.pyc differ diff --git a/accounts/__pycache__/models.cpython-38.pyc b/accounts/__pycache__/models.cpython-38.pyc new file mode 100644 index 00000000..e8c00f11 Binary files /dev/null and b/accounts/__pycache__/models.cpython-38.pyc differ diff --git a/accounts/__pycache__/urls.cpython-38.pyc b/accounts/__pycache__/urls.cpython-38.pyc new file mode 100644 index 00000000..27b6bc5f Binary files /dev/null and b/accounts/__pycache__/urls.cpython-38.pyc differ diff --git a/accounts/__pycache__/util.cpython-38.pyc b/accounts/__pycache__/util.cpython-38.pyc new file mode 100644 index 00000000..9a6429d6 Binary files /dev/null and b/accounts/__pycache__/util.cpython-38.pyc differ diff --git a/accounts/__pycache__/views.cpython-38.pyc b/accounts/__pycache__/views.cpython-38.pyc new file mode 100644 index 00000000..55ea6989 Binary files /dev/null and b/accounts/__pycache__/views.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0001_initial.cpython-38.pyc b/accounts/migrations/__pycache__/0001_initial.cpython-38.pyc new file mode 100644 index 00000000..4278595c Binary files /dev/null and b/accounts/migrations/__pycache__/0001_initial.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0002_auto_20150209_1118.cpython-38.pyc b/accounts/migrations/__pycache__/0002_auto_20150209_1118.cpython-38.pyc new file mode 100644 index 00000000..b846ad38 Binary files /dev/null and b/accounts/migrations/__pycache__/0002_auto_20150209_1118.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0003_userprofile_question_basket.cpython-38.pyc b/accounts/migrations/__pycache__/0003_userprofile_question_basket.cpython-38.pyc new file mode 100644 index 00000000..38e0b28f Binary files /dev/null and b/accounts/migrations/__pycache__/0003_userprofile_question_basket.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0004_auto_20151104_1553.cpython-38.pyc b/accounts/migrations/__pycache__/0004_auto_20151104_1553.cpython-38.pyc new file mode 100644 index 00000000..4f48d3f8 Binary files /dev/null and b/accounts/migrations/__pycache__/0004_auto_20151104_1553.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0005_auto_20160203_1531.cpython-38.pyc b/accounts/migrations/__pycache__/0005_auto_20160203_1531.cpython-38.pyc new file mode 100644 index 00000000..7d075c95 Binary files /dev/null and b/accounts/migrations/__pycache__/0005_auto_20160203_1531.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0006_auto_20160203_1532.cpython-38.pyc b/accounts/migrations/__pycache__/0006_auto_20160203_1532.cpython-38.pyc new file mode 100644 index 00000000..0c2d0ce6 Binary files /dev/null and b/accounts/migrations/__pycache__/0006_auto_20160203_1532.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0007_auto_20160203_1535.cpython-38.pyc b/accounts/migrations/__pycache__/0007_auto_20160203_1535.cpython-38.pyc new file mode 100644 index 00000000..c1ff7bd6 Binary files /dev/null and b/accounts/migrations/__pycache__/0007_auto_20160203_1535.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0008_auto_20160203_1535.cpython-38.pyc b/accounts/migrations/__pycache__/0008_auto_20160203_1535.cpython-38.pyc new file mode 100644 index 00000000..4609da9f Binary files /dev/null and b/accounts/migrations/__pycache__/0008_auto_20160203_1535.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0009_userprofile_personal_project.cpython-38.pyc b/accounts/migrations/__pycache__/0009_userprofile_personal_project.cpython-38.pyc new file mode 100644 index 00000000..f169bf9c Binary files /dev/null and b/accounts/migrations/__pycache__/0009_userprofile_personal_project.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0010_create_personal_projects.cpython-38.pyc b/accounts/migrations/__pycache__/0010_create_personal_projects.cpython-38.pyc new file mode 100644 index 00000000..235946b6 Binary files /dev/null and b/accounts/migrations/__pycache__/0010_create_personal_projects.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0011_auto_20160208_0935.cpython-38.pyc b/accounts/migrations/__pycache__/0011_auto_20160208_0935.cpython-38.pyc new file mode 100644 index 00000000..bd429ea7 Binary files /dev/null and b/accounts/migrations/__pycache__/0011_auto_20160208_0935.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0012_auto_20160229_0917.cpython-38.pyc b/accounts/migrations/__pycache__/0012_auto_20160229_0917.cpython-38.pyc new file mode 100644 index 00000000..672ac6e9 Binary files /dev/null and b/accounts/migrations/__pycache__/0012_auto_20160229_0917.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0013_userprofile_avatar.cpython-38.pyc b/accounts/migrations/__pycache__/0013_userprofile_avatar.cpython-38.pyc new file mode 100644 index 00000000..b073a7b4 Binary files /dev/null and b/accounts/migrations/__pycache__/0013_userprofile_avatar.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0014_auto_20170112_1526.cpython-38.pyc b/accounts/migrations/__pycache__/0014_auto_20170112_1526.cpython-38.pyc new file mode 100644 index 00000000..6a469212 Binary files /dev/null and b/accounts/migrations/__pycache__/0014_auto_20170112_1526.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0015_userprofile_wrap_lines.cpython-38.pyc b/accounts/migrations/__pycache__/0015_userprofile_wrap_lines.cpython-38.pyc new file mode 100644 index 00000000..3165c810 Binary files /dev/null and b/accounts/migrations/__pycache__/0015_userprofile_wrap_lines.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0016_userprofile_mathjax_url.cpython-38.pyc b/accounts/migrations/__pycache__/0016_userprofile_mathjax_url.cpython-38.pyc new file mode 100644 index 00000000..564b91bf Binary files /dev/null and b/accounts/migrations/__pycache__/0016_userprofile_mathjax_url.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0017_auto_20171018_0843.cpython-38.pyc b/accounts/migrations/__pycache__/0017_auto_20171018_0843.cpython-38.pyc new file mode 100644 index 00000000..d1f93f7f Binary files /dev/null and b/accounts/migrations/__pycache__/0017_auto_20171018_0843.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0018_editoritemviewed.cpython-38.pyc b/accounts/migrations/__pycache__/0018_editoritemviewed.cpython-38.pyc new file mode 100644 index 00000000..e100b887 Binary files /dev/null and b/accounts/migrations/__pycache__/0018_editoritemviewed.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0019_auto_20200421_1607.cpython-38.pyc b/accounts/migrations/__pycache__/0019_auto_20200421_1607.cpython-38.pyc new file mode 100644 index 00000000..701d96f1 Binary files /dev/null and b/accounts/migrations/__pycache__/0019_auto_20200421_1607.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/0020_userprofile_email_about_item_queue_entries.cpython-38.pyc b/accounts/migrations/__pycache__/0020_userprofile_email_about_item_queue_entries.cpython-38.pyc new file mode 100644 index 00000000..d2ac59d1 Binary files /dev/null and b/accounts/migrations/__pycache__/0020_userprofile_email_about_item_queue_entries.cpython-38.pyc differ diff --git a/accounts/migrations/__pycache__/__init__.cpython-38.pyc b/accounts/migrations/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 00000000..c925a88a Binary files /dev/null and b/accounts/migrations/__pycache__/__init__.cpython-38.pyc differ diff --git a/accounts/templatetags/__pycache__/__init__.cpython-38.pyc b/accounts/templatetags/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 00000000..91db34f9 Binary files /dev/null and b/accounts/templatetags/__pycache__/__init__.cpython-38.pyc differ diff --git a/accounts/templatetags/__pycache__/absoluteurl.cpython-38.pyc b/accounts/templatetags/__pycache__/absoluteurl.cpython-38.pyc new file mode 100644 index 00000000..d35aafad Binary files /dev/null and b/accounts/templatetags/__pycache__/absoluteurl.cpython-38.pyc differ diff --git a/accounts/templatetags/__pycache__/user_link.cpython-38.pyc b/accounts/templatetags/__pycache__/user_link.cpython-38.pyc new file mode 100644 index 00000000..e405f7f8 Binary files /dev/null and b/accounts/templatetags/__pycache__/user_link.cpython-38.pyc differ diff --git a/db.sqlite3 b/db.sqlite3 new file mode 100644 index 00000000..556bf465 Binary files /dev/null and b/db.sqlite3 differ diff --git a/editor/__pycache__/__init__.cpython-38.pyc b/editor/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 00000000..fda619d1 Binary files /dev/null and b/editor/__pycache__/__init__.cpython-38.pyc differ diff --git a/editor/__pycache__/admin.cpython-38.pyc b/editor/__pycache__/admin.cpython-38.pyc new file mode 100644 index 00000000..f013e0e6 Binary files /dev/null and b/editor/__pycache__/admin.cpython-38.pyc differ diff --git a/editor/__pycache__/apps.cpython-38.pyc b/editor/__pycache__/apps.cpython-38.pyc new file mode 100644 index 00000000..ef887ed8 Binary files /dev/null and b/editor/__pycache__/apps.cpython-38.pyc differ diff --git a/editor/__pycache__/context_processors.cpython-38.pyc b/editor/__pycache__/context_processors.cpython-38.pyc new file mode 100644 index 00000000..efe4c432 Binary files /dev/null and b/editor/__pycache__/context_processors.cpython-38.pyc differ diff --git a/editor/__pycache__/email_notification.cpython-38.pyc b/editor/__pycache__/email_notification.cpython-38.pyc new file mode 100644 index 00000000..6f274ed6 Binary files /dev/null and b/editor/__pycache__/email_notification.cpython-38.pyc differ diff --git a/editor/__pycache__/forms.cpython-38.pyc b/editor/__pycache__/forms.cpython-38.pyc new file mode 100644 index 00000000..61139cfc Binary files /dev/null and b/editor/__pycache__/forms.cpython-38.pyc differ diff --git a/editor/__pycache__/jsonfield.cpython-38.pyc b/editor/__pycache__/jsonfield.cpython-38.pyc new file mode 100644 index 00000000..a35e92c8 Binary files /dev/null and b/editor/__pycache__/jsonfield.cpython-38.pyc differ diff --git a/editor/__pycache__/lockdown_app.cpython-38.pyc b/editor/__pycache__/lockdown_app.cpython-38.pyc new file mode 100644 index 00000000..42ae061a Binary files /dev/null and b/editor/__pycache__/lockdown_app.cpython-38.pyc differ diff --git a/editor/__pycache__/models.cpython-38.pyc b/editor/__pycache__/models.cpython-38.pyc new file mode 100644 index 00000000..f3ad25f9 Binary files /dev/null and b/editor/__pycache__/models.cpython-38.pyc differ diff --git a/editor/__pycache__/notify_watching.cpython-38.pyc b/editor/__pycache__/notify_watching.cpython-38.pyc new file mode 100644 index 00000000..502122e8 Binary files /dev/null and b/editor/__pycache__/notify_watching.cpython-38.pyc differ diff --git a/editor/__pycache__/slugify.cpython-38.pyc b/editor/__pycache__/slugify.cpython-38.pyc new file mode 100644 index 00000000..7d887ce7 Binary files /dev/null and b/editor/__pycache__/slugify.cpython-38.pyc differ diff --git a/editor/__pycache__/tables.cpython-38.pyc b/editor/__pycache__/tables.cpython-38.pyc new file mode 100644 index 00000000..8e89768c Binary files /dev/null and b/editor/__pycache__/tables.cpython-38.pyc differ diff --git a/editor/__pycache__/urls.cpython-38.pyc b/editor/__pycache__/urls.cpython-38.pyc new file mode 100644 index 00000000..26e1d615 Binary files /dev/null and b/editor/__pycache__/urls.cpython-38.pyc differ diff --git a/editor/management/__pycache__/__init__.cpython-38.pyc b/editor/management/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 00000000..3810ab85 Binary files /dev/null and b/editor/management/__pycache__/__init__.cpython-38.pyc differ diff --git a/editor/management/commands/__pycache__/__init__.cpython-38.pyc b/editor/management/commands/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 00000000..f0175d85 Binary files /dev/null and b/editor/management/commands/__pycache__/__init__.cpython-38.pyc differ diff --git a/editor/management/commands/__pycache__/first_setup_db.cpython-38.pyc b/editor/management/commands/__pycache__/first_setup_db.cpython-38.pyc new file mode 100644 index 00000000..de571baf Binary files /dev/null and b/editor/management/commands/__pycache__/first_setup_db.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0001_initial.cpython-38.pyc b/editor/migrations/__pycache__/0001_initial.cpython-38.pyc new file mode 100644 index 00000000..39577ea6 Binary files /dev/null and b/editor/migrations/__pycache__/0001_initial.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0002_add_licence.cpython-38.pyc b/editor/migrations/__pycache__/0002_add_licence.cpython-38.pyc new file mode 100644 index 00000000..24f975b7 Binary files /dev/null and b/editor/migrations/__pycache__/0002_add_licence.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0003_load_initial_licences.cpython-38.pyc b/editor/migrations/__pycache__/0003_load_initial_licences.cpython-38.pyc new file mode 100644 index 00000000..d3cabcf1 Binary files /dev/null and b/editor/migrations/__pycache__/0003_load_initial_licences.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0004_remove_question_progress.cpython-38.pyc b/editor/migrations/__pycache__/0004_remove_question_progress.cpython-38.pyc new file mode 100644 index 00000000..d46010ec Binary files /dev/null and b/editor/migrations/__pycache__/0004_remove_question_progress.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0005_stamp_of_approval.cpython-38.pyc b/editor/migrations/__pycache__/0005_stamp_of_approval.cpython-38.pyc new file mode 100644 index 00000000..7f7df7f6 Binary files /dev/null and b/editor/migrations/__pycache__/0005_stamp_of_approval.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0006_add_please_test_stamp.cpython-38.pyc b/editor/migrations/__pycache__/0006_add_please_test_stamp.cpython-38.pyc new file mode 100644 index 00000000..bdb4e4c1 Binary files /dev/null and b/editor/migrations/__pycache__/0006_add_please_test_stamp.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0007_questionpullrequest.cpython-38.pyc b/editor/migrations/__pycache__/0007_questionpullrequest.cpython-38.pyc new file mode 100644 index 00000000..66670817 Binary files /dev/null and b/editor/migrations/__pycache__/0007_questionpullrequest.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0008_questionpullrequest_created.cpython-38.pyc b/editor/migrations/__pycache__/0008_questionpullrequest_created.cpython-38.pyc new file mode 100644 index 00000000..f6598954 Binary files /dev/null and b/editor/migrations/__pycache__/0008_questionpullrequest_created.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0009_auto_20151014_1104.cpython-38.pyc b/editor/migrations/__pycache__/0009_auto_20151014_1104.cpython-38.pyc new file mode 100644 index 00000000..dffb295f Binary files /dev/null and b/editor/migrations/__pycache__/0009_auto_20151014_1104.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0010_questionpullrequest_comment.cpython-38.pyc b/editor/migrations/__pycache__/0010_questionpullrequest_comment.cpython-38.pyc new file mode 100644 index 00000000..f9c14dec Binary files /dev/null and b/editor/migrations/__pycache__/0010_questionpullrequest_comment.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0011_auto_20151201_1154.cpython-38.pyc b/editor/migrations/__pycache__/0011_auto_20151201_1154.cpython-38.pyc new file mode 100644 index 00000000..8af732fc Binary files /dev/null and b/editor/migrations/__pycache__/0011_auto_20151201_1154.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0012_auto_20151201_1335.cpython-38.pyc b/editor/migrations/__pycache__/0012_auto_20151201_1335.cpython-38.pyc new file mode 100644 index 00000000..b71e783f Binary files /dev/null and b/editor/migrations/__pycache__/0012_auto_20151201_1335.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0013_version_2_models.cpython-38.pyc b/editor/migrations/__pycache__/0013_version_2_models.cpython-38.pyc new file mode 100644 index 00000000..e97fe440 Binary files /dev/null and b/editor/migrations/__pycache__/0013_version_2_models.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0014_version_2_data_migration.cpython-38.pyc b/editor/migrations/__pycache__/0014_version_2_data_migration.cpython-38.pyc new file mode 100644 index 00000000..d8e173fe Binary files /dev/null and b/editor/migrations/__pycache__/0014_version_2_data_migration.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0015_remove_comment_date.cpython-38.pyc b/editor/migrations/__pycache__/0015_remove_comment_date.cpython-38.pyc new file mode 100644 index 00000000..7312f6e4 Binary files /dev/null and b/editor/migrations/__pycache__/0015_remove_comment_date.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0016_timelineitem_hidden_by.cpython-38.pyc b/editor/migrations/__pycache__/0016_timelineitem_hidden_by.cpython-38.pyc new file mode 100644 index 00000000..8756f367 Binary files /dev/null and b/editor/migrations/__pycache__/0016_timelineitem_hidden_by.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0017_project_public_view.cpython-38.pyc b/editor/migrations/__pycache__/0017_project_public_view.cpython-38.pyc new file mode 100644 index 00000000..ee666e9a Binary files /dev/null and b/editor/migrations/__pycache__/0017_project_public_view.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0018_site_broadcasts.cpython-38.pyc b/editor/migrations/__pycache__/0018_site_broadcasts.cpython-38.pyc new file mode 100644 index 00000000..3cc93627 Binary files /dev/null and b/editor/migrations/__pycache__/0018_site_broadcasts.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0019_auto_20160601_1528.cpython-38.pyc b/editor/migrations/__pycache__/0019_auto_20160601_1528.cpython-38.pyc new file mode 100644 index 00000000..7e6f9e8a Binary files /dev/null and b/editor/migrations/__pycache__/0019_auto_20160601_1528.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0020_newexamquestion_group.cpython-38.pyc b/editor/migrations/__pycache__/0020_newexamquestion_group.cpython-38.pyc new file mode 100644 index 00000000..ea5b920e Binary files /dev/null and b/editor/migrations/__pycache__/0020_newexamquestion_group.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0021_auto_20170112_1526.cpython-38.pyc b/editor/migrations/__pycache__/0021_auto_20170112_1526.cpython-38.pyc new file mode 100644 index 00000000..9f9a6005 Binary files /dev/null and b/editor/migrations/__pycache__/0021_auto_20170112_1526.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0022_custom_part_types.cpython-38.pyc b/editor/migrations/__pycache__/0022_custom_part_types.cpython-38.pyc new file mode 100644 index 00000000..423b4498 Binary files /dev/null and b/editor/migrations/__pycache__/0022_custom_part_types.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0022_taxonomies.cpython-38.pyc b/editor/migrations/__pycache__/0022_taxonomies.cpython-38.pyc new file mode 100644 index 00000000..197b7f5c Binary files /dev/null and b/editor/migrations/__pycache__/0022_taxonomies.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0023_auto_20171018_0843.cpython-38.pyc b/editor/migrations/__pycache__/0023_auto_20171018_0843.cpython-38.pyc new file mode 100644 index 00000000..00d95815 Binary files /dev/null and b/editor/migrations/__pycache__/0023_auto_20171018_0843.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0023_merge.cpython-38.pyc b/editor/migrations/__pycache__/0023_merge.cpython-38.pyc new file mode 100644 index 00000000..e523d218 Binary files /dev/null and b/editor/migrations/__pycache__/0023_merge.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0024_auto_20180118_1135.cpython-38.pyc b/editor/migrations/__pycache__/0024_auto_20180118_1135.cpython-38.pyc new file mode 100644 index 00000000..a2db9c04 Binary files /dev/null and b/editor/migrations/__pycache__/0024_auto_20180118_1135.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0024_customparttype_input_options.cpython-38.pyc b/editor/migrations/__pycache__/0024_customparttype_input_options.cpython-38.pyc new file mode 100644 index 00000000..5c0c5f61 Binary files /dev/null and b/editor/migrations/__pycache__/0024_customparttype_input_options.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0025_merge.cpython-38.pyc b/editor/migrations/__pycache__/0025_merge.cpython-38.pyc new file mode 100644 index 00000000..8c7dcbf9 Binary files /dev/null and b/editor/migrations/__pycache__/0025_merge.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0026_auto_20171122_1518.cpython-38.pyc b/editor/migrations/__pycache__/0026_auto_20171122_1518.cpython-38.pyc new file mode 100644 index 00000000..0d25bbe3 Binary files /dev/null and b/editor/migrations/__pycache__/0026_auto_20171122_1518.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0027_customparttype_ready_to_use.cpython-38.pyc b/editor/migrations/__pycache__/0027_customparttype_ready_to_use.cpython-38.pyc new file mode 100644 index 00000000..c2536c26 Binary files /dev/null and b/editor/migrations/__pycache__/0027_customparttype_ready_to_use.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0028_merge_20180122_1044.cpython-38.pyc b/editor/migrations/__pycache__/0028_merge_20180122_1044.cpython-38.pyc new file mode 100644 index 00000000..8b6f9595 Binary files /dev/null and b/editor/migrations/__pycache__/0028_merge_20180122_1044.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0029_customparttype_help_url.cpython-38.pyc b/editor/migrations/__pycache__/0029_customparttype_help_url.cpython-38.pyc new file mode 100644 index 00000000..682fd7f9 Binary files /dev/null and b/editor/migrations/__pycache__/0029_customparttype_help_url.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0030_customparttype_copy_of.cpython-38.pyc b/editor/migrations/__pycache__/0030_customparttype_copy_of.cpython-38.pyc new file mode 100644 index 00000000..5b46ee42 Binary files /dev/null and b/editor/migrations/__pycache__/0030_customparttype_copy_of.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0031_auto_20180510_1513.cpython-38.pyc b/editor/migrations/__pycache__/0031_auto_20180510_1513.cpython-38.pyc new file mode 100644 index 00000000..57550915 Binary files /dev/null and b/editor/migrations/__pycache__/0031_auto_20180510_1513.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0032_auto_20180626_1005.cpython-38.pyc b/editor/migrations/__pycache__/0032_auto_20180626_1005.cpython-38.pyc new file mode 100644 index 00000000..182321de Binary files /dev/null and b/editor/migrations/__pycache__/0032_auto_20180626_1005.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0033_editoritem_contributors.cpython-38.pyc b/editor/migrations/__pycache__/0033_editoritem_contributors.cpython-38.pyc new file mode 100644 index 00000000..269ad217 Binary files /dev/null and b/editor/migrations/__pycache__/0033_editoritem_contributors.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0034_set_contributors.cpython-38.pyc b/editor/migrations/__pycache__/0034_set_contributors.cpython-38.pyc new file mode 100644 index 00000000..6b03da1c Binary files /dev/null and b/editor/migrations/__pycache__/0034_set_contributors.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0035_customparttype_extensions.cpython-38.pyc b/editor/migrations/__pycache__/0035_customparttype_extensions.cpython-38.pyc new file mode 100644 index 00000000..04bb5ccf Binary files /dev/null and b/editor/migrations/__pycache__/0035_customparttype_extensions.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0036_extension_runs_headless.cpython-38.pyc b/editor/migrations/__pycache__/0036_extension_runs_headless.cpython-38.pyc new file mode 100644 index 00000000..0ca6372e Binary files /dev/null and b/editor/migrations/__pycache__/0036_extension_runs_headless.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0037_auto_20190320_1436.cpython-38.pyc b/editor/migrations/__pycache__/0037_auto_20190320_1436.cpython-38.pyc new file mode 100644 index 00000000..e098705a Binary files /dev/null and b/editor/migrations/__pycache__/0037_auto_20190320_1436.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0038_auto_20190321_0932.cpython-38.pyc b/editor/migrations/__pycache__/0038_auto_20190321_0932.cpython-38.pyc new file mode 100644 index 00000000..6e3f5075 Binary files /dev/null and b/editor/migrations/__pycache__/0038_auto_20190321_0932.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0039_extension_editable.cpython-38.pyc b/editor/migrations/__pycache__/0039_extension_editable.cpython-38.pyc new file mode 100644 index 00000000..04415a72 Binary files /dev/null and b/editor/migrations/__pycache__/0039_extension_editable.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0040_auto_20191018_0643.cpython-38.pyc b/editor/migrations/__pycache__/0040_auto_20191018_0643.cpython-38.pyc new file mode 100644 index 00000000..c8ec5a76 Binary files /dev/null and b/editor/migrations/__pycache__/0040_auto_20191018_0643.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0041_auto_20191030_1330.cpython-38.pyc b/editor/migrations/__pycache__/0041_auto_20191030_1330.cpython-38.pyc new file mode 100644 index 00000000..673ce3a8 Binary files /dev/null and b/editor/migrations/__pycache__/0041_auto_20191030_1330.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0042_tip.cpython-38.pyc b/editor/migrations/__pycache__/0042_tip.cpython-38.pyc new file mode 100644 index 00000000..cd9e5450 Binary files /dev/null and b/editor/migrations/__pycache__/0042_tip.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0043_auto_20200420_1458.cpython-38.pyc b/editor/migrations/__pycache__/0043_auto_20200420_1458.cpython-38.pyc new file mode 100644 index 00000000..db75f66c Binary files /dev/null and b/editor/migrations/__pycache__/0043_auto_20200420_1458.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0044_remove_editoritem_watching_users.cpython-38.pyc b/editor/migrations/__pycache__/0044_remove_editoritem_watching_users.cpython-38.pyc new file mode 100644 index 00000000..ef984b68 Binary files /dev/null and b/editor/migrations/__pycache__/0044_remove_editoritem_watching_users.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0045_auto_20200421_1530.cpython-38.pyc b/editor/migrations/__pycache__/0045_auto_20200421_1530.cpython-38.pyc new file mode 100644 index 00000000..e83c1ad1 Binary files /dev/null and b/editor/migrations/__pycache__/0045_auto_20200421_1530.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0046_resource_alt_text.cpython-38.pyc b/editor/migrations/__pycache__/0046_resource_alt_text.cpython-38.pyc new file mode 100644 index 00000000..58f91b73 Binary files /dev/null and b/editor/migrations/__pycache__/0046_resource_alt_text.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0047_auto_20200827_0837.cpython-38.pyc b/editor/migrations/__pycache__/0047_auto_20200827_0837.cpython-38.pyc new file mode 100644 index 00000000..3259dab6 Binary files /dev/null and b/editor/migrations/__pycache__/0047_auto_20200827_0837.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0048_themeaccess.cpython-38.pyc b/editor/migrations/__pycache__/0048_themeaccess.cpython-38.pyc new file mode 100644 index 00000000..e8e2dca8 Binary files /dev/null and b/editor/migrations/__pycache__/0048_themeaccess.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0049_auto_20201012_1409.cpython-38.pyc b/editor/migrations/__pycache__/0049_auto_20201012_1409.cpython-38.pyc new file mode 100644 index 00000000..137acf94 Binary files /dev/null and b/editor/migrations/__pycache__/0049_auto_20201012_1409.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0050_auto_20201019_1127.cpython-38.pyc b/editor/migrations/__pycache__/0050_auto_20201019_1127.cpython-38.pyc new file mode 100644 index 00000000..af9b0b8e Binary files /dev/null and b/editor/migrations/__pycache__/0050_auto_20201019_1127.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0051_auto_20201027_1547.cpython-38.pyc b/editor/migrations/__pycache__/0051_auto_20201027_1547.cpython-38.pyc new file mode 100644 index 00000000..93fce77e Binary files /dev/null and b/editor/migrations/__pycache__/0051_auto_20201027_1547.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0052_auto_20201029_1046.cpython-38.pyc b/editor/migrations/__pycache__/0052_auto_20201029_1046.cpython-38.pyc new file mode 100644 index 00000000..cfa1ee89 Binary files /dev/null and b/editor/migrations/__pycache__/0052_auto_20201029_1046.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0053_auto_20210308_1105.cpython-38.pyc b/editor/migrations/__pycache__/0053_auto_20210308_1105.cpython-38.pyc new file mode 100644 index 00000000..43651d30 Binary files /dev/null and b/editor/migrations/__pycache__/0053_auto_20210308_1105.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0054_auto_20210816_1144.cpython-38.pyc b/editor/migrations/__pycache__/0054_auto_20210816_1144.cpython-38.pyc new file mode 100644 index 00000000..f46eb8e9 Binary files /dev/null and b/editor/migrations/__pycache__/0054_auto_20210816_1144.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0055_customparttypeaccess.cpython-38.pyc b/editor/migrations/__pycache__/0055_customparttypeaccess.cpython-38.pyc new file mode 100644 index 00000000..31476b59 Binary files /dev/null and b/editor/migrations/__pycache__/0055_customparttypeaccess.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0056_auto_20211109_0858.cpython-38.pyc b/editor/migrations/__pycache__/0056_auto_20211109_0858.cpython-38.pyc new file mode 100644 index 00000000..dc6e2060 Binary files /dev/null and b/editor/migrations/__pycache__/0056_auto_20211109_0858.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0057_queues.cpython-38.pyc b/editor/migrations/__pycache__/0057_queues.cpython-38.pyc new file mode 100644 index 00000000..8a78a1a1 Binary files /dev/null and b/editor/migrations/__pycache__/0057_queues.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0058_queues_remove_old_access.cpython-38.pyc b/editor/migrations/__pycache__/0058_queues_remove_old_access.cpython-38.pyc new file mode 100644 index 00000000..df41bd60 Binary files /dev/null and b/editor/migrations/__pycache__/0058_queues_remove_old_access.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0059_alter_customparttype_input_widget.cpython-38.pyc b/editor/migrations/__pycache__/0059_alter_customparttype_input_widget.cpython-38.pyc new file mode 100644 index 00000000..90ea6d36 Binary files /dev/null and b/editor/migrations/__pycache__/0059_alter_customparttype_input_widget.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0060_auto_20220517_1437.cpython-38.pyc b/editor/migrations/__pycache__/0060_auto_20220517_1437.cpython-38.pyc new file mode 100644 index 00000000..f41659bd Binary files /dev/null and b/editor/migrations/__pycache__/0060_auto_20220517_1437.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0061_auto_20220518_1356.cpython-38.pyc b/editor/migrations/__pycache__/0061_auto_20220518_1356.cpython-38.pyc new file mode 100644 index 00000000..17532815 Binary files /dev/null and b/editor/migrations/__pycache__/0061_auto_20220518_1356.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0062_itemqueueentry_assigned_user.cpython-38.pyc b/editor/migrations/__pycache__/0062_itemqueueentry_assigned_user.cpython-38.pyc new file mode 100644 index 00000000..864fa23f Binary files /dev/null and b/editor/migrations/__pycache__/0062_itemqueueentry_assigned_user.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0063_alter_abilityframework_options_and_more.cpython-38.pyc b/editor/migrations/__pycache__/0063_alter_abilityframework_options_and_more.cpython-38.pyc new file mode 100644 index 00000000..746ef9b7 Binary files /dev/null and b/editor/migrations/__pycache__/0063_alter_abilityframework_options_and_more.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/0064_alter_editoritem_options.cpython-38.pyc b/editor/migrations/__pycache__/0064_alter_editoritem_options.cpython-38.pyc new file mode 100644 index 00000000..65041e53 Binary files /dev/null and b/editor/migrations/__pycache__/0064_alter_editoritem_options.cpython-38.pyc differ diff --git a/editor/migrations/__pycache__/__init__.cpython-38.pyc b/editor/migrations/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 00000000..c945b5cd Binary files /dev/null and b/editor/migrations/__pycache__/__init__.cpython-38.pyc differ diff --git a/editor/static/js/question/part_types.js b/editor/static/js/question/part_types.js index af172186..d817abf4 100644 --- a/editor/static/js/question/part_types.js +++ b/editor/static/js/question/part_types.js @@ -673,7 +673,7 @@ part_types.models = [ model.addChoice = function() { var c = { - content: Editor.contentObservable('Choice '+(model.choices().length+1)), + content: Editor.contentObservable(''), marks: ko.observable(0), distractor: Editor.contentObservable(''), answers: ko.observableArray([]) @@ -828,7 +828,7 @@ part_types.models = [ model.addChoice = function() { var c = { - content: Editor.contentObservable('Choice '+(model.choices().length+1)), + content: Editor.contentObservable(''), marks: ko.observable(0), distractor: Editor.contentObservable(''), answers: ko.observableArray([]) @@ -1037,7 +1037,7 @@ part_types.models = [ model.addChoice = function() { var c = { - content: Editor.contentObservable('Choice '+(model.choices().length+1)), + content: Editor.contentObservable(''), marks: ko.observable(0), distractor: Editor.contentObservable('') }; diff --git a/editor/templates/index_message.html b/editor/templates/index_message.html new file mode 100644 index 00000000..2463ac07 --- /dev/null +++ b/editor/templates/index_message.html @@ -0,0 +1,14 @@ +
+Numbas is a web-based e-assessment system developed at Newcastle University. +
+ ++This instance of the Numbas editor is run by someone who didn't customise this message. +
+ ++If you have any comments or questions about Numbas, please send an e-mail to +numbas@ncl.ac.uk or visit our website. +
diff --git a/editor/templates/privacy_policy_content.html b/editor/templates/privacy_policy_content.html new file mode 100644 index 00000000..000ce9ca --- /dev/null +++ b/editor/templates/privacy_policy_content.html @@ -0,0 +1,6 @@ +The site administrator needs to put the privacy policy here.
+For sites based in the UK, the ICO provides good advice on writing a privacy notice.
diff --git a/editor/templates/terms_of_use_content.html b/editor/templates/terms_of_use_content.html new file mode 100644 index 00000000..a0c67dd3 --- /dev/null +++ b/editor/templates/terms_of_use_content.html @@ -0,0 +1,5 @@ +The site administrator needs to put the terms of use here.
diff --git a/editor/templatetags/__pycache__/__init__.cpython-38.pyc b/editor/templatetags/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 00000000..aead640b Binary files /dev/null and b/editor/templatetags/__pycache__/__init__.cpython-38.pyc differ diff --git a/editor/templatetags/__pycache__/can_edit.cpython-38.pyc b/editor/templatetags/__pycache__/can_edit.cpython-38.pyc new file mode 100644 index 00000000..7279f855 Binary files /dev/null and b/editor/templatetags/__pycache__/can_edit.cpython-38.pyc differ diff --git a/editor/templatetags/__pycache__/editable_package.cpython-38.pyc b/editor/templatetags/__pycache__/editable_package.cpython-38.pyc new file mode 100644 index 00000000..daca8dd7 Binary files /dev/null and b/editor/templatetags/__pycache__/editable_package.cpython-38.pyc differ diff --git a/editor/templatetags/__pycache__/editor_controls.cpython-38.pyc b/editor/templatetags/__pycache__/editor_controls.cpython-38.pyc new file mode 100644 index 00000000..aaed09b5 Binary files /dev/null and b/editor/templatetags/__pycache__/editor_controls.cpython-38.pyc differ diff --git a/editor/templatetags/__pycache__/extra_sanitize.cpython-38.pyc b/editor/templatetags/__pycache__/extra_sanitize.cpython-38.pyc new file mode 100644 index 00000000..1c76add1 Binary files /dev/null and b/editor/templatetags/__pycache__/extra_sanitize.cpython-38.pyc differ diff --git a/editor/templatetags/__pycache__/helplink.cpython-38.pyc b/editor/templatetags/__pycache__/helplink.cpython-38.pyc new file mode 100644 index 00000000..03a6c4da Binary files /dev/null and b/editor/templatetags/__pycache__/helplink.cpython-38.pyc differ diff --git a/editor/templatetags/__pycache__/human_list.cpython-38.pyc b/editor/templatetags/__pycache__/human_list.cpython-38.pyc new file mode 100644 index 00000000..0ce00ab1 Binary files /dev/null and b/editor/templatetags/__pycache__/human_list.cpython-38.pyc differ diff --git a/editor/templatetags/__pycache__/json_filter.cpython-38.pyc b/editor/templatetags/__pycache__/json_filter.cpython-38.pyc new file mode 100644 index 00000000..16025385 Binary files /dev/null and b/editor/templatetags/__pycache__/json_filter.cpython-38.pyc differ diff --git a/editor/templatetags/__pycache__/links.cpython-38.pyc b/editor/templatetags/__pycache__/links.cpython-38.pyc new file mode 100644 index 00000000..07ba7169 Binary files /dev/null and b/editor/templatetags/__pycache__/links.cpython-38.pyc differ diff --git a/editor/templatetags/__pycache__/percentage.cpython-38.pyc b/editor/templatetags/__pycache__/percentage.cpython-38.pyc new file mode 100644 index 00000000..e297e1de Binary files /dev/null and b/editor/templatetags/__pycache__/percentage.cpython-38.pyc differ diff --git a/editor/templatetags/__pycache__/raw_include.cpython-38.pyc b/editor/templatetags/__pycache__/raw_include.cpython-38.pyc new file mode 100644 index 00000000..05a84431 Binary files /dev/null and b/editor/templatetags/__pycache__/raw_include.cpython-38.pyc differ diff --git a/editor/templatetags/__pycache__/sstatic.cpython-38.pyc b/editor/templatetags/__pycache__/sstatic.cpython-38.pyc new file mode 100644 index 00000000..edf2dcc0 Binary files /dev/null and b/editor/templatetags/__pycache__/sstatic.cpython-38.pyc differ diff --git a/editor/templatetags/__pycache__/stamp.cpython-38.pyc b/editor/templatetags/__pycache__/stamp.cpython-38.pyc new file mode 100644 index 00000000..815b9c70 Binary files /dev/null and b/editor/templatetags/__pycache__/stamp.cpython-38.pyc differ diff --git a/editor/templatetags/__pycache__/timeline.cpython-38.pyc b/editor/templatetags/__pycache__/timeline.cpython-38.pyc new file mode 100644 index 00000000..9b5fa58e Binary files /dev/null and b/editor/templatetags/__pycache__/timeline.cpython-38.pyc differ diff --git a/editor/views/__pycache__/__init__.cpython-38.pyc b/editor/views/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 00000000..be5e97bd Binary files /dev/null and b/editor/views/__pycache__/__init__.cpython-38.pyc differ diff --git a/editor/views/__pycache__/basket.cpython-38.pyc b/editor/views/__pycache__/basket.cpython-38.pyc new file mode 100644 index 00000000..8805341b Binary files /dev/null and b/editor/views/__pycache__/basket.cpython-38.pyc differ diff --git a/editor/views/__pycache__/custom_part_type.cpython-38.pyc b/editor/views/__pycache__/custom_part_type.cpython-38.pyc new file mode 100644 index 00000000..813556e4 Binary files /dev/null and b/editor/views/__pycache__/custom_part_type.cpython-38.pyc differ diff --git a/editor/views/__pycache__/editable_package.cpython-38.pyc b/editor/views/__pycache__/editable_package.cpython-38.pyc new file mode 100644 index 00000000..1aed753b Binary files /dev/null and b/editor/views/__pycache__/editable_package.cpython-38.pyc differ diff --git a/editor/views/__pycache__/editoritem.cpython-38.pyc b/editor/views/__pycache__/editoritem.cpython-38.pyc new file mode 100644 index 00000000..99645719 Binary files /dev/null and b/editor/views/__pycache__/editoritem.cpython-38.pyc differ diff --git a/editor/views/__pycache__/errors.cpython-38.pyc b/editor/views/__pycache__/errors.cpython-38.pyc new file mode 100644 index 00000000..885c2b69 Binary files /dev/null and b/editor/views/__pycache__/errors.cpython-38.pyc differ diff --git a/editor/views/__pycache__/exam.cpython-38.pyc b/editor/views/__pycache__/exam.cpython-38.pyc new file mode 100644 index 00000000..510bcb9d Binary files /dev/null and b/editor/views/__pycache__/exam.cpython-38.pyc differ diff --git a/editor/views/__pycache__/extension.cpython-38.pyc b/editor/views/__pycache__/extension.cpython-38.pyc new file mode 100644 index 00000000..e56e2aaa Binary files /dev/null and b/editor/views/__pycache__/extension.cpython-38.pyc differ diff --git a/editor/views/__pycache__/folder.cpython-38.pyc b/editor/views/__pycache__/folder.cpython-38.pyc new file mode 100644 index 00000000..b1ed965b Binary files /dev/null and b/editor/views/__pycache__/folder.cpython-38.pyc differ diff --git a/editor/views/__pycache__/generic.cpython-38.pyc b/editor/views/__pycache__/generic.cpython-38.pyc new file mode 100644 index 00000000..8f4c6124 Binary files /dev/null and b/editor/views/__pycache__/generic.cpython-38.pyc differ diff --git a/editor/views/__pycache__/notification.cpython-38.pyc b/editor/views/__pycache__/notification.cpython-38.pyc new file mode 100644 index 00000000..5ad3bd19 Binary files /dev/null and b/editor/views/__pycache__/notification.cpython-38.pyc differ diff --git a/editor/views/__pycache__/project.cpython-38.pyc b/editor/views/__pycache__/project.cpython-38.pyc new file mode 100644 index 00000000..a03b3acd Binary files /dev/null and b/editor/views/__pycache__/project.cpython-38.pyc differ diff --git a/editor/views/__pycache__/question.cpython-38.pyc b/editor/views/__pycache__/question.cpython-38.pyc new file mode 100644 index 00000000..071a3100 Binary files /dev/null and b/editor/views/__pycache__/question.cpython-38.pyc differ diff --git a/editor/views/__pycache__/queue.cpython-38.pyc b/editor/views/__pycache__/queue.cpython-38.pyc new file mode 100644 index 00000000..568aff3e Binary files /dev/null and b/editor/views/__pycache__/queue.cpython-38.pyc differ diff --git a/editor/views/__pycache__/resource.cpython-38.pyc b/editor/views/__pycache__/resource.cpython-38.pyc new file mode 100644 index 00000000..82602e11 Binary files /dev/null and b/editor/views/__pycache__/resource.cpython-38.pyc differ diff --git a/editor/views/__pycache__/site_broadcast.cpython-38.pyc b/editor/views/__pycache__/site_broadcast.cpython-38.pyc new file mode 100644 index 00000000..1fb1e124 Binary files /dev/null and b/editor/views/__pycache__/site_broadcast.cpython-38.pyc differ diff --git a/editor/views/__pycache__/theme.cpython-38.pyc b/editor/views/__pycache__/theme.cpython-38.pyc new file mode 100644 index 00000000..2bf70a50 Binary files /dev/null and b/editor/views/__pycache__/theme.cpython-38.pyc differ diff --git a/editor/views/__pycache__/timeline.cpython-38.pyc b/editor/views/__pycache__/timeline.cpython-38.pyc new file mode 100644 index 00000000..570cb19e Binary files /dev/null and b/editor/views/__pycache__/timeline.cpython-38.pyc differ diff --git a/editor/views/__pycache__/user.cpython-38.pyc b/editor/views/__pycache__/user.cpython-38.pyc new file mode 100644 index 00000000..d775212a Binary files /dev/null and b/editor/views/__pycache__/user.cpython-38.pyc differ diff --git a/migration/__pycache__/__init__.cpython-38.pyc b/migration/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 00000000..4edb49da Binary files /dev/null and b/migration/__pycache__/__init__.cpython-38.pyc differ diff --git a/migration/__pycache__/forms.cpython-38.pyc b/migration/__pycache__/forms.cpython-38.pyc new file mode 100644 index 00000000..3969cfa9 Binary files /dev/null and b/migration/__pycache__/forms.cpython-38.pyc differ diff --git a/migration/__pycache__/urls.cpython-38.pyc b/migration/__pycache__/urls.cpython-38.pyc new file mode 100644 index 00000000..009f5a4f Binary files /dev/null and b/migration/__pycache__/urls.cpython-38.pyc differ diff --git a/migration/__pycache__/views.cpython-38.pyc b/migration/__pycache__/views.cpython-38.pyc new file mode 100644 index 00000000..94a4ab2f Binary files /dev/null and b/migration/__pycache__/views.cpython-38.pyc differ diff --git a/numbas/__pycache__/__init__.cpython-38.pyc b/numbas/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 00000000..ca5a610f Binary files /dev/null and b/numbas/__pycache__/__init__.cpython-38.pyc differ diff --git a/numbas/__pycache__/settings.cpython-38.pyc b/numbas/__pycache__/settings.cpython-38.pyc new file mode 100644 index 00000000..f3e77712 Binary files /dev/null and b/numbas/__pycache__/settings.cpython-38.pyc differ diff --git a/numbas/__pycache__/urls.cpython-38.pyc b/numbas/__pycache__/urls.cpython-38.pyc new file mode 100644 index 00000000..f9f7bd81 Binary files /dev/null and b/numbas/__pycache__/urls.cpython-38.pyc differ diff --git a/numbas/settings.py b/numbas/settings.py new file mode 100644 index 00000000..87f2dc8c --- /dev/null +++ b/numbas/settings.py @@ -0,0 +1,223 @@ +""" +For more information on this file, see +https://docs.djangoproject.com/en/2.0/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/2.0/ref/settings/ +""" + +import os +import sys + +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'lk9_ggyjkq11t#u1cykf@u36577z8t!rr@(x#4a%qobny+vp8&' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + +DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' + +# Application definition + +INSTALLED_APPS = [ + 'accounts', + 'editor', + + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'django.contrib.sites', + + 'django.contrib.humanize', + 'sanitizer', + 'notifications', + 'analytical', + 'reversion', + 'registration', + 'django_tables2', + 'taggit', + 'el_pagination', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'numbas.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + "django.template.context_processors.i18n", + "django.template.context_processors.media", + "django.template.context_processors.static", + "editor.context_processors.global_settings", + "editor.context_processors.site_root", + ], + }, + }, +] + +# Database +# https://docs.djangoproject.com/en/2.0/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + } +} + + +# Password validation +# https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + +# Password hashing +# https://docs.djangoproject.com/en/4.1/ref/settings/#std-setting-PASSWORD_HASHERS +PASSWORD_HASHERS = [ + 'django.contrib.auth.hashers.ScryptPasswordHasher', + 'django.contrib.auth.hashers.PBKDF2PasswordHasher', + 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', + 'django.contrib.auth.hashers.Argon2PasswordHasher', + 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', +] + + +# Internationalization +# https://docs.djangoproject.com/en/2.0/topics/i18n/ + +LANGUAGE_CODE = 'en-gb' + +TIME_ZONE = 'Europe/London' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/2.0/howto/static-files/ + +STATIC_URL = '/static/' +STATIC_ROOT = 'editor/static' + +SITE_TITLE = 'Numbas development' +SITE_ID = 1 + +MATHJAX_URL = 'https://cdn.jsdelivr.net/npm/mathjax@2' + +MEDIA_ROOT = 'media' +MEDIA_URL = '/media/' + +GLOBAL_SETTINGS = { + 'NUMBAS_PATH': 'C:\\Users\\Lapin\\OneDrive - Newcastle University\\Documents\\html\\compiler', + 'PREVIEW_PATH': 'editor/static/previews', + 'PREVIEW_URL': '/static/previews/', # a URL which serves files from PREVIEW_PATH + 'HELP_URL': 'https://docs.numbas.org.uk/en/latest/', # the URL of the Numbas webdocs + 'PYTHON_EXEC': 'C:\\Users\\Lapin\\OneDrive - Newcastle University\\Documents\\html\\numbas_venv\\Scripts\\python.exe', + 'NUMBAS_THEMES': [('Standard', 'default'), ('Printable worksheet', 'worksheet'), ('School', 'school')], + 'NUMBAS_LOCALES': [ + ('English', 'en-GB'), + ('Afrikaans (92% complete)', 'af-ZA'), + ('Bahasa Indonesia (83% complete)', 'in-ID'), + ('Deutsch (91% complete)', 'de-DE'), + ('Español (83% complete)', 'es-ES'), + ('Français (76% complete)', 'fr-FR'), + ('Italiano (53% complete)', 'it-IT'), + ('Nederlands (87% complete)', 'nl-NL'), + ('Norsk bokmål (56% complete)', 'nb-NO'), + ('Polski (18% complete)', 'pl-PL'), + ('Português brasileiro (65% complete)', 'pt-BR'), + ('Shqip (53% complete)', 'sq-AL'), + ('Svenska (61% complete)', 'sv-SE'), + ('Tiếng Việt (88% complete)', 'vi-VN'), + ('Türkçe (13% complete)', 'tr-TR'), + ('עִבְרִית (20% complete)', 'he-IL'), + ('中文 (75% complete)', 'zh-CN'), + ('日本語 (38% complete)', 'ja-JP'), + ('ﺎﻠﻋﺮﺒﻳﺓ (80% complete)', 'ar-SA'), + ], + #Uncomment the lines below and provide paths to minification tools to minify javascript and CSS files + #'MINIFIER_PATHS': { + # 'js': 'uglifyjs', + # 'css': 'uglifycss', + #} +} + +EVERYTHING_VISIBLE = False # Set this to True to allow every user to see all content, regardless of access settings + +ALLOW_REGISTRATION = True +ACCOUNT_ACTIVATION_DAYS = 10 + +LOGIN_REDIRECT_URL = '/' +LOGIN_URL = '/login/' +CAN_LOGOUT = True +CAN_CHANGE_PASSWORD = True +LOGOUT_REDIRECT_URL = '/' + +sys.path.append(os.path.join(GLOBAL_SETTINGS['NUMBAS_PATH'],'bin')) + +SANITIZER_ALLOWED_TAGS = ['a', 'p', 'img','br','strong','em','div','code','i','b', 'ul', 'ol', 'li', 'table','thead','tbody','td','th','tr', 'h1','h2','h3','h4','h5','h6', 'hr'] +SANITIZER_ALLOWED_ATTRIBUTES = ['href','title'] + +DEFAULT_FROM_EMAIL = '' + +# Must users be able to view all the questions in an exam in order to view the exam? +EXAM_ACCESS_REQUIRES_QUESTION_ACCESS = False + +# The prefix for all URLs on this server. +# If the editor is accessed through https://mydomain.com/editor/, then URL_PREFIX should be '/editor/'. +# If it's accessed from the top of the domain, then it should be '/'. +URL_PREFIX = '/' + +# CSS variables for the interface. +CSS_VARIABLES = { + 'brand-color': '#acdeff', # The colour of the top nav bar. +} + +# Settings for the lockdown app +LOCKDOWN_APP = { + # Salt for encrypted links to launch the lockdown app. + # This is built into the lockdown app, so shouldn't change unless you have your own version. + 'salt': '45ab2cf2e139c01f8447d17dc653d585', +}