From 2f61efd30f8f84bd33365af281201f71d845652f Mon Sep 17 00:00:00 2001 From: greg Date: Wed, 3 Apr 2024 22:04:11 +0200 Subject: [PATCH] push clean refacto --- .gitignore | 12 + Dockerfile | 16 + README.md | 69 ++ docker-compose.yml | 10 + .../app/__pycache__/settings.cpython-311.pyc | Bin 0 -> 2729 bytes quiz-app/app/__pycache__/urls.cpython-311.pyc | Bin 0 -> 587 bytes quiz-app/app/__pycache__/wsgi.cpython-311.pyc | Bin 0 -> 442 bytes quiz-app/app/settings.py | 145 +++ quiz-app/app/static/css/style.css | 17 + quiz-app/app/static/favicon.ico | Bin 0 -> 9892 bytes quiz-app/app/static/images/wp.jpg | Bin 0 -> 75729 bytes quiz-app/app/static/logo.png | Bin 0 -> 15361 bytes quiz-app/app/urls.py | 8 + quiz-app/app/wsgi.py | 7 + .../essay/__pycache__/models.cpython-311.pyc | Bin 0 -> 1904 bytes .../essay/locale/de/LC_MESSAGES/django.mo | Bin 0 -> 525 bytes .../essay/locale/de/LC_MESSAGES/django.po | 28 + .../essay/locale/es_CO/LC_MESSAGES/django.mo | Bin 0 -> 578 bytes .../essay/locale/es_CO/LC_MESSAGES/django.po | 26 + .../essay/locale/it/LC_MESSAGES/django.mo | Bin 0 -> 546 bytes .../essay/locale/it/LC_MESSAGES/django.po | 28 + .../essay/locale/ru/LC_MESSAGES/django.mo | Bin 0 -> 620 bytes .../essay/locale/ru/LC_MESSAGES/django.po | 27 + .../essay/locale/zh_CN/LC_MESSAGES/django.mo | Bin 0 -> 547 bytes .../essay/locale/zh_CN/LC_MESSAGES/django.po | 28 + quiz-app/essay/migrations/0001_initial.py | 29 + quiz-app/essay/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 1301 bytes .../__pycache__/0001_initial.cpython-37.pyc | Bin 0 -> 904 bytes .../__pycache__/0001_initial.cpython-38.pyc | Bin 0 -> 922 bytes .../__pycache__/0001_initial.cpython-39.pyc | Bin 0 -> 922 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 180 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 139 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 143 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 143 bytes quiz-app/essay/models.py | 29 + quiz-app/essay/tests.py | 22 + quiz-app/manage.py | 14 + .../__pycache__/models.cpython-311.pyc | Bin 0 -> 4925 bytes .../locale/de/LC_MESSAGES/django.mo | Bin 0 -> 1206 bytes .../locale/de/LC_MESSAGES/django.po | 72 ++ .../locale/es_CO/LC_MESSAGES/django.mo | Bin 0 -> 1311 bytes .../locale/es_CO/LC_MESSAGES/django.po | 70 ++ .../locale/it/LC_MESSAGES/django.mo | Bin 0 -> 1200 bytes .../locale/it/LC_MESSAGES/django.po | 74 ++ .../locale/ru/LC_MESSAGES/django.mo | Bin 0 -> 1535 bytes .../locale/ru/LC_MESSAGES/django.po | 71 ++ .../locale/zh_CN/LC_MESSAGES/django.mo | Bin 0 -> 1160 bytes .../locale/zh_CN/LC_MESSAGES/django.po | 72 ++ .../multichoice/migrations/0001_initial.py | 47 + quiz-app/multichoice/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 2538 bytes .../__pycache__/0001_initial.cpython-37.pyc | Bin 0 -> 1650 bytes .../__pycache__/0001_initial.cpython-38.pyc | Bin 0 -> 1676 bytes .../__pycache__/0001_initial.cpython-39.pyc | Bin 0 -> 1676 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 186 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 145 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 149 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 149 bytes quiz-app/multichoice/models.py | 78 ++ quiz-app/multichoice/static/logo.png | Bin 0 -> 15361 bytes quiz-app/multichoice/tests.py | 52 + .../quiz/__pycache__/admin.cpython-311.pyc | Bin 0 -> 6313 bytes .../quiz/__pycache__/forms.cpython-311.pyc | Bin 0 -> 2093 bytes .../quiz/__pycache__/models.cpython-311.pyc | Bin 0 -> 31926 bytes .../quiz/__pycache__/urls.cpython-311.pyc | Bin 0 -> 1817 bytes .../quiz/__pycache__/views.cpython-311.pyc | Bin 0 -> 23391 bytes quiz-app/quiz/admin.py | 112 ++ quiz-app/quiz/forms.py | 17 + quiz-app/quiz/locale/de/LC_MESSAGES/django.mo | Bin 0 -> 7746 bytes quiz-app/quiz/locale/de/LC_MESSAGES/django.po | 476 +++++++++ .../quiz/locale/es_CO/LC_MESSAGES/django.mo | Bin 0 -> 7861 bytes .../quiz/locale/es_CO/LC_MESSAGES/django.po | 473 +++++++++ quiz-app/quiz/locale/fr/LC_MESSAGES/django.mo | Bin 0 -> 8014 bytes quiz-app/quiz/locale/fr/LC_MESSAGES/django.po | 330 ++++++ quiz-app/quiz/locale/it/LC_MESSAGES/django.mo | Bin 0 -> 7232 bytes quiz-app/quiz/locale/it/LC_MESSAGES/django.po | 479 +++++++++ quiz-app/quiz/locale/ru/LC_MESSAGES/django.mo | Bin 0 -> 9767 bytes quiz-app/quiz/locale/ru/LC_MESSAGES/django.po | 464 ++++++++ .../quiz/locale/zh_CN/LC_MESSAGES/django.mo | Bin 0 -> 7158 bytes .../quiz/locale/zh_CN/LC_MESSAGES/django.po | 474 +++++++++ quiz-app/quiz/migrations/0001_initial.py | 123 +++ .../migrations/0002_auto_20210417_1052.py | 40 + .../migrations/0003_progress_user_answers.py | 21 + .../0004_remove_progress_user_answers.py | 17 + .../migrations/0005_progress_user_answers.py | 20 + .../0006_alter_progress_user_answers.py | 20 + .../0007_remove_progress_user_answers.py | 17 + quiz-app/quiz/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 8791 bytes .../__pycache__/0001_initial.cpython-37.pyc | Bin 0 -> 4489 bytes .../__pycache__/0001_initial.cpython-38.pyc | Bin 0 -> 4543 bytes .../__pycache__/0001_initial.cpython-39.pyc | Bin 0 -> 4541 bytes .../0002_auto_20210417_1052.cpython-311.pyc | Bin 0 -> 2631 bytes .../0002_auto_20210417_1052.cpython-37.pyc | Bin 0 -> 1321 bytes .../0002_auto_20210417_1052.cpython-38.pyc | Bin 0 -> 1343 bytes .../0002_auto_20210417_1052.cpython-39.pyc | Bin 0 -> 1343 bytes ...0003_progress_user_answers.cpython-311.pyc | Bin 0 -> 1306 bytes .../0003_progress_user_answers.cpython-37.pyc | Bin 0 -> 865 bytes .../0003_progress_user_answers.cpython-38.pyc | Bin 0 -> 879 bytes .../0003_progress_user_answers.cpython-39.pyc | Bin 0 -> 879 bytes ...move_progress_user_answers.cpython-311.pyc | Bin 0 -> 724 bytes ...emove_progress_user_answers.cpython-37.pyc | Bin 0 -> 515 bytes ...emove_progress_user_answers.cpython-38.pyc | Bin 0 -> 529 bytes ...emove_progress_user_answers.cpython-39.pyc | Bin 0 -> 529 bytes ...0005_progress_user_answers.cpython-311.pyc | Bin 0 -> 1291 bytes .../0005_progress_user_answers.cpython-37.pyc | Bin 0 -> 851 bytes .../0005_progress_user_answers.cpython-38.pyc | Bin 0 -> 865 bytes .../0005_progress_user_answers.cpython-39.pyc | Bin 0 -> 865 bytes ...lter_progress_user_answers.cpython-311.pyc | Bin 0 -> 1292 bytes ...alter_progress_user_answers.cpython-37.pyc | Bin 0 -> 852 bytes ...alter_progress_user_answers.cpython-38.pyc | Bin 0 -> 866 bytes ...alter_progress_user_answers.cpython-39.pyc | Bin 0 -> 866 bytes ...move_progress_user_answers.cpython-311.pyc | Bin 0 -> 730 bytes ...emove_progress_user_answers.cpython-37.pyc | Bin 0 -> 521 bytes ...emove_progress_user_answers.cpython-38.pyc | Bin 0 -> 535 bytes ...emove_progress_user_answers.cpython-39.pyc | Bin 0 -> 535 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 179 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 138 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 142 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 142 bytes quiz-app/quiz/models.py | 621 +++++++++++ quiz-app/quiz/static/css/style.css | 17 + quiz-app/quiz/static/favicon.ico | Bin 0 -> 9892 bytes quiz-app/quiz/static/images/wp.jpg | Bin 0 -> 75729 bytes quiz-app/quiz/static/logo.png | Bin 0 -> 15361 bytes quiz-app/quiz/templates/base.html | 63 ++ quiz-app/quiz/templates/correct_answer.html | 32 + quiz-app/quiz/templates/progress.html | 85 ++ quiz-app/quiz/templates/question.html | 82 ++ .../quiz/templates/quiz/category_list.html | 18 + quiz-app/quiz/templates/quiz/quiz_detail.html | 19 + quiz-app/quiz/templates/quiz/quiz_list.html | 43 + .../quiz/templates/quiz/sitting_detail.html | 68 ++ .../quiz/templates/quiz/sitting_list.html | 64 ++ quiz-app/quiz/templates/result.html | 99 ++ quiz-app/quiz/templates/single_complete.html | 18 + .../quiz/templates/view_quiz_category.html | 23 + quiz-app/quiz/templatetags/__init__.py | 0 .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 181 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 140 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 144 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 144 bytes .../__pycache__/quiz_tags.cpython-311.pyc | Bin 0 -> 1289 bytes .../__pycache__/quiz_tags.cpython-37.pyc | Bin 0 -> 844 bytes .../__pycache__/quiz_tags.cpython-38.pyc | Bin 0 -> 862 bytes .../__pycache__/quiz_tags.cpython-39.pyc | Bin 0 -> 862 bytes quiz-app/quiz/templatetags/quiz_tags.py | 25 + quiz-app/quiz/tests.py | 993 ++++++++++++++++++ quiz-app/quiz/urls.py | 51 + quiz-app/quiz/views.py | 389 +++++++ .../locale/fr/LC_MESSAGES/django.mo | Bin 0 -> 2072 bytes .../locale/fr/LC_MESSAGES/django.po | 109 ++ quiz-app/registration/static/css/style.css | 17 + quiz-app/registration/static/favicon.ico | Bin 0 -> 9892 bytes quiz-app/registration/static/images/wp.jpg | Bin 0 -> 75729 bytes quiz-app/registration/static/logo.png | Bin 0 -> 15361 bytes .../registration/templates/base_generic.html | 53 + .../templates/registration/logged_out.html | 7 + .../templates/registration/login.html | 38 + .../registration/password_reset_complete.html | 7 + .../registration/password_reset_confirm.html | 30 + .../registration/password_reset_done.html | 6 + .../registration/password_reset_email.html | 4 + .../registration/password_reset_form.html | 14 + quiz-app/requirements.txt | 7 + .../__pycache__/models.cpython-311.pyc | Bin 0 -> 2440 bytes .../locale/de/LC_MESSAGES/django.mo | Bin 0 -> 699 bytes .../locale/de/LC_MESSAGES/django.po | 36 + .../locale/es_CO/LC_MESSAGES/django.mo | Bin 0 -> 742 bytes .../locale/es_CO/LC_MESSAGES/django.po | 35 + .../locale/it/LC_MESSAGES/django.mo | Bin 0 -> 730 bytes .../locale/it/LC_MESSAGES/django.po | 37 + .../locale/ru/LC_MESSAGES/django.mo | Bin 0 -> 975 bytes .../locale/ru/LC_MESSAGES/django.po | 36 + .../locale/zh_CN/LC_MESSAGES/django.mo | Bin 0 -> 713 bytes .../locale/zh_CN/LC_MESSAGES/django.po | 36 + .../true_false/migrations/0001_initial.py | 31 + quiz-app/true_false/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 1542 bytes .../__pycache__/0001_initial.cpython-37.pyc | Bin 0 -> 1071 bytes .../__pycache__/0001_initial.cpython-38.pyc | Bin 0 -> 1089 bytes .../__pycache__/0001_initial.cpython-39.pyc | Bin 0 -> 1089 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 185 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 144 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 148 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 148 bytes quiz-app/true_false/models.py | 45 + quiz-app/true_false/tests.py | 35 + 189 files changed, 7427 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 docker-compose.yml create mode 100644 quiz-app/app/__pycache__/settings.cpython-311.pyc create mode 100644 quiz-app/app/__pycache__/urls.cpython-311.pyc create mode 100644 quiz-app/app/__pycache__/wsgi.cpython-311.pyc create mode 100644 quiz-app/app/settings.py create mode 100644 quiz-app/app/static/css/style.css create mode 100644 quiz-app/app/static/favicon.ico create mode 100644 quiz-app/app/static/images/wp.jpg create mode 100644 quiz-app/app/static/logo.png create mode 100644 quiz-app/app/urls.py create mode 100644 quiz-app/app/wsgi.py create mode 100644 quiz-app/essay/__pycache__/models.cpython-311.pyc create mode 100644 quiz-app/essay/locale/de/LC_MESSAGES/django.mo create mode 100644 quiz-app/essay/locale/de/LC_MESSAGES/django.po create mode 100644 quiz-app/essay/locale/es_CO/LC_MESSAGES/django.mo create mode 100644 quiz-app/essay/locale/es_CO/LC_MESSAGES/django.po create mode 100644 quiz-app/essay/locale/it/LC_MESSAGES/django.mo create mode 100644 quiz-app/essay/locale/it/LC_MESSAGES/django.po create mode 100644 quiz-app/essay/locale/ru/LC_MESSAGES/django.mo create mode 100644 quiz-app/essay/locale/ru/LC_MESSAGES/django.po create mode 100644 quiz-app/essay/locale/zh_CN/LC_MESSAGES/django.mo create mode 100644 quiz-app/essay/locale/zh_CN/LC_MESSAGES/django.po create mode 100644 quiz-app/essay/migrations/0001_initial.py create mode 100644 quiz-app/essay/migrations/__init__.py create mode 100644 quiz-app/essay/migrations/__pycache__/0001_initial.cpython-311.pyc create mode 100644 quiz-app/essay/migrations/__pycache__/0001_initial.cpython-37.pyc create mode 100644 quiz-app/essay/migrations/__pycache__/0001_initial.cpython-38.pyc create mode 100644 quiz-app/essay/migrations/__pycache__/0001_initial.cpython-39.pyc create mode 100644 quiz-app/essay/migrations/__pycache__/__init__.cpython-311.pyc create mode 100644 quiz-app/essay/migrations/__pycache__/__init__.cpython-37.pyc create mode 100644 quiz-app/essay/migrations/__pycache__/__init__.cpython-38.pyc create mode 100644 quiz-app/essay/migrations/__pycache__/__init__.cpython-39.pyc create mode 100644 quiz-app/essay/models.py create mode 100644 quiz-app/essay/tests.py create mode 100755 quiz-app/manage.py create mode 100644 quiz-app/multichoice/__pycache__/models.cpython-311.pyc create mode 100644 quiz-app/multichoice/locale/de/LC_MESSAGES/django.mo create mode 100644 quiz-app/multichoice/locale/de/LC_MESSAGES/django.po create mode 100644 quiz-app/multichoice/locale/es_CO/LC_MESSAGES/django.mo create mode 100644 quiz-app/multichoice/locale/es_CO/LC_MESSAGES/django.po create mode 100644 quiz-app/multichoice/locale/it/LC_MESSAGES/django.mo create mode 100644 quiz-app/multichoice/locale/it/LC_MESSAGES/django.po create mode 100644 quiz-app/multichoice/locale/ru/LC_MESSAGES/django.mo create mode 100644 quiz-app/multichoice/locale/ru/LC_MESSAGES/django.po create mode 100644 quiz-app/multichoice/locale/zh_CN/LC_MESSAGES/django.mo create mode 100644 quiz-app/multichoice/locale/zh_CN/LC_MESSAGES/django.po create mode 100644 quiz-app/multichoice/migrations/0001_initial.py create mode 100644 quiz-app/multichoice/migrations/__init__.py create mode 100644 quiz-app/multichoice/migrations/__pycache__/0001_initial.cpython-311.pyc create mode 100644 quiz-app/multichoice/migrations/__pycache__/0001_initial.cpython-37.pyc create mode 100644 quiz-app/multichoice/migrations/__pycache__/0001_initial.cpython-38.pyc create mode 100644 quiz-app/multichoice/migrations/__pycache__/0001_initial.cpython-39.pyc create mode 100644 quiz-app/multichoice/migrations/__pycache__/__init__.cpython-311.pyc create mode 100644 quiz-app/multichoice/migrations/__pycache__/__init__.cpython-37.pyc create mode 100644 quiz-app/multichoice/migrations/__pycache__/__init__.cpython-38.pyc create mode 100644 quiz-app/multichoice/migrations/__pycache__/__init__.cpython-39.pyc create mode 100644 quiz-app/multichoice/models.py create mode 100644 quiz-app/multichoice/static/logo.png create mode 100644 quiz-app/multichoice/tests.py create mode 100644 quiz-app/quiz/__pycache__/admin.cpython-311.pyc create mode 100644 quiz-app/quiz/__pycache__/forms.cpython-311.pyc create mode 100644 quiz-app/quiz/__pycache__/models.cpython-311.pyc create mode 100644 quiz-app/quiz/__pycache__/urls.cpython-311.pyc create mode 100644 quiz-app/quiz/__pycache__/views.cpython-311.pyc create mode 100644 quiz-app/quiz/admin.py create mode 100644 quiz-app/quiz/forms.py create mode 100644 quiz-app/quiz/locale/de/LC_MESSAGES/django.mo create mode 100644 quiz-app/quiz/locale/de/LC_MESSAGES/django.po create mode 100644 quiz-app/quiz/locale/es_CO/LC_MESSAGES/django.mo create mode 100644 quiz-app/quiz/locale/es_CO/LC_MESSAGES/django.po create mode 100644 quiz-app/quiz/locale/fr/LC_MESSAGES/django.mo create mode 100644 quiz-app/quiz/locale/fr/LC_MESSAGES/django.po create mode 100644 quiz-app/quiz/locale/it/LC_MESSAGES/django.mo create mode 100644 quiz-app/quiz/locale/it/LC_MESSAGES/django.po create mode 100644 quiz-app/quiz/locale/ru/LC_MESSAGES/django.mo create mode 100644 quiz-app/quiz/locale/ru/LC_MESSAGES/django.po create mode 100644 quiz-app/quiz/locale/zh_CN/LC_MESSAGES/django.mo create mode 100644 quiz-app/quiz/locale/zh_CN/LC_MESSAGES/django.po create mode 100644 quiz-app/quiz/migrations/0001_initial.py create mode 100644 quiz-app/quiz/migrations/0002_auto_20210417_1052.py create mode 100644 quiz-app/quiz/migrations/0003_progress_user_answers.py create mode 100644 quiz-app/quiz/migrations/0004_remove_progress_user_answers.py create mode 100644 quiz-app/quiz/migrations/0005_progress_user_answers.py create mode 100644 quiz-app/quiz/migrations/0006_alter_progress_user_answers.py create mode 100644 quiz-app/quiz/migrations/0007_remove_progress_user_answers.py create mode 100644 quiz-app/quiz/migrations/__init__.py create mode 100644 quiz-app/quiz/migrations/__pycache__/0001_initial.cpython-311.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0001_initial.cpython-37.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0001_initial.cpython-38.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0001_initial.cpython-39.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0002_auto_20210417_1052.cpython-311.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0002_auto_20210417_1052.cpython-37.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0002_auto_20210417_1052.cpython-38.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0002_auto_20210417_1052.cpython-39.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0003_progress_user_answers.cpython-311.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0003_progress_user_answers.cpython-37.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0003_progress_user_answers.cpython-38.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0003_progress_user_answers.cpython-39.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0004_remove_progress_user_answers.cpython-311.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0004_remove_progress_user_answers.cpython-37.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0004_remove_progress_user_answers.cpython-38.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0004_remove_progress_user_answers.cpython-39.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0005_progress_user_answers.cpython-311.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0005_progress_user_answers.cpython-37.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0005_progress_user_answers.cpython-38.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0005_progress_user_answers.cpython-39.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0006_alter_progress_user_answers.cpython-311.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0006_alter_progress_user_answers.cpython-37.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0006_alter_progress_user_answers.cpython-38.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0006_alter_progress_user_answers.cpython-39.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0007_remove_progress_user_answers.cpython-311.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0007_remove_progress_user_answers.cpython-37.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0007_remove_progress_user_answers.cpython-38.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/0007_remove_progress_user_answers.cpython-39.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/__init__.cpython-311.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/__init__.cpython-37.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/__init__.cpython-38.pyc create mode 100644 quiz-app/quiz/migrations/__pycache__/__init__.cpython-39.pyc create mode 100644 quiz-app/quiz/models.py create mode 100644 quiz-app/quiz/static/css/style.css create mode 100644 quiz-app/quiz/static/favicon.ico create mode 100644 quiz-app/quiz/static/images/wp.jpg create mode 100644 quiz-app/quiz/static/logo.png create mode 100644 quiz-app/quiz/templates/base.html create mode 100644 quiz-app/quiz/templates/correct_answer.html create mode 100644 quiz-app/quiz/templates/progress.html create mode 100644 quiz-app/quiz/templates/question.html create mode 100644 quiz-app/quiz/templates/quiz/category_list.html create mode 100644 quiz-app/quiz/templates/quiz/quiz_detail.html create mode 100644 quiz-app/quiz/templates/quiz/quiz_list.html create mode 100644 quiz-app/quiz/templates/quiz/sitting_detail.html create mode 100644 quiz-app/quiz/templates/quiz/sitting_list.html create mode 100644 quiz-app/quiz/templates/result.html create mode 100644 quiz-app/quiz/templates/single_complete.html create mode 100644 quiz-app/quiz/templates/view_quiz_category.html create mode 100644 quiz-app/quiz/templatetags/__init__.py create mode 100644 quiz-app/quiz/templatetags/__pycache__/__init__.cpython-311.pyc create mode 100644 quiz-app/quiz/templatetags/__pycache__/__init__.cpython-37.pyc create mode 100644 quiz-app/quiz/templatetags/__pycache__/__init__.cpython-38.pyc create mode 100644 quiz-app/quiz/templatetags/__pycache__/__init__.cpython-39.pyc create mode 100644 quiz-app/quiz/templatetags/__pycache__/quiz_tags.cpython-311.pyc create mode 100644 quiz-app/quiz/templatetags/__pycache__/quiz_tags.cpython-37.pyc create mode 100644 quiz-app/quiz/templatetags/__pycache__/quiz_tags.cpython-38.pyc create mode 100644 quiz-app/quiz/templatetags/__pycache__/quiz_tags.cpython-39.pyc create mode 100644 quiz-app/quiz/templatetags/quiz_tags.py create mode 100644 quiz-app/quiz/tests.py create mode 100644 quiz-app/quiz/urls.py create mode 100644 quiz-app/quiz/views.py create mode 100644 quiz-app/registration/locale/fr/LC_MESSAGES/django.mo create mode 100644 quiz-app/registration/locale/fr/LC_MESSAGES/django.po create mode 100644 quiz-app/registration/static/css/style.css create mode 100644 quiz-app/registration/static/favicon.ico create mode 100644 quiz-app/registration/static/images/wp.jpg create mode 100644 quiz-app/registration/static/logo.png create mode 100644 quiz-app/registration/templates/base_generic.html create mode 100644 quiz-app/registration/templates/registration/logged_out.html create mode 100644 quiz-app/registration/templates/registration/login.html create mode 100644 quiz-app/registration/templates/registration/password_reset_complete.html create mode 100644 quiz-app/registration/templates/registration/password_reset_confirm.html create mode 100644 quiz-app/registration/templates/registration/password_reset_done.html create mode 100644 quiz-app/registration/templates/registration/password_reset_email.html create mode 100644 quiz-app/registration/templates/registration/password_reset_form.html create mode 100644 quiz-app/requirements.txt create mode 100644 quiz-app/true_false/__pycache__/models.cpython-311.pyc create mode 100644 quiz-app/true_false/locale/de/LC_MESSAGES/django.mo create mode 100644 quiz-app/true_false/locale/de/LC_MESSAGES/django.po create mode 100644 quiz-app/true_false/locale/es_CO/LC_MESSAGES/django.mo create mode 100644 quiz-app/true_false/locale/es_CO/LC_MESSAGES/django.po create mode 100644 quiz-app/true_false/locale/it/LC_MESSAGES/django.mo create mode 100644 quiz-app/true_false/locale/it/LC_MESSAGES/django.po create mode 100644 quiz-app/true_false/locale/ru/LC_MESSAGES/django.mo create mode 100644 quiz-app/true_false/locale/ru/LC_MESSAGES/django.po create mode 100644 quiz-app/true_false/locale/zh_CN/LC_MESSAGES/django.mo create mode 100644 quiz-app/true_false/locale/zh_CN/LC_MESSAGES/django.po create mode 100644 quiz-app/true_false/migrations/0001_initial.py create mode 100644 quiz-app/true_false/migrations/__init__.py create mode 100644 quiz-app/true_false/migrations/__pycache__/0001_initial.cpython-311.pyc create mode 100644 quiz-app/true_false/migrations/__pycache__/0001_initial.cpython-37.pyc create mode 100644 quiz-app/true_false/migrations/__pycache__/0001_initial.cpython-38.pyc create mode 100644 quiz-app/true_false/migrations/__pycache__/0001_initial.cpython-39.pyc create mode 100644 quiz-app/true_false/migrations/__pycache__/__init__.cpython-311.pyc create mode 100644 quiz-app/true_false/migrations/__pycache__/__init__.cpython-37.pyc create mode 100644 quiz-app/true_false/migrations/__pycache__/__init__.cpython-38.pyc create mode 100644 quiz-app/true_false/migrations/__pycache__/__init__.cpython-39.pyc create mode 100644 quiz-app/true_false/models.py create mode 100644 quiz-app/true_false/tests.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d3cff13 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +db.sqlite3 +Pipfile +Pipfile.lock +essay/__pycache__ +essay/__init__.py +testenv_django_quiz/__pycache__ +testenv_django_quiz/__init__.py +true_false/__pycache__ +true_false/__init__.py +multichoice/__pycache__ +multichoice/__init__.py +venv \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e59ac01 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +FROM python:3.11-slim-bookworm + +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONUNBUFFERED 1 + +RUN apt-get update && apt-get install -y \ + gcc \ + && rm -rf /var/lib/apt/lists/* + +RUN mkdir /code +WORKDIR /code + +COPY quiz-app/requirements.txt /code/ +RUN pip install -r requirements.txt +COPY quiz-app/. /code/ +CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"] \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..582ed1c --- /dev/null +++ b/README.md @@ -0,0 +1,69 @@ +# DJANGO QUIZZ + +### Ce projet est une version fonctionnelle actualisée de Tom Walker (https://github.com/tomwalker/django_quiz). + +les prérequis sont : +- python 3.6 +- pip3 +- les librairies contenus dans le requirements.txt + +Les modifications apportées concernent la librairy pour la lectures des classes codées en python2 : +- Utilisation de la librairy six et utilisation de Django 2.2.9 (la 3.0 ne prends plus en charge python 2). +- Modification du requirements.txt en conséquence. + + +## INSTALLATION + + git clone + + cd djangoquizz + + python3 manage.py runserver + +## VISITER localhost:8000/admin et ce connecter avec les identifiants administrateur par défaut : + + user : Greg + + mot de passe : Juliette21 + +## Changer l'administrateur en créant un nouveaux utilisateur avec tous les droits, puis supprimer l'utilisateur "Greg" + +## CREER SON QUIZZ ! + +### Creer son quizz en choisissant le type (multiplechoice) : + +### Créer des questions : + +### Créer des utilisateurs : + +### Customiser le logo : + +## Avec Docker : + +### INSTALLATION + + git clone + + cd djangoquizz + + docker build -t djangoquizz . + + docker run -d -p 8000:8000 djangoquizz + +### VISITER 0.0.0.0:8000/admin + + admin : Greg / mdp: Juliette21 + + --> Pour modifier les acréditations de l'admin, éffectuer : + + python manage.py makemigrations + + python manage.py migrate + + python manage.py createsuperuser + +### Personnaliser : + +- Modifier la dernière ligne pour spécifier une IP (ex: 192.168.1.1:8000) +- --> répercuter l'adresse dans /testenv_django_quiz/settings.py dans ALLOWED_HOSTS = ['192.168.1.1'] + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..44b87f2 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +version: '3' + +services: + djangoquiz: + build: . + container_name: djangoquiz + restart: unless-stopped + ports: + - "8000:8000" + diff --git a/quiz-app/app/__pycache__/settings.cpython-311.pyc b/quiz-app/app/__pycache__/settings.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc7482bfa3c20a2ac888b762dcaab09dd83551a1 GIT binary patch literal 2729 zcmb7G%}*Og6yNm+UVmbY`3R6IRnsa4WgQ3&Y1M>o?1fk{Hf8OQ?jftiGnfV2Yj)QV zRy{aUPF1B=QKUpw)I>R?X;Z0Ed+DD66$dn@NImstDYu;Zc5M@5qLz+5Z)V^_R71H&1Kw`cImo9#V)xbcrg{B28O!N68^N92BOXgWAhB zh7z3?Z{5{q9F@`(cC5SGvZp=mS?BmaHQHWwnxHWA9DIHWz1jY4C3=xl^dXn%NA4mm z22hU}gdQqV$n%UAdtqc?3?r}DhkQr8i?r=`j@XO*&mFKk^kys4$b|x6C-{t3XcT(v zf_?f?uNXyP)OR9_k)sw-|6_+jivuW%2Ebwz4cc_bro#$dbcuuLlsJS @f+6!a13 zqi9qdLu2A;Ax-aVl;8`m9309RVd#1P@9_Gm@+rcO-znY7GpbCCN5pLJ$2`7 zOxj$ZHqb`p+|I`2C+69$_iyj0SEL-F$KTNLnBR<|b-7Yh*@9XzG-ZXAQCX>&{oUM} zv1X2TF)awL7{*Q&>*i3GP{+EisFmY_G6>`%AV#_ohHNN>Ri%V=;@Ye!Ch?bRC19{TkZYx2 z$Jznx4x*jjPVhoA z_z5&MyjjD#VNSGk59`}X>^m%52{$ixDIX^D9e}nh<|3YJT;c|wNfK8wwImRRTU?av znJ2rLOJy^H8MX4Ztrry*CXi_R6p07nRT)bB@G78{w`tTjONxOnnm%B*<}nB9;WP88 z3{PAcZh_bO;TbTmcR6jBPF2?RZB;|kmRwShy&ap^vBnwJEw33^P|8Y4wyws_riQAS zS5InbL8&O^S~-m?MPuzPe)gpJ=1o~_`S{kr=O;Cgsg<#&6pmRSj#Z5~^SOk{#C7{U ziFYQqtRh^}S-4ElQ>j(d@L4WG%Og1jWswdMXSK2 zARc)|w>gX?S+A8O5#|~v@YazNpTH-U_?&cu|B|?q{I&c%33BOlc9~B~*Rw)SAdz$y zPEcCnL7h+Jr2JBv^aC%O&mCokQW+r!SU^HS3BYy2+(eAk0GH z2Gd+-KF`hbQX-q=!C-2Em&7cT8%bWgIWUn;nPB+<+Vw@Koy=Id8r9af_UX3lg`wjtv8z zBAu=7ykS0rldF~RRqYa(vi=+@-^_eF`}ORjsmC)6*UrNWI6hXFHfDtK z_U?wohSLFd7<;kUx%i@UvD91)1jihZ^UH}Fd zTEK>F2ze}6f-Sa18?_Mx0w5w53G5aY!`Fv}%FBIXe;3?b_<%Vi0!nBhwQ z;S8}|!qNq($v>Q?2GfFuZPTdkozNhJAU(Lzt{8*K{y5@N*H%`>>9%j<9?c&fPCv=U` z@PG54n45?Y!ZFw${natp8!gjG5ftR!S-&zkcy2wP#%MP|yJIA=(&oSz7^AJDc%zwY mG-K3CP%H1O_b>aGgR5BCNtB%!RTEU5l+c>cEAvGac8yKR(zsB*fFtJviRi-zC(?wTcI*NUu1xq$D#h zy;zg&7E^xlErFD*#Ju!;z2y9&R6USMMIe{nVo%L0%Paz##RXKKlA4xSnp1L%8_AND z44*-c_+_S_k)NBYpI(%ju3w&ClwDkqn4D^)4>47@ur#wuA4KQ^wd#W~$O^rJ%3mBd zx%nxjIjMF?a4sa)YxY2XIIB5t600C_8O)Bpeg literal 0 HcmV?d00001 diff --git a/quiz-app/app/settings.py b/quiz-app/app/settings.py new file mode 100644 index 0000000..a81eea4 --- /dev/null +++ b/quiz-app/app/settings.py @@ -0,0 +1,145 @@ +from environs import Env +import os + +# pour utilisation des variables d'environnement pour les données sensibles +envi = Env() +Env.read_env() + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'cgx%r24k2zk(+1*1g)y=+60^2x$)_qj4tdkn(yk19z$v!^yo=_' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +# valide en local et pour docker +ALLOWED_HOSTS = ['*'] + +LOGIN_REDIRECT_URL = '/' +LOGOUT_REDIRECT_URL = '/' + + +# Application definition +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + + # django_quiz apps + 'quiz', + 'multichoice', + 'true_false', + 'essay', + 'registration' +] + +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 = 'app.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [os.path.join(BASE_DIR, 'templates')], + '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', + ], + }, + }, +] + +WSGI_APPLICATION = 'app.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/2.2/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.2/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', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/2.2/topics/i18n/ + +LANGUAGE_CODE = 'fr' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/2.2/howto/static-files/ + +STATIC_URL = '/static/' + + +# pour envoyer des mail dans un dossier local +# EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' + +# pour envoyer via GMAIL +#EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' +#EMAIL_HOST = 'smtp.gmail.com' +#EMAIL_HOST_USER = envi('EMAIL_HOST_USER') +#EMAIL_HOST_PASSWORD = envi('EMAIL_HOST_PASSWORD') +#EMAIL_PORT = 587 +#EMAIL_USE_TLS = True +#LOGIN_REDIRECT_URL = '/' +DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' +#DEFAULT_FROM_EMAIL = 'quizz du garage numerique' + + +## PRODUCTION CONFIG + +#SENDGRID_API_KEY = os.getenv('SENDGRID_API_KEY') +#EMAIL_HOST = 'smtp.sendgrid.net' +#EMAIL_HOST_USER = 'apikey' # this is exactly the value 'apikey' +#EMAIL_HOST_PASSWORD = SENDGRID_API_KEY +#EMAIL_PORT = 587 +#EMAIL_USE_TLS = True + diff --git a/quiz-app/app/static/css/style.css b/quiz-app/app/static/css/style.css new file mode 100644 index 0000000..3df87fc --- /dev/null +++ b/quiz-app/app/static/css/style.css @@ -0,0 +1,17 @@ +@import url('https://fonts.googleapis.com/css2?family=Play&display=swap'); + +/* Appliquer les polices aux éléments du document */ +body { + font-family: 'Play'; /* Aladin pour le corps du document */ + /* font-size: 1.5em; */ +} + +.button-link { + background: none; + border: none; + color: #497AA1; + text-decoration: underline; + cursor: pointer; + padding: 0; + font: inherit; +} \ No newline at end of file diff --git a/quiz-app/app/static/favicon.ico b/quiz-app/app/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..02fb53aba1b2b7ffa328b778040531cb31148939 GIT binary patch literal 9892 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 literal 0 HcmV?d00001 diff --git a/quiz-app/app/static/images/wp.jpg b/quiz-app/app/static/images/wp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bfb2c9f15e44f612da9da6bd73037dfd45bd0612 GIT binary patch literal 75729 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ξ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%0AvrcKheDOGK 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 sa, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-31 22:44+0000\n" +"PO-Revision-Date: 2019-03-07 21:13+0100\n" +"Last-Translator: Reiner Mayers\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Translated-Using: django-rosetta 0.7.6\n" +"Language-Team: \n" +"X-Generator: Poedit 2.0.6\n" + +#: apps/essay/models.py:26 +msgid "Essay style question" +msgstr "Aufsatzartige Frage" + +#: apps/essay/models.py:27 +msgid "Essay style questions" +msgstr "Aufsatzartige Frage" diff --git a/quiz-app/essay/locale/es_CO/LC_MESSAGES/django.mo b/quiz-app/essay/locale/es_CO/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..007ebc31171929db4d7094d82f613afe39a5016a GIT binary patch literal 578 zcmZvZ!A{#i5Qa?)7av;+mmY>&TQsR{5^8No)i#6*i3kgss<(D)PtAg}Yj)SD=>u@$ z%IongjDwU&Re$Nzcz*wyowXlctltN$=ge!S&ulO!OsAjBCL@_w%nft976f-(x0sjD zf?%8LJFaXm)XnO|RuD{_lXGx>UK3om@>%*CE3l#L+MFC62*OtBa9M=_r+ea8?iWuXLO^w z@vGcEMthj_As&dq2aE=sJK=*{SrO(WX97OY$f`nWnCPlj?g9?3NKy8rc}BT zkp5CW%<9(48jp;fIRUy^v~H9P;puVoM#Ihs;ab literal 0 HcmV?d00001 diff --git a/quiz-app/essay/locale/es_CO/LC_MESSAGES/django.po b/quiz-app/essay/locale/es_CO/LC_MESSAGES/django.po new file mode 100644 index 0000000..85ee213 --- /dev/null +++ b/quiz-app/essay/locale/es_CO/LC_MESSAGES/django.po @@ -0,0 +1,26 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# , 2014. +msgid "" +msgstr "" +"Project-Id-Version: django-quiz-essay\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-10-02 16:32+0000\n" +"PO-Revision-Date: 2016-03-24 15:57-0500\n" +"Language-Team: American English \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.4\n" +"Last-Translator: \n" +"Language: es_CO\n" + +#: models.py:23 +msgid "Essay style question" +msgstr "Pregunta estilo ensayo" + +#: models.py:24 +msgid "Essay style questions" +msgstr "Preguntas estilo ensayo" diff --git a/quiz-app/essay/locale/it/LC_MESSAGES/django.mo b/quiz-app/essay/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..4f1115761adf3f379a188ecb41f13c42f65c87ae GIT binary patch literal 546 zcmZvXOH0E*5XaZoB}dVl!g#78Ta#+Fqz|k$N-@<^)1o)mW{q3Y-MG6c_B(j>>v{BZ zIH{l@{^7^W&dko^V}13VpjMDAM-54Ho*)Z+EWRmjR4|!EN{E+8OXn zX-j)15ivc>6GJ2AgVVpE13nYQA9~I#_o3o?RqDC)(1S|F_p19Y$_bgVG}26(lv$;H zcq{=lS|v=#Bxeby5oc2$!uIv$u$bEj!_!ohl}=heH8`)=?FGL}dS%z?C~3LG=JO1v zTmEVfvXlu~hw(GhhTG;ax}de+x?+hZu4y30Di$*Fq4p@O(@%5FQhK5E)c7E?#nUt^ zb@+ChyApPq;O*6&yPr#VOowLCBc9+PifV-uEd#fFQa*M_Br*lDfLKkLj2UEHLyAVL L8G}Dr{wMndKscCX literal 0 HcmV?d00001 diff --git a/quiz-app/essay/locale/it/LC_MESSAGES/django.po b/quiz-app/essay/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000..c9843ee --- /dev/null +++ b/quiz-app/essay/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,28 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-31 22:44+0000\n" +"PO-Revision-Date: 2015-10-31 22:15+0000\n" +"Last-Translator: b' <>'\n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Translated-Using: django-rosetta 0.7.6\n" + +#: apps/essay/models.py:26 +msgid "Essay style question" +msgstr "Tipo di domanda per la prova " + +#: apps/essay/models.py:27 +msgid "Essay style questions" +msgstr "Tipo di domande per la prova " diff --git a/quiz-app/essay/locale/ru/LC_MESSAGES/django.mo b/quiz-app/essay/locale/ru/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..2c649b03ba508fda66a9529b5d44e4ff6e347c37 GIT binary patch literal 620 zcmZvY&2AGh5XYA<3GETVjl*!DqN*m?+XRJ8wzQNKRZ2uuEeLVK><(ME8#}eV6+yl9 z&XvdD$YUV2FTk@fn+S4Yq@U)){~3?{``+#E5!)^1A=72Bt%7xY#h6!VR7IGRnx(KeBc}^xU}UOV z`(qfMmV{dN4VJdp<)mX>weznn1=qxr!^vpTEBW6Nho|wl{WSNAG z4QNC0D3cOifB=?rzLOD)z5YC2k4BfcK`qY literal 0 HcmV?d00001 diff --git a/quiz-app/essay/locale/ru/LC_MESSAGES/django.po b/quiz-app/essay/locale/ru/LC_MESSAGES/django.po new file mode 100644 index 0000000..c48d4ee --- /dev/null +++ b/quiz-app/essay/locale/ru/LC_MESSAGES/django.po @@ -0,0 +1,27 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# , 2014. +msgid "" +msgstr "" +"Project-Id-Version: django-quiz-essay\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-10-02 16:32+0000\n" +"PO-Revision-Date: 2015-08-21 19:40+0500\n" +"Last-Translator: \n" +"Language-Team: American English \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 1.5.4\n" + +#: models.py:23 +msgid "Essay style question" +msgstr "Эссе" + +#: models.py:24 +msgid "Essay style questions" +msgstr "Эссе" diff --git a/quiz-app/essay/locale/zh_CN/LC_MESSAGES/django.mo b/quiz-app/essay/locale/zh_CN/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..3ec8b579361fb7657816d79c443d4f28037ceddb GIT binary patch literal 547 zcmZvXJxc>Y5QfjM!fOQ4La-RCC^GRb#t$wg7~?6yi-vd+OV`|bo}9aJcO#~?wiT@X z0b*_AKe5(-;amc0;R_ElJG{I*^D#aCXpzQwni3_gK7abWT zBKBbOJTZ1N?J1Vxo>bS`1JNBkb-7T2VOw4luuukfsbru2T*4!4>p@0zMTbaKl72J{ Vocu<9-L^ho-ag-7zn-7|bl*(cn;!rG literal 0 HcmV?d00001 diff --git a/quiz-app/essay/locale/zh_CN/LC_MESSAGES/django.po b/quiz-app/essay/locale/zh_CN/LC_MESSAGES/django.po new file mode 100644 index 0000000..805ad2a --- /dev/null +++ b/quiz-app/essay/locale/zh_CN/LC_MESSAGES/django.po @@ -0,0 +1,28 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-31 22:44+0000\n" +"PO-Revision-Date: 2015-10-31 22:15+0000\n" +"Last-Translator: b' <>'\n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Translated-Using: django-rosetta 0.7.6\n" + +#: apps/essay/models.py:26 +msgid "Essay style question" +msgstr "论述题" + +#: apps/essay/models.py:27 +msgid "Essay style questions" +msgstr "论述题" diff --git a/quiz-app/essay/migrations/0001_initial.py b/quiz-app/essay/migrations/0001_initial.py new file mode 100644 index 0000000..b0dd781 --- /dev/null +++ b/quiz-app/essay/migrations/0001_initial.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.3 on 2017-06-22 11:20 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('quiz', '__first__'), + ] + + operations = [ + migrations.CreateModel( + name='Essay_Question', + fields=[ + ('question_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='quiz.Question')), + ], + options={ + 'verbose_name': 'Essay style question', + 'verbose_name_plural': 'Essay style questions', + }, + bases=('quiz.question',), + ), + ] diff --git a/quiz-app/essay/migrations/__init__.py b/quiz-app/essay/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/quiz-app/essay/migrations/__pycache__/0001_initial.cpython-311.pyc b/quiz-app/essay/migrations/__pycache__/0001_initial.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..60e85505fee0de11e76f9a1eb9343c05c2833ebf GIT binary patch literal 1301 zcmZuwy>HV%6hEI6$99v5(t^Z7TLhFKkrV`CK?qc!65l8=U?H8{+$A`5Z1>IvB?EL| zV1tbXA*Lb(f`5TOp+ko1rb+|`rUo1RBQz8&G$y;pDwnXLOo$G~U_(ZVZ4i%jp9azpE2`3uZZ zb4pZiqMGqbi8W0gNCK}FQbv3)X595f4NJS{b+{XQVIZW@gH2!DZH@0|OL;8pd;sPh zV#v`baxm2#o#Kw>6fk1Nu907%I#rrd*WA-+%<5*jE6v|nyA%0|Zter}hF+w`*U~yz z{IX}Y4W6h;Eo#5VbmD7yy#Tu~M-8H=&?X1l~x!KC=iR8oQPb`f*2|ptboA1 zp3D1Wh4rN+824P?8!(CEa4?;DoE353XS2Dt!J+-M3XbwK#+O6ENZ|IEocdQHk)Hr) zHEkSbZmd?2h3vG^_LxtFEQQes&*HKxn79jNF-c|+Dqs@=C?`GxzD&q!;`-_`NF^`u zVu)OpDT`P@Sa+o_GLnb-EvJi0kK zw>3GlF?ZqP;o;ncALlokkB7}C!)9yP^oPwjMQ9N(VOSpF$7*4?tCkSIP|LBGcsrxJ z83oPc6*1oS`uS;K-h`KKi!xyzG1?H^z@EF0*|SxZmcb5%!n)X%ID-A_kJ` tnx;X8v{M^s{@<~MK(o)-M6(lH=T_|fqIfH2db_K#MGYv5tVNj? zD&~4rW|uN;v$|5+E9tRNXA9%MIb%}x>8kf6&`KCs2?v(gz%NWU1R zm8o2bD_rSNq0G`ETchS}y}sX9+)?eSz@1IC^@IQYH3UYVP|j-b8PO7mJ|QtM5`yN^6-as{#C4YzCYUTgtFo4m z>j<#H3b0yas3h%?rN@Uo1*c}B(rl8RysPk{CUIhlY7g?Xx~w&axej`c488v0!TI6A z(Xk%Y4XsFz>boU(DM2rOKc9WB<&|pE1wNY%Da;7gGcov?!OMZlSB4|yk%;&<3+z8aFb=u^ literal 0 HcmV?d00001 diff --git a/quiz-app/essay/migrations/__pycache__/0001_initial.cpython-38.pyc b/quiz-app/essay/migrations/__pycache__/0001_initial.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5323c6ed6944dc3cfac7fcc02f92d6c4d782cd55 GIT binary patch literal 922 zcmZuvJ8#rL5VqIr*PSnl1QZ}4MNql93seXplqe6X1W-cbX7Sz3MRxqkt_`|tp-oH0 zAE4v+Y)i#2K%yYb`f?-%YwdVvcOKt-Gw(*Dfko@bm+$ZQ9r_#P_Tr@M&{oe$fCYA8 zm3Cs==FAFKI*C*Ag!j5rxQX}50uJtH3tV(^|C5vW;G9^o_mljs*w&j}mCb5EQDiO3 zv`{hAgEBjlX`9uR(q2iAg*u)Y``c?s$_{Pyh6GxP4OYUyP8?uocEZukJ#c`dp9f%L zm=AJ4ALbF*^ts@Hf9cK15&{Te@Rh+3qDxMmBN!3B4ILh>L7WmKe$i!19SSkeq-urG z8wX0I3-Pu?Wq|7F;`$_-Rvs=##(unhjXfQuU0aKp#I!}wVO8do-q(`qSJgrF_nxxu;Jgv@Z&0wm7o+CrAzqfm` zx4VC!2X#YZ(xduj$ww5R7r&oPKGyPFHR%kWPF5jI3zic!eVW`%)MR^m`-!+lIBpiw zr5GV?^?*dcxWlfv%WcNCt{7)F`@=c=#jkq1I51_;yS9^5sAS}!!&SC1O#2E~Mcw~* lIbIF$cwLHoNKSpQ8}zHwV-qcSu_E=QVM}==BDQG<&R@Vg6wv?x literal 0 HcmV?d00001 diff --git a/quiz-app/essay/migrations/__pycache__/0001_initial.cpython-39.pyc b/quiz-app/essay/migrations/__pycache__/0001_initial.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..176fba5cf9abff17fe224537f1fc002347065b7c GIT binary patch literal 922 zcmZuvJ8#rL5VqIr*PSnl1QZ}4MNnPAU7$h;g+zH!C4iF3&B}K(7uoSEyEf>qg*N|y zKS0Ot*_Mi5fJ8xSZAnFkJV^s@kL z46{MzXTvN4n?4sj@UOfDc|rgo48AfLLUhF`as(s7x1q!1HHb5U#4p=)r9&YWsZ@;+ zdgD;3WGOzhs0>gYUEXM-ZsgHwWc(-V*RiLgq-`oOmzXpNI;=`TZDE6YSSJ$8hWalr z$dGA~$fdZzr4AL!G|AHyYSvV%`(4E?)hu(|T31^=_}^bcV)PN^tWqe-q(FV|t|jWc zC922v4a{}2G1t8F_7*ATptN7r{S@3;qEMX>ErI9~5(5JvXf|z*q(?$rwn=V+$@0@O zZ3wxJ0BbA(%Xx}Q(mq*wxZhE5Y^EyBHtEs363;3UN2aLuAWO>gN;8=0pySBU>+kQK z?(ZEO>Ooc0nslhXS@H=b=)~`r(@&MWP<1lL7t=n)Gc$uJnmJ8xH)^`Qz5QI=Ae_`o z=~9l6u6jfwVBBHX+~qc7Ti1*;oBiRO{o>c1-#9RBFWRP+)Tm?>p~Jq~1ZG`_eNzwr m{hag*JXyCQA5&15>=u2mJvG^a*FC8_hArihh}fnbIDY{#c@vfZ literal 0 HcmV?d00001 diff --git a/quiz-app/essay/migrations/__pycache__/__init__.cpython-311.pyc b/quiz-app/essay/migrations/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..badaed714d0a652c566f2917695b5c24e4480342 GIT binary patch literal 180 zcmZ3^%ge<81pVuI(?IlN5CH>>P{wCAAY(d13PUi1CZpd*ZCdcJO9X=ar^h|o5h}&&^CPN-W9D&nwoC vkI&4@EQycTE2#X%VUwGmQks)$SHuc57i4oWKalvq%*e?2fdNJoF$2W_rHd@i literal 0 HcmV?d00001 diff --git a/quiz-app/essay/migrations/__pycache__/__init__.cpython-37.pyc b/quiz-app/essay/migrations/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5c351598eeef64c93320000919f8d1a838246ff9 GIT binary patch literal 139 zcmZ?b<>g`k0wa%g2_X70h=2h`Aj1KOi&=m~3PUi1CZpd2KczG$ M)edCZXCP((0RC4Y4FCWD literal 0 HcmV?d00001 diff --git a/quiz-app/essay/migrations/__pycache__/__init__.cpython-38.pyc b/quiz-app/essay/migrations/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0bc9e84766afcfe7ea0567c6f1b2dd511b48185d GIT binary patch literal 143 zcmWIL<>g`kg2&S~B!FoUfeaXd90wpSW&si@48aVVjD9N_ia^2$;+Khjd45rLaY15o zs*!$5R$^Xyeqm{5Rh52fadBd$er{%ZQDRAEeqOPDe0*kJW=VX!UP0w84x8Nkl+v73 LJCJFgftUdRn#m#_ literal 0 HcmV?d00001 diff --git a/quiz-app/essay/migrations/__pycache__/__init__.cpython-39.pyc b/quiz-app/essay/migrations/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0af74dc06f7461368030a6cdf359ecd0d3d801ce GIT binary patch literal 143 zcmYe~<>g`k0z3N+Ng(<$h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6v6zdXMvySN}R zIn_u%B`Yy6Jzux5G_y)SwYWI3Qa?8{y(qCHGe56bKR!M)FS8^*Uaz3?7Kcr4eoARh MsvXF*&p^xo01hS~;{X5v literal 0 HcmV?d00001 diff --git a/quiz-app/essay/models.py b/quiz-app/essay/models.py new file mode 100644 index 0000000..7a8905a --- /dev/null +++ b/quiz-app/essay/models.py @@ -0,0 +1,29 @@ +from __future__ import unicode_literals +# from django.utils.encoding import python_2_unicode_compatible +from six import python_2_unicode_compatible +from django.utils.translation import gettext_lazy as _ + +from quiz.models import Question + + +@python_2_unicode_compatible +class Essay_Question(Question): + + def check_if_correct(self, guess): + return False + + def get_answers(self): + return False + + def get_answers_list(self): + return False + + def answer_choice_to_string(self, guess): + return str(guess) + + def __str__(self): + return self.content + + class Meta: + verbose_name = _("Essay style question") + verbose_name_plural = _("Essay style questions") diff --git a/quiz-app/essay/tests.py b/quiz-app/essay/tests.py new file mode 100644 index 0000000..28d8aef --- /dev/null +++ b/quiz-app/essay/tests.py @@ -0,0 +1,22 @@ +from django.test import TestCase + +from .models import Essay_Question + + +class TestEssayQuestionModel(TestCase): + def setUp(self): + self.essay = Essay_Question.objects.create(content="Tell me stuff", + explanation="Wow!") + + def test_always_false(self): + self.assertEqual(self.essay.check_if_correct('spam'), False) + self.assertEqual(self.essay.get_answers(), False) + self.assertEqual(self.essay.get_answers_list(), False) + + def test_returns_guess(self): + guess = "To be or not to be" + self.assertEqual(self.essay.answer_choice_to_string(guess), guess) + + def test_answer_to_string(self): + self.assertEqual('To be...', + self.essay.answer_choice_to_string('To be...')) diff --git a/quiz-app/manage.py b/quiz-app/manage.py new file mode 100755 index 0000000..5522795 --- /dev/null +++ b/quiz-app/manage.py @@ -0,0 +1,14 @@ +import os +import sys + +if __name__ == '__main__': + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) diff --git a/quiz-app/multichoice/__pycache__/models.cpython-311.pyc b/quiz-app/multichoice/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1cde474fc4308bebbdfb1a3d974f916fd25784e8 GIT binary patch literal 4925 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 C&s=T* literal 0 HcmV?d00001 diff --git a/quiz-app/multichoice/locale/de/LC_MESSAGES/django.mo b/quiz-app/multichoice/locale/de/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..dac9710837b152b5ab3753ce5001abc8be9f91cf GIT binary patch literal 1206 zcmZ{i&2AGh5XTL)e1wk!6%rs0!wrNSHmyWUstD0fq7oWHKvgA#w%O^%Wn)LSm(V@~ zSDpaGkvHH1S8hmLkaz|z+z{gLWSb%tMwT$$URQ@mj#n!LPty!KdKA;KA-4 z5#l&l2hV^_@C5j@AQ$X`66-m5348-y1V0q&6f=ghyZxcV0;4?7PVQ>XBAg&W<;V3bz z9qI-PdBK9tV4*i9IHZZw@L-{4u+S5f65_6Q1GWWd-6rF}iAAG5YY$q>9WRyPrD|kL99I`%Js8&mlIKU*iw#S>Wt18r|yVGo_W>Jm=?Q6b(kLJ?7TAi zzZ*_GFq*|UuNCXW^h6sol)6Br0Iv+&|&#N9eFc+Nbd07rZqcw zpR6bH30sHkDwSH?H`dFBOI0El^3=(;!E$q5w)lk#NpdOnT&3x#a$80-GMc67O0_a` zBdSDE>3;0IY+Go^VsC7fTC6mbHqaaEu&vWPPH{ZpQls8jKDfD3j!H%6WqY@el+fmz z=&I85)al07v9CRDugJNByl~MrTe++|CQ&-A(%hEvrDm4fIFl>J_FR>8e;B&j^gN9| zYu7Ygtx@Ird}(8>mJ|8d4QnJjkZGhfxY5THm1oPh#?ob*;~qM)Ay*kM8@;k=I8mOa z%Mmg$Repdb?lbhD%X-^nDeteb7Ioc?GcVS{lsxxhmA6>aBZYqpEJ_R~4IRXq#T=!) z$13%N(G5w?WEtiyOdmVmKSLIi;8l8f;8rYJe`wl9t82JLj6OH>?N4vBOr_#4;bGQ- Yh~W?ylU9g?l7xG-z&iJP|IjJ^0CQ|cg#Z8m literal 0 HcmV?d00001 diff --git a/quiz-app/multichoice/locale/de/LC_MESSAGES/django.po b/quiz-app/multichoice/locale/de/LC_MESSAGES/django.po new file mode 100644 index 0000000..0fd2fcd --- /dev/null +++ b/quiz-app/multichoice/locale/de/LC_MESSAGES/django.po @@ -0,0 +1,72 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-31 22:44+0000\n" +"PO-Revision-Date: 2019-03-07 21:13+0100\n" +"Last-Translator: Reiner Mayers\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Translated-Using: django-rosetta 0.7.6\n" +"Language-Team: \n" +"X-Generator: Poedit 2.0.6\n" + +#: apps/multichoice/models.py:9 apps/multichoice/models.py:65 +msgid "Content" +msgstr "Inhalt" + +#: apps/multichoice/models.py:10 +msgid "Random" +msgstr "Zufällig" + +#: apps/multichoice/models.py:11 +msgid "None" +msgstr "Kein" + +#: apps/multichoice/models.py:20 +msgid "The order in which multichoice answer options are displayed to the user" +msgstr "Reihenfolge in der Multichoice Antworten dem Benutzer angezeigt werden" + +#: apps/multichoice/models.py:23 +msgid "Answer Order" +msgstr "Antwort Reihenfolge" + +#: apps/multichoice/models.py:53 +msgid "Multiple Choice Question" +msgstr "Multiple Choice Frage" + +#: apps/multichoice/models.py:54 +msgid "Multiple Choice Questions" +msgstr "Multiple Choice Frage" + +#: apps/multichoice/models.py:59 +msgid "Question" +msgstr "Frage" + +#: apps/multichoice/models.py:63 +msgid "Enter the answer text that you want displayed" +msgstr "Geben Sie den Antworttext ein der angezeigt werden soll" + +#: apps/multichoice/models.py:69 +msgid "Is this a correct answer?" +msgstr "Ist diese Antwort richtig?" + +#: apps/multichoice/models.py:70 +msgid "Correct" +msgstr "Korrekt" + +#: apps/multichoice/models.py:76 +msgid "Answer" +msgstr "Antwort" + +#: apps/multichoice/models.py:77 +msgid "Answers" +msgstr "Antworten" diff --git a/quiz-app/multichoice/locale/es_CO/LC_MESSAGES/django.mo b/quiz-app/multichoice/locale/es_CO/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..17ef20fe3aac38625fd4c4dce85c87a5d9e2e122 GIT binary patch literal 1311 zcmZ{iO^-}X6vxXujVHmvOORtnq(*leGPz?gMxzsL`kAzsjYzroxLw>^)vD?m<1?`I z32g0HNkqcJH?Xj<@&Rn@MEt9}b<2}SC6(VjRsZu=_k7vC@wveI2m2uQQ|vw1Kd|Gv zvQCK2U>n>4cEK&+?J;@G5|lWv!2RG0a3A<~Y<~hb!u|$s1;2wa?oaSCxM@9d=oZspLf! zIH6{}F)JH&S#MI~baL|4@j4cSa)lr1m}IIuE$b&`b2jSga5x3sRiv*}&a%g| z`^tF^3)g#>r((}5Z@b2GE($_Lqt8H&;Eq|b!d-&tC&i52#PI1ft1VKkI6 z70T1(*iRL|Csb$l_l#Q6Ho0TZ#Ko{#I|@KJ8-=BZ73Kg6MWyw@DJR~)Yk8y(iYlZ2 zP>$zTox_B1UKt2bjUA-=!z)AOhc}}!p4|HXzrKb?MBs@`EEX6P>$DZEVmQEt&}ghH ib{gYj+K0iWRU@q0utF7M_$;L6xsmjQa~Dwr@57 literal 0 HcmV?d00001 diff --git a/quiz-app/multichoice/locale/es_CO/LC_MESSAGES/django.po b/quiz-app/multichoice/locale/es_CO/LC_MESSAGES/django.po new file mode 100644 index 0000000..ee23a7f --- /dev/null +++ b/quiz-app/multichoice/locale/es_CO/LC_MESSAGES/django.po @@ -0,0 +1,70 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# , 2014. +msgid "" +msgstr "" +"Project-Id-Version: django-quiz-multichoice\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-10-02 16:35+0000\n" +"PO-Revision-Date: 2016-03-24 16:00-0500\n" +"Language-Team: American English \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.4\n" +"Last-Translator: \n" +"Language: es_CO\n" + +#: models.py:7 models.py:61 +msgid "Content" +msgstr "Contenido" + +#: models.py:8 +msgid "Random" +msgstr "Aleatorio" + +#: models.py:9 +msgid "None" +msgstr "Ninguna" + +#: models.py:17 +msgid "The order in which multichoice answer options are displayed to the user" +msgstr "El orden en que las opciones de respuesta de elección múltiple se muestran al usuario" + +#: models.py:20 +msgid "Answer Order" +msgstr "Orden de las Respuestas" + +#: models.py:50 +msgid "Multiple Choice Question" +msgstr "Pregunta de opción múltiple" + +#: models.py:51 +msgid "Multiple Choice Questions" +msgstr "Preguntas de opción múltiple" + +#: models.py:55 +msgid "Question" +msgstr "Pregunta" + +#: models.py:59 +msgid "Enter the answer text that you want displayed" +msgstr "Ingrese el texto de la respuesta que desea mostrar" + +#: models.py:65 +msgid "Is this a correct answer?" +msgstr "¿Es esta una respuesta correcta?" + +#: models.py:66 +msgid "Correct" +msgstr "Correcto" + +#: models.py:72 +msgid "Answer" +msgstr "Respuesta" + +#: models.py:73 +msgid "Answers" +msgstr "Respuestas" diff --git a/quiz-app/multichoice/locale/it/LC_MESSAGES/django.mo b/quiz-app/multichoice/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..b0da790307c39b40d3e6b4355f669c76661521b7 GIT binary patch literal 1200 zcmZ{jO-~dt7{`keUp7XACy6FLoRFB}E=0lQO*G%?v~89Yuf?gXgnD` zdh}+D-i$ZTehWKP^czVX`rWi<5B>34%y*=9@GjHla^=DDT9tOH&4;y(MxiNt#(KW)+A8Mv)3)O+ zQ>Mb^MvGUh6d?s)5nh&Qs#vvHCrm+PoP0SS@4?2-C-*)|Q@g5p6+!`eJf{K$flXnWN3E3Fu1%m>W zmXzD_cthr5OufnE=rO5j+@5lgB9)*whdYgBk_f_LKN^~pw4WM9`17eq)X@=Ckm*R! zw~zFfZ%`>pT4F1v3xNqJcMzzrEBv{94=>;!dkyJas?G6vRuLhoJnji1jZ#I>eI8b3 gat$vbJR76cu1Zj=#1GQukD5L5CCPXiUZZ5c0d0R-fdBvi literal 0 HcmV?d00001 diff --git a/quiz-app/multichoice/locale/it/LC_MESSAGES/django.po b/quiz-app/multichoice/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000..062c8b5 --- /dev/null +++ b/quiz-app/multichoice/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,74 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-31 22:44+0000\n" +"PO-Revision-Date: 2015-10-31 22:19+0000\n" +"Last-Translator: b' <>'\n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Translated-Using: django-rosetta 0.7.6\n" + +#: apps/multichoice/models.py:9 apps/multichoice/models.py:65 +msgid "Content" +msgstr "Contenuto" + +#: apps/multichoice/models.py:10 +msgid "Random" +msgstr "Casuale" + +#: apps/multichoice/models.py:11 +msgid "None" +msgstr "Nessuno" + +#: apps/multichoice/models.py:20 +msgid "The order in which multichoice answer options are displayed to the user" +msgstr "" +"Ordine in cui le risposte multiple disponibili vengono visualizzate " +"all'utente" + +#: apps/multichoice/models.py:23 +msgid "Answer Order" +msgstr "Ordine Risposte" + +#: apps/multichoice/models.py:53 +msgid "Multiple Choice Question" +msgstr "Domanda a risposta multipla" + +#: apps/multichoice/models.py:54 +msgid "Multiple Choice Questions" +msgstr "Domande a risposta multipla" + +#: apps/multichoice/models.py:59 +msgid "Question" +msgstr "Domanda" + +#: apps/multichoice/models.py:63 +msgid "Enter the answer text that you want displayed" +msgstr "Inserisci il testo della risposta che vuoi visualizzare" + +#: apps/multichoice/models.py:69 +msgid "Is this a correct answer?" +msgstr "Questa è la risposta corretta?" + +#: apps/multichoice/models.py:70 +msgid "Correct" +msgstr "Corretto" + +#: apps/multichoice/models.py:76 +msgid "Answer" +msgstr "Risposta" + +#: apps/multichoice/models.py:77 +msgid "Answers" +msgstr "Risposte" diff --git a/quiz-app/multichoice/locale/ru/LC_MESSAGES/django.mo b/quiz-app/multichoice/locale/ru/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..a1753d666158530a63473a67af4a156c1261e4e5 GIT binary patch literal 1535 zcmbu7&u<$=6vqc>_+fqs6%HUF@i-8usxiAxQl*=?X$fu#s;P+#;)2k!JFKU*XUyzw zLr^7}aNy92N=O_lRP~00WI`R>l$tBY*$X%L8@O;oi0{~@PN_IC((`BD%=__u@VyDegdLFMJO`fzuY=Ekw;Z-6s1jGYD> zpsRCr!f(JQ;r{?00e=S3nmrDC0Oqu~x!ihWjFC>ab^S{)NMnz}+(P*aBFb0|uA!_YC>&)`CO*#KhZ$|^oHjz0Q7qGLJKPj8TT5{z zQwk{>=TEX$SUqoNvfCE4+R`!-^j0p?OltL?7b$yFE5Yu>t%oYs9oB>r?G%$#w9%4L zi#o1!G%h<4sk^Q=bQm#JN0}ZClBbxrVf0zd$Jb*1jxZ^r1B%avD$)F-TzJKo!rQ=f20i3i(HZxrM_X76SRYI4@n3 zY1{($7J0=d|7b9G^su*pxYJ>p@utBH?J(0Opjw^?6;fTcLfMw*^!bpM#ptZunVua_ zI=C)Jx^oOARFa2@;7t*B0y@zVMn<8cno8O-ZPD_%Sa9htDjw_TIGnOJ$uun>lb7mi z_1g4N{IXY?d=$L7*~O6V3wQ;8xKv9NwL+7MtonBIBww7yxfwnbhSyZ2W2usW7C(?# zsnO0&*ybm->7)Uv?#NB6b4xVdR$o>x`d+o_)9fs{t@lFJ_i2SZLOA?m)yh9t%hh?e z9c6gSzDE}>j8hQf9YT(eoXVl4(!2bWP{NE~w4p^TGxEy|<@pk`U)rJlskmr|#TK() z0~d=c_6833$nH$\n" +"Language-Team: American English \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 1.5.4\n" + +#: models.py:7 models.py:61 +msgid "Content" +msgstr "Содержание" + +#: models.py:8 +msgid "Random" +msgstr "Случайно" + +#: models.py:9 +msgid "None" +msgstr "Ничего" + +#: models.py:17 +msgid "The order in which multichoice answer options are displayed to the user" +msgstr "Порядок отображения вопросов" + +#: models.py:20 +msgid "Answer Order" +msgstr "Порядок вопросов" + +#: models.py:50 +msgid "Multiple Choice Question" +msgstr "Вопрос с несколькими вариантами ответов" + +#: models.py:51 +msgid "Multiple Choice Questions" +msgstr "Вопросы с несколькими вариантами ответов" + +#: models.py:55 +msgid "Question" +msgstr "Вопрос" + +#: models.py:59 +msgid "Enter the answer text that you want displayed" +msgstr "Введите текст ответа" + +#: models.py:65 +msgid "Is this a correct answer?" +msgstr "Это правильный ответ?" + +#: models.py:66 +msgid "Correct" +msgstr "Правильно" + +#: models.py:72 +msgid "Answer" +msgstr "Вопрос" + +#: models.py:73 +msgid "Answers" +msgstr "Вопросы" diff --git a/quiz-app/multichoice/locale/zh_CN/LC_MESSAGES/django.mo b/quiz-app/multichoice/locale/zh_CN/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..a2e640b4f85260f0344d1fd54d7ee411632027a5 GIT binary patch literal 1160 zcmZ{h&rcIU6vsyef7Blby=e3>oY0u5ZAHa}qO}%iY@wDyjERS(JGN`uoo04cH;CsM-f=lb%fY4@O6u1MJ0B!+Za!Fn0fduX?;6C6Ca4&G#jXwbEApQ#63j7X~ zeSZNvfb|;@x&h}nP~N}a33UQxeavMK zQ0lx0gmGvmxXhC|axZDJk2I-Mn*25%aFB+!gG;M-Q2i#*3Zal;4p8m_cXO>4m?+E) zK@9=qoTdeeK*+JkQmj_1u%Ooj#Hzr9%)$ezA+V;Kg`7G_H54`BNjI^I(@woxbqd9; zoX`t7io;o^rzt*fQB&y5`0s;>x|l&xEib7W8q1>;C}C1D)(t$6)zev=m#x!ITUR72 z$ljoX({*)Nu<9a~3Hv5Ey8`=>s7CrIHz8ZWiBR}ls3U^=BFUa;cb6wg3ycdAH#53M z&R7|fq?m#|iS85$bE?V_+`sOlcWXGDvU)tj<<=Lh3#4V@V zesss4oI`8x9_p}I-OAJPzfN{>3RQ{=^0G29Voxri(&+v2 Z*mHaMwbR`xa=OXt=|#Kv3P!pbe*@`GWyk;k literal 0 HcmV?d00001 diff --git a/quiz-app/multichoice/locale/zh_CN/LC_MESSAGES/django.po b/quiz-app/multichoice/locale/zh_CN/LC_MESSAGES/django.po new file mode 100644 index 0000000..1c7d991 --- /dev/null +++ b/quiz-app/multichoice/locale/zh_CN/LC_MESSAGES/django.po @@ -0,0 +1,72 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-31 22:44+0000\n" +"PO-Revision-Date: 2015-10-31 22:19+0000\n" +"Last-Translator: b' <>'\n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Translated-Using: django-rosetta 0.7.6\n" + +#: apps/multichoice/models.py:9 apps/multichoice/models.py:65 +msgid "Content" +msgstr "内容" + +#: apps/multichoice/models.py:10 +msgid "Random" +msgstr "随机" + +#: apps/multichoice/models.py:11 +msgid "None" +msgstr "无" + +#: apps/multichoice/models.py:20 +msgid "The order in which multichoice answer options are displayed to the user" +msgstr "向用户显示多选答案选项时的次序" + +#: apps/multichoice/models.py:23 +msgid "Answer Order" +msgstr "答案次序" + +#: apps/multichoice/models.py:53 +msgid "Multiple Choice Question" +msgstr "多选题" + +#: apps/multichoice/models.py:54 +msgid "Multiple Choice Questions" +msgstr "多选题" + +#: apps/multichoice/models.py:59 +msgid "Question" +msgstr "问题" + +#: apps/multichoice/models.py:63 +msgid "Enter the answer text that you want displayed" +msgstr "输入你想显示的答案文本" + +#: apps/multichoice/models.py:69 +msgid "Is this a correct answer?" +msgstr "这个答案正确吗?" + +#: apps/multichoice/models.py:70 +msgid "Correct" +msgstr "正确" + +#: apps/multichoice/models.py:76 +msgid "Answer" +msgstr "答案" + +#: apps/multichoice/models.py:77 +msgid "Answers" +msgstr "答案" diff --git a/quiz-app/multichoice/migrations/0001_initial.py b/quiz-app/multichoice/migrations/0001_initial.py new file mode 100644 index 0000000..2d856cb --- /dev/null +++ b/quiz-app/multichoice/migrations/0001_initial.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.3 on 2017-06-22 11:20 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('quiz', '__first__'), + ] + + operations = [ + migrations.CreateModel( + name='Answer', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('content', models.CharField(help_text='Enter the answer text that you want displayed', max_length=1000, verbose_name='Content')), + ('correct', models.BooleanField(default=False, help_text='Is this a correct answer?', verbose_name='Correct')), + ], + options={ + 'verbose_name': 'Answer', + 'verbose_name_plural': 'Answers', + }, + ), + migrations.CreateModel( + name='MCQuestion', + fields=[ + ('question_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='quiz.Question')), + ('answer_order', models.CharField(blank=True, choices=[('content', 'Content'), ('random', 'Random'), ('none', 'None')], help_text='The order in which multichoice answer options are displayed to the user', max_length=30, null=True, verbose_name='Answer Order')), + ], + options={ + 'verbose_name': 'Multiple Choice Question', + 'verbose_name_plural': 'Multiple Choice Questions', + }, + bases=('quiz.question',), + ), + migrations.AddField( + model_name='answer', + name='question', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='multichoice.MCQuestion', verbose_name='Question'), + ), + ] diff --git a/quiz-app/multichoice/migrations/__init__.py b/quiz-app/multichoice/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/quiz-app/multichoice/migrations/__pycache__/0001_initial.cpython-311.pyc b/quiz-app/multichoice/migrations/__pycache__/0001_initial.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df09073e97b9732be6d3008a65e67ebdd1326ec3 GIT binary patch literal 2538 zcmb7G%Wo4$7@vK3{fHCdJP08s+3*UMzz%Iu4^*_l5SO;$WupoUX|?f8oK4od&g_~H z3n+&kdMmf~&_mS&ZH1-w$fXj0!Xo)#?I~(6Cf^~9uwbH^P!7frDym8F_omN_q(k+LG9 z0>bjw2uFyt0``LEiGS zl~(kL4AH?ac$P#QkLx?pVpA7~Bk*Q-k4J%xvU5L?50 z*Y?FYf=9W4pp9Us%u`a93}Rx( zkJ|O1p%M%E8x7(x#!s&GW?J2)&3;zZY`BMRGXJcvneJtBSB~k6Lbg&oR>m%3)?kcxyeU%f|hL&U%m>oStvo7`9{^S)b(Yf zvaHr1Wf*OvvV8)*1XPG&r}V08^HXZTk-nS+Z_Q*-9rYTIMDZhwrf#i5*|{+%sN)EW zTecde$xGNgw7~q;O`_%lpJ5f6_9cqWQUEe(us`KQ@PPpqQAqDKVS~^hGy;;#1!w+Of$_YJ4*_ z>W$4jzS|y~`Mvbq^}f90t=isL{l!?lJy!Py*E*@gUi$R+^X>F$@53d}S??lL5U-0c z9JwLB;&h8skfd&kTtCP3bI&5)73?|pz4U_@=?Crf18?wQH!6<|bdzX0)0vs=Mx@b! zE@I?BUp(;&0oh`tduS)bBb%uyZ~EMi2iw!$cCd|u?T@egg`-(`b6q5duN%wv(ID@6$EZz?@$!)NU&x|t8AdsT{c{n zi)_QulFY1@WM;L*B&l06YbjGGSsfo_evBxLd zL&ttuY8mb9g?6^k&R+9MCK$di%(JM63oH+y;1MVkkyQ)G79-vFCx?_rpRo_khe*i8 zSg$NK+y;g2pm2i&=mU&p@gi@FpcBToh1uZ0NH)YaJs%pQ7uk&4z67&3v5$f#yg)w% z7T|^)7f4qU1OcEXobu4j?(Zf7$veIsq+E_$0hPP7M)zhVnp?^xwg{R^vq B!1w?F literal 0 HcmV?d00001 diff --git a/quiz-app/multichoice/migrations/__pycache__/0001_initial.cpython-37.pyc b/quiz-app/multichoice/migrations/__pycache__/0001_initial.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..acd053b854e9b72de22a72422cfc677af9cfe461 GIT binary patch literal 1650 zcmZ`(&63+h5Z0gdIzrC0WZLXH{eC4xN#w`z=@ubo!tvksWm+_{dM=(J@cs3X&d-__3V$I{`3svZ>6jr z2M0&^72l!&1I)~rn*-BSV=J@f_Q0My14rw2)*84^4RE0Ks{t))&%9skfd}?0BX-}Q zy%C#ovtsFp15L8Dq=IBcY{~XKod{B5vj@16u)4{~3pO~^oB3ek+X5H7g)_Fm$GHFkXu}$W3ma!TIMc=*>#zZvYGz`i?G|kR zX2H(F)>ymn4(?h5lZLa-%$u#xHkP=z;N69bD0>>$gnhUT?;*nba0hqXg?nmsVnGBS zXv7cU{zApK2_M17XtQ+#@e}wI9xQB#7xu&+Y{O^B)8{fcS&?yu)HoMaTFW3w#;GXE zB#~~96_->WlaZjLq#)OFk#>m6c)(jh6^b zve+YyzH>8&B+n{rAhdLJO71wN85GjvdDBYmlm3qtEtDd|i{&WEOHp?etKHRN?20uN zZ@^iCy+=!mBocw_V3V?Q5vq7p3refx$hM{_;R2|@z&6zCCJL;UD+mKVm+njbSM_6@ zQR$qbte>7C$=WPRS#&u~N7HDI3FDuqqqqDo!;dh6YvQAl>l#&9&^LF{TOBssL@#t4 zu51l6!p@O&4OTQPZmXyrR%Mwcu--dS{_>1Q{l@2tgL?n}R*KkM^0lHccEp}adS8j# z%0p{N3W{g9p+@?vo%O97`E_rU!(aK0ZE;7z+*3kz4VJU5uK?Yr+L3JO%AUqM(ogg> zo`ZIh;I=BGI1ZEKq9U2<0@S>er6o4K41wm90cE3<76KdBkZXN?N>0=rBh=j{gB~89 zW7Rn_=ue4ghT$X5GfG&abzU%f#!)n?3p2tdTv{-czHS)RVP3!Ys^5G3MEX5|W@G!9 z3z|;Y4|o#WJjd%!H|Fn#I6~K2{QL0Wl8f^qCnNgxK?AIsvp%@N+`;wzcyM@l_+_%p zu$y0r79s`s6%SDOmSek)V_Md(xoz&+mf5zI7MT%_UCXsl!&h6yz9Mm4m6br+goXAp xXd>vsQ1jJLwEuRp+g#4wRnp=cG}2(#88xGxLi4|CO7u{1U$`hjYt!`Y{{Ud^^yB~l literal 0 HcmV?d00001 diff --git a/quiz-app/multichoice/migrations/__pycache__/0001_initial.cpython-38.pyc b/quiz-app/multichoice/migrations/__pycache__/0001_initial.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..487fb92151f64ddfe9ee523a47fdce1d8dcc0bcd GIT binary patch literal 1676 zcmZ`(&2rpC5SB*&Yps8Su>(oOKZ0UyxIt0D%O*~xQg#YrE_)H;aFF= z?v)cSz>OE+MW(oMfV==zP?bQ>XgA&qQmHlFGxK%#*FE!1yWKMI`TfUVzWvq1zfzVT z8RS`LZ)@GkoWA?O02`bi3~-n=_P)3J9#~I|*nNik zjo6gy6;B5_up~=MCTLc~M7AdBP|z~Xc_G~iPG-gNK&@YX+Nd1hSNw*88GRFsJ^{0D z0U4Ton>k|_EU=k3_QAy00T;ZPeMZ1XTL1yHU zY|Si3PzFZ}LQaq#`=Ux~86?SBDvB~m zq}%1iB@>dQa45;cd$BD;T9tV+5R8@#5$?2gO72<8GAN{%Pn&jX9reDdSfLadUd%_yv=nt)vD#To#;#aV z@di0hu>V-ekVGnw9c)y7EyN&{@{a5wl zIcL&7Mp-{NL6Y^hDCN=RC>@NV2_}sHJRQ8`e;$5>5nK}=mAS4_g#~?f8@<(G!%g&9 z$KgunG^6|+N!MUS!{Vlj+U8Z3X#(q=Bjsk|zH^ffl&2*&y$pd(83)D(DJujvt|3=?`ji~0dq$}HO$J>& zJcp`tWY8N?(G0^c^E_jeH(L8KXD2y|Ms;CK`7oCRPNlCKMs=9i>ptmq@7pOC9e}Dhu zWS(JXdLjHv`=h{{A)Y5NyrUz)7*ScTw;Y>|2U1#z^+CVy$0NzCo% z_8%H2_7$yXRaprnQV@idK@(F4PBnuKX}d3to#x8!ENBp)s?1bS*Eu$$u0r!aZ;EzT ORikiGgk;_Ht^WXPApZpb literal 0 HcmV?d00001 diff --git a/quiz-app/multichoice/migrations/__pycache__/0001_initial.cpython-39.pyc b/quiz-app/multichoice/migrations/__pycache__/0001_initial.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c352128edcb1308af8e21b2c91dce66b9a33e794 GIT binary patch literal 1676 zcmZ`(OLN;c5GKK=B+Ad!wbMM37QrWk6%qwA`X(5C0%qR= zGBW!%b0#iWU^8#xgNd&LE_ieMoPdwE1~i}vEePfoTH0u7;)*p`hYe*JS-5u-wtgnC zJ-0O0EqDi4wZLS-q&@K_Ym@Z_?hd>=cM)Y*qh&wh{@IHc%;gh)qpU$n3)!%~8kf}&EPL_0>AvyMCmCR%#j?WWOlyNNG zE-$W_kR*X)NuEB6Y#Gq1%;KS7v}7P#xk#o|T*nveS~dzM5}GD6CW9ZC7-R*DIh``; z4KrRcUd|po#=i*5F$<|i4omi;M4gu5bykH}l$RkSMV``Y2FYKRVMwo6Z;mY47_&5w z)fTKHeG#XOkIJ!F!zw8sLa<>u+k09dU{ZuMT$mQV9x5ok2BAD)=d?;ov5A`(2z9d9 zCAGf2nnRqY6}AxWv~^1EdBRdCq?hG&Gc`|o-&L$oiVQ9nqc|_ctgTq>EGHvZv{bx} zjK|o0tYk@DZdbbibpk|BxQzdYntLr027ggp{=X=4HQ@}S5OYwRJz~mzp5b5 zIFt4%%Gr}Mq*-qa6CPfTli@g=V#@f>lHr>QED{JYh8ya`GSgM6u%s{Vp|@F3vlBkk zk+{+sq?BJE?Ha78dE8QQ+q_CsP2p_!MET287WQhNOBQB(Z<{G1bHUh>#K;!AD(O8X zZYvMYfEEnTZ%vN$mn&yGEBSR+3gR#QMwYm%VD2lS`UVTy)YpLSRP9JQy0)j$w)A6d z#*@&DV_a6H497tnUsg0#eSn&m@TA1HmjSSxabSFyutH$#8nV^X=j24)GeX^OveCuk zbF6wtHhNS6FrmZgmHT5CV!>?}i3t1e6^A7zrjK>E66RF8SR?(<&v(PQa%0qTX# z<4mw*#J|O}*vxXg@^owdYKS9rt;N5G`&XH`C~`VvU+mYw4^)5duQ0cNb4TtU92|Te zFEZ@p*TO-h27daI_K9tg|7^!L3Atr%nOm=jOHA_G{>KiKEi~`ECXTk)=iMjL2 z{!`;bzM}QKDl36R3WBh*QODGQfo8BKZSRe-Q(xJgB@N>P{wCAAY(d13PUi1CZpd*ZCdcJO9X=ar^h|o%_+%D&dAS9PSwxNOfO0- z$;{6y){l?R%*!l^kJl@x{Ka9Do1apelWJGQ3N#&Le=$Fh_`uA_$oPQ)Miemv#Q^%0 BFGTg`k0wa%g2_X70h=2h`Aj1KOi&=m~3PUi1CZpdg`kg2&S~B!FoUfeaXd90wpSW&si@48aVVjD9N_ia^2$;+K_vd45rLaY15o zs*!$5R$^Xyeqm{5Rh52jX--LIaz=h;a;koAW_nR#NoIatv3`7fW?p7Ve7s&kg`k0z3N+Ng(<$h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vCzdXMvySN}R zIn_u%B`Yy6Jzux5G_y)Sw=}0DGdUwaGdWd1H#5B`u_QA;uUJ1mJ~J<~BtBlRpz;=n SO>TZlX-=vg$jr|`%m4uLS0h>g literal 0 HcmV?d00001 diff --git a/quiz-app/multichoice/models.py b/quiz-app/multichoice/models.py new file mode 100644 index 0000000..ef7f462 --- /dev/null +++ b/quiz-app/multichoice/models.py @@ -0,0 +1,78 @@ +from __future__ import unicode_literals +# from django.utils.encoding import python_2_unicode_compatible +from six import python_2_unicode_compatible +from django.utils.translation import gettext_lazy as _ +from django.db import models +from quiz.models import Question + + +ANSWER_ORDER_OPTIONS = ( + ('content', _('Content')), + ('random', _('Random')), + ('none', _('None')) +) + + +class MCQuestion(Question): + + answer_order = models.CharField( + max_length=30, null=True, blank=True, + choices=ANSWER_ORDER_OPTIONS, + help_text=_("The order in which multichoice " + "answer options are displayed " + "to the user"), + verbose_name=_("Answer Order")) + + def check_if_correct(self, guess): + answer = Answer.objects.get(id=guess) + + if answer.correct is True: + return True + else: + return False + + def order_answers(self, queryset): + if self.answer_order == 'content': + return queryset.order_by('content') + if self.answer_order == 'random': + return queryset.order_by('?') + if self.answer_order == 'none': + return queryset.order_by() + return queryset + + def get_answers(self): + return self.order_answers(Answer.objects.filter(question=self)) + + def get_answers_list(self): + return [(answer.id, answer.content) for answer in + self.order_answers(Answer.objects.filter(question=self))] + + def answer_choice_to_string(self, guess): + return Answer.objects.get(id=guess).content + + class Meta: + verbose_name = _("Multiple Choice Question") + verbose_name_plural = _("Multiple Choice Questions") + + +@python_2_unicode_compatible +class Answer(models.Model): + question = models.ForeignKey(MCQuestion, verbose_name=_("Question"), on_delete=models.CASCADE) + + content = models.CharField(max_length=1000, + blank=False, + help_text=_("Enter the answer text that " + "you want displayed"), + verbose_name=_("Content")) + + correct = models.BooleanField(blank=False, + default=False, + help_text=_("Is this a correct answer?"), + verbose_name=_("Correct")) + + def __str__(self): + return self.content + + class Meta: + verbose_name = _("Answer") + verbose_name_plural = _("Answers") diff --git a/quiz-app/multichoice/static/logo.png b/quiz-app/multichoice/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f9bba13adc7f6217bdc191be028b764cb56a5387 GIT binary patch literal 15361 zcmZv@byQo;7cLwiNYOxPixZ?k(c&(J;4a18-QBGa9E!UahvII9;!bgQclVq3_kI7| zweGBy$g3%^TO`^=*%}wspaH+KY_r9Y_-;7g51d;df3J zxgqxjL|#}cIFSeO8pMqwQZ)dF@tfRLu( zTL3(wZB8r_A}VfE!2f-*SX&++J*2ARamcbhJTxvYj&seMwf`mtdVPKE{ra%Cx68(C zF;#G})t}uH}-m#l$=bG{3ndI@e-k62MExZyr6Qr29u}Q8OB`o*p9ly%uSPlF?zdt%(kt|sW)>F-2ndE8GPrP} z#NxBF&z??pc6PA%&V|&~Q>NX?$;p!#v{bdUj&3Vw%G9#2+_YO=Z8~)ox=nt-dc*ta zq;ac1#t-(7>FMbuOiNQUGdGjsq_SCj9y>#c+l1oET3U3sB9KVt^ikL2`RXhDEZr)- zR@W2uIqh2ejXy&}Qfqef3=A_zH<8Q^lpiB@dc)oetUhgolFFrg-FUfMJKNv4Z}~Sn zdpoOTCks2Z_V(Hs3U!M4JGj$NTeB<{P*uV zeeHSoq;btO@__|U&mL1aK5!TrA)KvTuk#i5Vu^K>x?q$)bX9Gan-NS|E*c~P-tz|| zllkH{981kHN+C%}Nl&M(XM%4J;~H8xaYquDmzQl-#^j!FFL!UxdxB3a`st$$-Vc{C zg0J_&C%33`=e1&j3F>=6FozM1_;|s`^r{VtgZ6e-hED&IY_^Kfu*u(7dOYOt}gwoYKgo*ZWC^nSUSlh5FqRL+KM(+VUcC%d`1wW6NbVt@GX zxdRj1#m(*0$B(l!GlPWc6|-Jv?QY{){P|*0ms40qBj3Gg7#UAbPG%0AvrcKheDOGK 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 literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/__pycache__/models.cpython-311.pyc b/quiz-app/quiz/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bb70ccbdece3f44392c7a332fea378098fa1cfd4 GIT binary patch literal 31926 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 literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/__pycache__/urls.cpython-311.pyc b/quiz-app/quiz/__pycache__/urls.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d528f55ce55ae24bd64623a73c57c28107467360 GIT binary patch literal 1817 zcmcJPOK;mo5XX0^7bR*eKN1^(E5)v9%Ze;3NDsXPDbTcsq7S6#Gps9tFd11fDJn}U ziiIA6p43xs?KenKv_QX#1n@xc+EZ>U(u0vxXQ)SlRyvlFM!Pe=|IF-i$zK3+46h&m zfCom3u|H`tyYkb)i=@QZ&n(LfW^jwyT;rT|*7lewsZ3-!`6Vl1C&_=Gb&`GdBypeh zxsfoER?1FmX*;83Y*~}-td_NNTFzE9#m;Ma8#LfdVkS3IXwwf@X2qZ3;J4X?8R_3M z&l2dt-{gulGTO{iO?IIshZ=dQMp>xIqb9pl0}C}PsL3tW6c%b$QKKx?tS!{6qb9#p zv$0Tf1vRi#bM@bvmaG+w&Cgh6>p5+Hg@=iru<$P<%w|{j&Yp8}%VGZ0UVHFS+x5O| zoBeS8uI`yFN3>0M?%SlujC%KCN?e3j$oGY7ihIIo3Db4s30*{nuijMm$dx0_b^6mPW zW1Dq67p;2V5$A4KKQ(XFCpBxdlscK3-tESNI<;}!y?80#wjHBqnRmo4=AlFC;^V@i z1m`@G61*BD)zN>xmqBJdVw_iBnIL&%wCGEjs+X6SQCi|RBliEAJWI(>?+#M|><&+S z*d4>34|@Szi&9c*`!9y(Z!(cQ0apSjkKnowx2llHUrTI-+#d zG1Pph1#pAVBSMb|J&JPkq?HluV!AO@kq_VvB1=S;h%80x6A}VYhfN>UF&y}C5WqHp zMFNWi7U$K~01ie_LTC(!J{$({CZQ^!DxvDM`baJXus3Yrvd6IR!+roIB6o<~A#!J) o6tfhEU;9uT(-vG`(C3G|Qjnf1^l|AVexJ^=AC#@cPkbx!50e1a!2kdN literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/__pycache__/views.cpython-311.pyc b/quiz-app/quiz/__pycache__/views.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2d644cd518c3d554ca74efc7fb9ef6171c337ea5 GIT binary patch literal 23391 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 literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/admin.py b/quiz-app/quiz/admin.py new file mode 100644 index 0000000..173ca4c --- /dev/null +++ b/quiz-app/quiz/admin.py @@ -0,0 +1,112 @@ +from django import forms +from django.contrib import admin +from django.contrib.admin.widgets import FilteredSelectMultiple +from django.utils.translation import gettext_lazy as _ + +from .models import Quiz, Category, SubCategory, Progress, Question +from multichoice.models import MCQuestion, Answer +from true_false.models import TF_Question +from essay.models import Essay_Question + + +class AnswerInline(admin.TabularInline): + model = Answer + + +class QuizAdminForm(forms.ModelForm): + """ + below is from + http://stackoverflow.com/questions/11657682/ + django-admin-interface-using-horizontal-filter-with- + inline-manytomany-field + """ + + class Meta: + model = Quiz + exclude = [] + + questions = forms.ModelMultipleChoiceField( + queryset=Question.objects.all().select_subclasses(), + required=False, + label=_("Questions"), + widget=FilteredSelectMultiple( + verbose_name=_("Questions"), + is_stacked=False)) + + def __init__(self, *args, **kwargs): + super(QuizAdminForm, self).__init__(*args, **kwargs) + if self.instance.pk: + self.fields['questions'].initial =\ + self.instance.question_set.all().select_subclasses() + + def save(self, commit=True): + quiz = super(QuizAdminForm, self).save(commit=False) + quiz.save() + quiz.question_set.set(self.cleaned_data['questions']) + self.save_m2m() + return quiz + + +class QuizAdmin(admin.ModelAdmin): + form = QuizAdminForm + + list_display = ('title', 'category', ) + list_filter = ('category',) + search_fields = ('description', 'category', ) + + +class CategoryAdmin(admin.ModelAdmin): + search_fields = ('category', ) + + +class SubCategoryAdmin(admin.ModelAdmin): + search_fields = ('sub_category', ) + list_display = ('sub_category', 'category',) + list_filter = ('category',) + + +class MCQuestionAdmin(admin.ModelAdmin): + list_display = ('content', 'category', 'sub_category') + list_filter = ('category', 'sub_category') + fields = ('content', 'category', 'sub_category', + 'figure', 'quiz', 'explanation', 'answer_order') + + search_fields = ('content', 'explanation') + filter_horizontal = ('quiz',) + + inlines = [AnswerInline] + + +class ProgressAdmin(admin.ModelAdmin): + """ + to do: + create a user section + """ + #search_fields = ('user', 'score', ) + #fields = ('user_answers',) + + +class TFQuestionAdmin(admin.ModelAdmin): + list_display = ('content', 'category', ) + list_filter = ('category',) + fields = ('content', 'category', 'sub_category', + 'figure', 'quiz', 'explanation', 'correct',) + + search_fields = ('content', 'explanation') + filter_horizontal = ('quiz',) + + +class EssayQuestionAdmin(admin.ModelAdmin): + list_display = ('content', 'category', ) + list_filter = ('category',) + fields = ('content', 'category', 'sub_category', 'quiz', 'explanation', ) + search_fields = ('content', 'explanation') + filter_horizontal = ('quiz',) + +admin.site.register(Quiz, QuizAdmin) +admin.site.register(Category, CategoryAdmin) +admin.site.register(SubCategory, SubCategoryAdmin) +admin.site.register(MCQuestion, MCQuestionAdmin) +admin.site.register(Progress, ProgressAdmin) +admin.site.register(TF_Question, TFQuestionAdmin) +admin.site.register(Essay_Question, EssayQuestionAdmin) diff --git a/quiz-app/quiz/forms.py b/quiz-app/quiz/forms.py new file mode 100644 index 0000000..c7ddf69 --- /dev/null +++ b/quiz-app/quiz/forms.py @@ -0,0 +1,17 @@ +from django import forms +from django.forms.widgets import RadioSelect, Textarea + + +class QuestionForm(forms.Form): + def __init__(self, question, *args, **kwargs): + super(QuestionForm, self).__init__(*args, **kwargs) + choice_list = [x for x in question.get_answers_list()] + self.fields["answers"] = forms.ChoiceField(choices=choice_list, + widget=RadioSelect) + + +class EssayForm(forms.Form): + def __init__(self, question, *args, **kwargs): + super(EssayForm, self).__init__(*args, **kwargs) + self.fields["answers"] = forms.CharField( + widget=Textarea(attrs={'style': 'width:100%'})) diff --git a/quiz-app/quiz/locale/de/LC_MESSAGES/django.mo b/quiz-app/quiz/locale/de/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..c7a20b0174ce4e46825cf5fceb43ab1be2dd2d40 GIT binary patch literal 7746 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, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-31 22:44+0000\n" +"PO-Revision-Date: 2019-03-07 21:14+0100\n" +"Last-Translator: Reiner Mayers\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Translated-Using: django-rosetta 0.7.6\n" +"Language-Team: \n" +"X-Generator: Poedit 2.0.6\n" + +#: apps/quiz/models.py:30 apps/quiz/models.py:37 apps/quiz/models.py:53 +#: apps/quiz/models.py:83 apps/quiz/models.py:545 +#: apps/quiz/templates/progress.html:19 +#: apps/quiz/templates/quiz/quiz_detail.html:9 +#: apps/quiz/templates/quiz/quiz_list.html:13 +#: apps/quiz/templates/quiz/sitting_detail.html:10 +msgid "Category" +msgstr "Kategorie" + +#: apps/quiz/models.py:38 +msgid "Categories" +msgstr "Kategorien" + +#: apps/quiz/models.py:48 apps/quiz/models.py:58 apps/quiz/models.py:550 +msgid "Sub-Category" +msgstr "Unterkategorie" + +#: apps/quiz/models.py:59 +msgid "Sub-Categories" +msgstr "Unterkategorien" + +#: apps/quiz/models.py:69 apps/quiz/templates/quiz/quiz_list.html:12 +msgid "Title" +msgstr "Titel" + +#: apps/quiz/models.py:73 +msgid "Description" +msgstr "Beschreibung" + +#: apps/quiz/models.py:74 +msgid "a description of the quiz" +msgstr "Eine Beschreibung des Quiz" + +#: apps/quiz/models.py:78 +msgid "a user friendly url" +msgstr "Eine benutzerfreundliche url" + +#: apps/quiz/models.py:79 +msgid "user friendly url" +msgstr "benutzerfreundliche url" + +#: apps/quiz/models.py:87 +msgid "Random Order" +msgstr "Zufällige Reihenfolge" + +#: apps/quiz/models.py:88 +msgid "Display the questions in a random order or as they are set?" +msgstr "Fragen zufällig anzeigen oder in der Eingabereihenfolge?" + +#: apps/quiz/models.py:93 +msgid "Max Questions" +msgstr "Maximale Anzahl der Fragen" + +#: apps/quiz/models.py:94 +msgid "Number of questions to be answered on each attempt." +msgstr "Anzahl der Fragen die bei jedem Versuch gestellt werden." + +#: apps/quiz/models.py:98 +msgid "" +"Correct answer is NOT shown after question. Answers displayed at the end." +msgstr "" +"Die Richtige Antwort wird nicht nach der Frage angezeigt sondern am Ende." + +#: apps/quiz/models.py:100 +msgid "Answers at end" +msgstr "Antworten am Ende" + +#: apps/quiz/models.py:104 +msgid "" +"If yes, the result of each attempt by a user will be stored. Necessary for " +"marking." +msgstr "" +"Wenn ja, wird das Ergebnis jeden Versuchs gespeichert. Zum markieren ist die " +"notwendig." + +#: apps/quiz/models.py:107 +msgid "Exam Paper" +msgstr "Prüfungsarbeit" + +#: apps/quiz/models.py:111 +msgid "" +"If yes, only one attempt by a user will be permitted. Non users cannot sit " +"this exam." +msgstr "" +"Wenn ja wird nur ein Versuch pro Anwender zugelassen. Nur angemeldete " +"Anwender können diese Prüfung machen." + +#: apps/quiz/models.py:114 +msgid "Single Attempt" +msgstr "Nur ein Versuch" + +#: apps/quiz/models.py:118 +msgid "Percentage required to pass exam." +msgstr "Prozent zum bestehen der Prüfung." + +#: apps/quiz/models.py:122 +msgid "Displayed if user passes." +msgstr "Angezeigt wenn der Anwender besteht." + +#: apps/quiz/models.py:123 +msgid "Success Text" +msgstr "Text für den Erfolg" + +#: apps/quiz/models.py:126 +msgid "Fail Text" +msgstr "Text für den Misserfolg" + +#: apps/quiz/models.py:127 +msgid "Displayed if user fails." +msgstr "Wird angezeigt wenn der Anwender durchfällt." + +#: apps/quiz/models.py:131 +msgid "Draft" +msgstr "Entwurf" + +#: apps/quiz/models.py:132 +msgid "" +"If yes, the quiz is not displayed in the quiz list and can only be taken by " +"users who can edit quizzes." +msgstr "" +"Wenn ja wird die Prüfung nicht in der Prüfungsliste angezeigt und kann nur " +"von Anwendern ausgeführt werden welche Prüfungen bearbeiten können." + +#: apps/quiz/models.py:152 apps/quiz/models.py:372 apps/quiz/models.py:541 +#: apps/quiz/templates/quiz/sitting_list.html:14 +msgid "Quiz" +msgstr "Quiz" + +#: apps/quiz/models.py:153 +msgid "Quizzes" +msgstr "Quizze" + +#: apps/quiz/models.py:192 apps/quiz/models.py:370 +#: apps/quiz/templates/quiz/sitting_detail.html:13 +#: apps/quiz/templates/quiz/sitting_list.html:13 +msgid "User" +msgstr "Anwender" + +#: apps/quiz/models.py:195 apps/quiz/templates/progress.html:60 +#: apps/quiz/templates/quiz/sitting_detail.html:15 +#: apps/quiz/templates/quiz/sitting_list.html:16 +msgid "Score" +msgstr "Punkte" + +#: apps/quiz/models.py:200 +msgid "User Progress" +msgstr "Anwender Fortschritt" + +#: apps/quiz/models.py:201 +msgid "User progress records" +msgstr "Fortschrittsaufzeichnung des Anwenders" + +#: apps/quiz/models.py:261 +msgid "error" +msgstr "Fehler" + +#: apps/quiz/models.py:261 +msgid "category does not exist or invalid score" +msgstr "Diese Kategorie existiert nicht oder das Ergebnis ist ungültig" + +#: apps/quiz/models.py:375 +msgid "Question Order" +msgstr "Reihenfolge der Fragen" + +#: apps/quiz/models.py:378 +msgid "Question List" +msgstr "Liste der Fragen" + +#: apps/quiz/models.py:381 +msgid "Incorrect questions" +msgstr "Falsche Antworten" + +#: apps/quiz/models.py:383 +msgid "Current Score" +msgstr "Aktueller Punktestand" + +#: apps/quiz/models.py:386 +msgid "Complete" +msgstr "Vollständig" + +#: apps/quiz/models.py:389 +msgid "User Answers" +msgstr "Antworten des Anwenders" + +#: apps/quiz/models.py:392 +msgid "Start" +msgstr "Anfang" + +#: apps/quiz/models.py:394 +msgid "End" +msgstr "Ende" + +#: apps/quiz/models.py:399 +msgid "Can see completed exams." +msgstr "Kann abgelegte Prüfungen sehen." + +#: apps/quiz/models.py:557 +msgid "Figure" +msgstr "Abbildung" + +#: apps/quiz/models.py:561 +msgid "Enter the question text that you want displayed" +msgstr "Geben Sie die Frage ein welche angezeigt werden soll" + +#: apps/quiz/models.py:563 apps/quiz/models.py:575 +#: apps/quiz/templates/question.html:47 +#: apps/quiz/templates/quiz/sitting_detail.html:21 +msgid "Question" +msgstr "Frage" + +#: apps/quiz/models.py:567 +msgid "Explanation to be shown after the question has been answered." +msgstr "Erklärung welche nach der Antwort angezeigt wird." + +#: apps/quiz/models.py:570 apps/quiz/templates/question.html:32 +#: apps/quiz/templates/result.html:21 apps/quiz/templates/result.html.py:87 +msgid "Explanation" +msgstr "Erklärung" + +#: apps/quiz/models.py:576 +msgid "Questions" +msgstr "Fragen" + +#: apps/quiz/templates/base.html:7 +msgid "Example Quiz Website" +msgstr "Beispiel Quiz Webseite" + +#: apps/quiz/templates/correct_answer.html:6 +msgid "You answered the above question incorrectly" +msgstr "Sie haben die obenstehende Frage falsch beantwortet" + +#: apps/quiz/templates/correct_answer.html:16 +msgid "This is the correct answer" +msgstr "Dies ist die richtige Antwort" + +#: apps/quiz/templates/correct_answer.html:23 +msgid "This was your answer." +msgstr "Dies war Ihre Antwort." + +#: apps/quiz/templates/progress.html:6 +msgid "Progress Page" +msgstr "Fortschrittsseite" + +#: apps/quiz/templates/progress.html:7 +msgid "User Progress Page" +msgstr "Fortschrittsseite des Anwenders" + +#: apps/quiz/templates/progress.html:13 +msgid "Question Category Scores" +msgstr "Punkte in dieser Fragenkategorie" + +#: apps/quiz/templates/progress.html:20 +msgid "Correctly answererd" +msgstr "Die Antwort ist richtig" + +#: apps/quiz/templates/progress.html:21 +msgid "Incorrect" +msgstr "Falsch" + +#: apps/quiz/templates/progress.html:50 +msgid "Previous exam papers" +msgstr "Vorhergehende Prüfung" + +#: apps/quiz/templates/progress.html:52 +msgid "Below are the results of exams that you have sat." +msgstr "Im Folgenden sehen Sie die Ergebnisse Ihrer Prüfungen." + +#: apps/quiz/templates/progress.html:59 +msgid "Quiz Title" +msgstr "Titel des Quiz" + +#: apps/quiz/templates/progress.html:61 +msgid "Possible Score" +msgstr "Mögliche Punkte" + +#: apps/quiz/templates/question.html:13 apps/quiz/templates/result.html:13 +msgid "The previous question" +msgstr "Die vorherige Frage" + +#: apps/quiz/templates/question.html:22 +msgid "Your answer was" +msgstr "Ihre Antwort war" + +#: apps/quiz/templates/question.html:47 +msgid "of" +msgstr "von" + +#: apps/quiz/templates/question.html:52 +msgid "Question category" +msgstr "Fragenkategorie" + +#: apps/quiz/templates/question.html:74 +msgid "Check" +msgstr "Überprüfung" + +#: apps/quiz/templates/quiz/category_list.html:3 +#: apps/quiz/templates/quiz/quiz_list.html:3 +#: apps/quiz/templates/quiz/sitting_list.html:3 +msgid "All Quizzes" +msgstr "Alle Quizze" + +#: apps/quiz/templates/quiz/category_list.html:6 +msgid "Category list" +msgstr "Liste der Kategorien" + +#: apps/quiz/templates/quiz/quiz_detail.html:11 +msgid "You will only get one attempt at this quiz" +msgstr "Sie haben nur einen Versuch bei dieser Prüfung" + +#: apps/quiz/templates/quiz/quiz_detail.html:16 +msgid "Start quiz" +msgstr "Quiz beginnen" + +#: apps/quiz/templates/quiz/quiz_list.html:6 +msgid "List of quizzes" +msgstr "Liste der Quizze" + +#: apps/quiz/templates/quiz/quiz_list.html:14 +msgid "Exam" +msgstr "Prüfung" + +#: apps/quiz/templates/quiz/quiz_list.html:15 +msgid "Single attempt" +msgstr "Einzelversuch" + +#: apps/quiz/templates/quiz/quiz_list.html:31 +#: apps/quiz/templates/quiz/sitting_list.html:42 +msgid "View details" +msgstr "Details ansehen" + +#: apps/quiz/templates/quiz/quiz_list.html:41 +msgid "There are no available quizzes" +msgstr "Es sind keine Prüfungen verfügbar" + +#: apps/quiz/templates/quiz/sitting_detail.html:5 +msgid "Result of" +msgstr "Resultat von" + +#: apps/quiz/templates/quiz/sitting_detail.html:5 +msgid "for" +msgstr "für" + +#: apps/quiz/templates/quiz/sitting_detail.html:9 +msgid "Quiz title" +msgstr "Quiztitel" + +#: apps/quiz/templates/quiz/sitting_detail.html:14 +#: apps/quiz/templates/quiz/sitting_list.html:15 +msgid "Completed" +msgstr "Vollständig" + +#: apps/quiz/templates/quiz/sitting_detail.html:22 +msgid "User answer" +msgstr "Anwender Antwort" + +#: apps/quiz/templates/quiz/sitting_detail.html:41 +msgid "incorrect" +msgstr "falsch" + +#: apps/quiz/templates/quiz/sitting_detail.html:43 +msgid "Correct" +msgstr "Richtig" + +#: apps/quiz/templates/quiz/sitting_detail.html:49 +msgid "Toggle whether correct" +msgstr "Markieren wenn richtig" + +#: apps/quiz/templates/quiz/sitting_list.html:6 +msgid "List of complete exams" +msgstr "Liste der abgelegten Prüfungen" + +#: apps/quiz/templates/quiz/sitting_list.html:28 +msgid "Filter" +msgstr "Filter" + +#: apps/quiz/templates/quiz/sitting_list.html:52 +msgid "There are no matching quizzes" +msgstr "Es gibt keine übereinstimmenden Prüfungen" + +#: apps/quiz/templates/result.html:7 +msgid "Exam Results for" +msgstr "Prüfungsergebnisse für" + +#: apps/quiz/templates/result.html:32 +msgid "Exam results" +msgstr "Prüfungsergebnisse" + +#: apps/quiz/templates/result.html:34 +msgid "Exam title" +msgstr "Prüfungstitel" + +#: apps/quiz/templates/result.html:38 +msgid "You answered" +msgstr "Ihre Antwort" + +#: apps/quiz/templates/result.html:38 +msgid "questions correctly out of" +msgstr "Fragen richtig von " + +#: apps/quiz/templates/result.html:38 +msgid "giving you" +msgstr "Sie erhalten" + +#: apps/quiz/templates/result.html:38 +msgid "percent correct" +msgstr "Prozent korrekt" + +#: apps/quiz/templates/result.html:48 +msgid "Review the questions below and try the exam again in the future" +msgstr "Sehen Sie sich die folgenden Fragen an und wiederholen Sie die Prüfung" + +#: apps/quiz/templates/result.html:52 +msgid "" +"The result of this exam will be stored in your progress section so you can " +"review and monitor your progression" +msgstr "" +"Das Resultat dieser Prüfung wird gespeichert und Sie können sich Ihren " +"Fortschritt ansehen" + +#: apps/quiz/templates/result.html:66 +msgid "Your session score is" +msgstr "Der Punktestand dieser Sitzung ist" + +#: apps/quiz/templates/result.html:66 +msgid "out of a possible" +msgstr "von möglichen" + +#: apps/quiz/templates/result.html:84 +msgid "Your answer" +msgstr "Ihre Antwort" + +#: apps/quiz/templates/single_complete.html:13 +msgid "You have already sat this exam and only one sitting is permitted" +msgstr "" +"Sie haben diese Prüfung schon abgelegt und dies kann nur einmal erfolgen" + +#: apps/quiz/templates/single_complete.html:15 +msgid "This exam is only accessible to signed in users" +msgstr "Diese Prüfung ist angemeldeten Anwendern vorbehalten" + +#: apps/quiz/templates/view_quiz_category.html:3 +msgid "Quizzes related to" +msgstr "Quizze bezogen auf" + +#: apps/quiz/templates/view_quiz_category.html:6 +msgid "Quizzes in the" +msgstr "Quizze in der" + +#: apps/quiz/templates/view_quiz_category.html:6 +msgid "category" +msgstr "Kategorie" + +#: apps/quiz/templates/view_quiz_category.html:20 +msgid "There are no quizzes" +msgstr "Es gibt keine Quizze" diff --git a/quiz-app/quiz/locale/es_CO/LC_MESSAGES/django.mo b/quiz-app/quiz/locale/es_CO/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..383bc494fa7467b4fb9c76b505243e88913aa87a GIT binary patch literal 7861 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 Qz~5*f=vxur{7e@9AMe(Up#T5? literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/locale/es_CO/LC_MESSAGES/django.po b/quiz-app/quiz/locale/es_CO/LC_MESSAGES/django.po new file mode 100644 index 0000000..099afe6 --- /dev/null +++ b/quiz-app/quiz/locale/es_CO/LC_MESSAGES/django.po @@ -0,0 +1,473 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: django-quiz\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-01 11:37+0400\n" +"PO-Revision-Date: 2016-03-24 16:26-0500\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.4\n" +"Language-Team: \n" +"Last-Translator: \n" +"Language: es_CO\n" + +#: admin.py:31 admin.py:33 models.py:576 +msgid "Questions" +msgstr "Preguntas" + +#: models.py:30 models.py:37 models.py:53 models.py:83 models.py:545 +#: templates/progress.html:19 templates/quiz/quiz_detail.html:9 +#: templates/quiz/quiz_list.html:13 templates/quiz/sitting_detail.html:10 +msgid "Category" +msgstr "Categoría" + +#: models.py:38 +msgid "Categories" +msgstr "Categorías" + +#: models.py:48 models.py:58 models.py:550 +msgid "Sub-Category" +msgstr "Sub-Categoría" + +#: models.py:59 +msgid "Sub-Categories" +msgstr "Sub-Categorías" + +#: models.py:69 templates/quiz/quiz_list.html:12 +msgid "Title" +msgstr "Título" + +#: models.py:73 +msgid "Description" +msgstr "Descripción" + +#: models.py:74 +msgid "a description of the quiz" +msgstr "una descripción del quiz" + +#: models.py:78 +msgid "a user friendly url" +msgstr "una url amigable para el usuario" + +#: models.py:79 +msgid "user friendly url" +msgstr "url amigable para el usuario" + +#: models.py:87 +msgid "Random Order" +msgstr "Orden Aleatorio" + +#: models.py:88 +msgid "Display the questions in a random order or as they are set?" +msgstr "¿Muestra las preguntas en un orden aleatorio o como se crearon?" + +#: models.py:93 +msgid "Max Questions" +msgstr "Número Máximo de Preguntas" + +#: models.py:94 +msgid "Number of questions to be answered on each attempt." +msgstr "Número de preguntas a ser resueltas por cada intento" + +#: models.py:98 +msgid "" +"Correct answer is NOT shown after question. Answers displayed at the end." +msgstr "" +"Respuestas correctas NO serán mostradas después de la pregunta. Las " +"respuestas se mostrarán al final" + +#: models.py:100 +msgid "Answers at end" +msgstr "Respuestas al final" + +#: models.py:104 +msgid "" +"If yes, the result of each attempt by a user will be stored. Necessary for " +"marking." +msgstr "" +"Si escoge si, el resultado de cada intento por usuario será guardado. " +"Necesario para marcar" + +#: models.py:107 +msgid "Exam Paper" +msgstr "Papel del Exámen" + +#: models.py:111 +msgid "" +"If yes, only one attempt by a user will be permitted. Non users cannot sit " +"this exam." +msgstr "" +"Si escoge si, solo un intento será permitido por usuario. Los que no sean " +"usuarios no tomarán este exámen" + +#: models.py:114 +msgid "Single Attempt" +msgstr "Un Intento" + +#: apps/quiz/models.py:116 +msgid "Pass Mark" +msgstr "Mínimo exigido para aprobar" + +#: models.py:118 +msgid "Percentage required to pass exam." +msgstr "Porcentaje requerido para aprobar el examen" + +#: models.py:122 +msgid "Displayed if user passes." +msgstr "Mostrar si el usuario pasa" + +#: models.py:123 +msgid "Success Text" +msgstr "Texto de Éxito" + +#: models.py:126 +msgid "Fail Text" +msgstr "Texto de Fracaso" + +#: models.py:127 +msgid "Displayed if user fails." +msgstr "Mostrar si el usuario fracasa" + +#: models.py:131 +msgid "Draft" +msgstr "Borrador" + +#: models.py:132 +msgid "" +"If yes, the quiz is not displayed in the quiz list and can only be taken by " +"users who can edit quizzes." +msgstr "" +"Si escoge si, este quiz no será mostrado en la lista de quizes y solo podrá " +"ser tomado por usuarios que puedan editar quizes" + +#: models.py:152 models.py:372 models.py:541 +#: templates/quiz/sitting_list.html:14 +msgid "Quiz" +msgstr "Quiz" + +#: models.py:153 +msgid "Quizzes" +msgstr "Quizes" + +#: models.py:192 models.py:370 templates/quiz/sitting_detail.html:13 +#: templates/quiz/sitting_list.html:13 +msgid "User" +msgstr "Usuario" + +#: models.py:195 templates/progress.html:60 +#: templates/quiz/sitting_detail.html:15 templates/quiz/sitting_list.html:16 +msgid "Score" +msgstr "Puntaje" + +#: models.py:200 +msgid "User Progress" +msgstr "Progreso de Usuario" + +#: models.py:201 +msgid "User progress records" +msgstr "Registros de progreso del usuario" + +#: models.py:261 +msgid "error" +msgstr "error" + +#: models.py:261 +msgid "category does not exist or invalid score" +msgstr "categoría no existe o puntaje inválido" + +#: models.py:375 +msgid "Question Order" +msgstr "Orden de las Preguntas" + +#: models.py:378 +msgid "Question List" +msgstr "Lista de Preguntas" + +#: models.py:381 +msgid "Incorrect questions" +msgstr "Preguntas Incorrectas" + +#: models.py:383 +msgid "Current Score" +msgstr "Puntaje Actual" + +#: models.py:386 +msgid "Complete" +msgstr "Completo" + +#: models.py:389 +msgid "User Answers" +msgstr "Respuestas de los Usuarios" + +#: models.py:392 +msgid "Start" +msgstr "Inicio" + +#: models.py:394 +msgid "End" +msgstr "Fin" + +#: models.py:399 +msgid "Can see completed exams." +msgstr "Puede ver exámenes completados" + +#: models.py:557 +msgid "Figure" +msgstr "Figura" + +#: models.py:561 +msgid "Enter the question text that you want displayed" +msgstr "Ingresa el texto de la pregunta que quiere que aparezca" + +#: models.py:563 models.py:575 templates/question.html:47 +#: templates/quiz/sitting_detail.html:21 +msgid "Question" +msgstr "Pregunta" + +#: models.py:567 +msgid "Explanation to be shown after the question has been answered." +msgstr "" +"Explicación que debe ser mostrada después de que la pregunta fue respondida" + +#: models.py:570 templates/question.html:32 templates/result.html:21 +#: templates/result.html.py:87 +msgid "Explanation" +msgstr "Explicación" + +#: templates/base.html:7 +msgid "Example Quiz Website" +msgstr "Sitio Web Ejemplo Quiz" + +#: templates/correct_answer.html:6 +msgid "You answered the above question incorrectly" +msgstr "Ha respondido a la pregunta anterior de forma incorrecta" + +#: templates/correct_answer.html:16 +msgid "This is the correct answer" +msgstr "Esta es la respuesta correcta" + +#: templates/correct_answer.html:23 +msgid "This was your answer." +msgstr "Esta fue tu respuesta" + +#: templates/progress.html:6 +msgid "Progress Page" +msgstr "Página de Progreso" + +#: templates/progress.html:7 +msgid "User Progress Page" +msgstr "Página Progreso de Usuario" + +#: templates/progress.html:13 +msgid "Question Category Scores" +msgstr "Pregunta Puntajes de las Categorías" + +#: templates/progress.html:20 +msgid "Correctly answererd" +msgstr "Correctamente contestada" + +#: templates/progress.html:21 +msgid "Incorrect" +msgstr "Incorrecta" + +#: templates/progress.html:50 +msgid "Previous exam papers" +msgstr "Exámenes anteriores" + +#: templates/progress.html:52 +msgid "Below are the results of exams that you have sat." +msgstr "Abajo están los resultados de los exámenes que se ha realizado." + +#: templates/progress.html:59 +msgid "Quiz Title" +msgstr "Título del Quiz" + +#: templates/progress.html:61 +msgid "Possible Score" +msgstr "Puntos posibles" + +#: templates/question.html:13 templates/result.html:13 +msgid "The previous question" +msgstr "La pregunta anterior" + +#: templates/question.html:22 +msgid "Your answer was" +msgstr "Tu respuesta fue" + +#: templates/question.html:47 +msgid "of" +msgstr "de" + +#: templates/question.html:52 +msgid "Question category" +msgstr "Categoría de la pregunta" + +#: templates/question.html:74 +msgid "Check" +msgstr "Verificar" + +#: templates/quiz/category_list.html:3 templates/quiz/quiz_list.html:3 +#: templates/quiz/sitting_list.html:3 +msgid "All Quizzes" +msgstr "Todos los Quizes" + +#: templates/quiz/category_list.html:6 +msgid "Category list" +msgstr "Lista de Categorías" + +#: templates/quiz/quiz_detail.html:11 +msgid "You will only get one attempt at this quiz" +msgstr "Solo se tendrá un intento para este quiz" + +#: templates/quiz/quiz_detail.html:16 +msgid "Start quiz" +msgstr "Empezar quiz" + +#: templates/quiz/quiz_list.html:6 +msgid "List of quizzes" +msgstr "Lista de quizes" + +#: templates/quiz/quiz_list.html:14 +msgid "Exam" +msgstr "Examen" + +#: templates/quiz/quiz_list.html:15 +msgid "Single attempt" +msgstr "Un solo intento" + +#: templates/quiz/quiz_list.html:31 templates/quiz/sitting_list.html:42 +msgid "View details" +msgstr "Ver detalles" + +#: templates/quiz/quiz_list.html:41 +msgid "There are no available quizzes" +msgstr "No hay quizes disponibles" + +#: templates/quiz/sitting_detail.html:5 +msgid "Result of" +msgstr "Resultado de" + +#: templates/quiz/sitting_detail.html:5 +msgid "for" +msgstr "para" + +#: templates/quiz/sitting_detail.html:9 +msgid "Quiz title" +msgstr "Título de Quiz" + +#: templates/quiz/sitting_detail.html:14 templates/quiz/sitting_list.html:15 +msgid "Completed" +msgstr "Completado" + +#: templates/quiz/sitting_detail.html:22 +msgid "User answer" +msgstr "Respuesta de usuario" + +#: templates/quiz/sitting_detail.html:41 +msgid "incorrect" +msgstr "Incorrecta" + +#: templates/quiz/sitting_detail.html:43 +msgid "Correct" +msgstr "Correcto" + +#: templates/quiz/sitting_detail.html:49 +msgid "Toggle whether correct" +msgstr "Alternar si es correcta" + +#: templates/quiz/sitting_list.html:6 +msgid "List of complete exams" +msgstr "Lista de examenes completos" + +#: templates/quiz/sitting_list.html:28 +msgid "Filter" +msgstr "Filtro" + +#: templates/quiz/sitting_list.html:52 +msgid "There are no matching quizzes" +msgstr "No hay quizes que coincidan" + +#: templates/result.html:7 +msgid "Exam Results for" +msgstr "Resultados del exámen de" + +#: templates/result.html:32 +msgid "Exam results" +msgstr "Resultados del exámen" + +#: templates/result.html:34 +msgid "Exam title" +msgstr "Título del exámen" + +#: templates/result.html:38 +msgid "You answered" +msgstr "Tu respondiste" + +#: templates/result.html:38 +msgid "questions correctly out of" +msgstr "preguntas correctas de cada" + +#: templates/result.html:38 +msgid "giving you" +msgstr "darle" + +#: templates/result.html:38 +msgid "percent correct" +msgstr "porcentaje de respuestas correctas" + +#: templates/result.html:48 +msgid "Review the questions below and try the exam again in the future" +msgstr "" +"Revisa las preguntas a continuación e intente el examen de nuevo en el " +"futuro" + +#: templates/result.html:52 +msgid "" +"The result of this exam will be stored in your progress section so you can " +"review and monitor your progression" +msgstr "" +"El resultado de este examen se almacenará en su sección de progreso para " +"que pueda revisar y supervisar su progreso" + +#: templates/result.html:66 +msgid "Your session score is" +msgstr "Su puntuación de sesión es" + +#: templates/result.html:66 +msgid "out of a possible" +msgstr "de un total posible" + +#: templates/result.html:84 +msgid "Your answer" +msgstr "Tu respuesta" + +#: templates/single_complete.html:13 +msgid "You have already sat this exam and only one sitting is permitted" +msgstr "Usted ya ha enviado este examen, y sólo se permite una sola sesión" + +#: templates/single_complete.html:15 +msgid "This exam is only accessible to signed in users" +msgstr "Este examen es sólo accesible para los usuarios inscritos" + +#: templates/view_quiz_category.html:3 +msgid "Quizzes related to" +msgstr "Quizes relacionados con" + +#: templates/view_quiz_category.html:6 +msgid "Quizzes in the" +msgstr "Quizes en el" + +#: templates/view_quiz_category.html:6 +msgid "category" +msgstr "categoría" + +#: templates/view_quiz_category.html:20 +msgid "There are no quizzes" +msgstr "No hay quizes" diff --git a/quiz-app/quiz/locale/fr/LC_MESSAGES/django.mo b/quiz-app/quiz/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..81d5d82e2560aece6993e9b30f8703b8a32999c4 GIT binary patch literal 8014 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 literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/locale/fr/LC_MESSAGES/django.po b/quiz-app/quiz/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 0000000..a6c2355 --- /dev/null +++ b/quiz-app/quiz/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,330 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-05-28 17:45+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: quiz/templates/base.html:8 +msgid "Garage Numérique Quizzes" +msgstr "Quiz du Garage Numérique" + +#: quiz/templates/base.html:27 +msgid "Hi " +msgstr "Bonjour" + +#: quiz/templates/base.html:28 +msgid "Disconnect" +msgstr "Se déconnecter" + +#: quiz/templates/base.html:29 +#, fuzzy +#| msgid "User Progress" +msgid "Progress" +msgstr "Progression de l'utilisateur" + +#: quiz/templates/base.html:31 +#, fuzzy +#| msgid "Result of" +msgid "Results" +msgstr "Resultat de" + +#: quiz/templates/base.html:35 +msgid "Connect" +msgstr "Se connecter" + +#: quiz/templates/correct_answer.html:6 +msgid "You answered incorrectly to this answer" +msgstr "Vous avez répondu incorrectement à cette question" + +#: quiz/templates/correct_answer.html:16 +#, fuzzy +#| msgid "This is the correct answer" +msgid "It's a correct answer" +msgstr "C'est la bonne réponse" + +#: quiz/templates/correct_answer.html:23 quiz/templates/question.html:22 +msgid "Your answer was" +msgstr "Voici la réponse que vous avez donnée" + +#: quiz/templates/progress.html:6 +msgid "Progress Page" +msgstr "Page de progression" + +#: quiz/templates/progress.html:7 +msgid "User Progress Page" +msgstr "Page de progression de l'utilisateur" + +#: quiz/templates/progress.html:13 +msgid "Question Category Scores" +msgstr "Scores par catégorie" + +#: quiz/templates/progress.html:19 quiz/templates/quiz/quiz_detail.html:9 +#: quiz/templates/quiz/quiz_list.html:13 +msgid "Category" +msgstr "Categorie" + +#: quiz/templates/progress.html:20 +msgid "Correctly answererd" +msgstr "Correctement répondues" + +#: quiz/templates/progress.html:21 quiz/templates/quiz/sitting_detail.html:45 +msgid "Incorrect" +msgstr "Incorrecte" + +#: quiz/templates/progress.html:50 +msgid "Previous exam papers" +msgstr "Examens précédents" + +#: quiz/templates/progress.html:52 +msgid "Below are the results of exams that you have sat." +msgstr "Voici les résultats des examens que vous avez réalisés." + +#: quiz/templates/progress.html:59 +msgid "Quiz Title" +msgstr "Titre du quiz" + +#: quiz/templates/progress.html:60 quiz/templates/quiz/sitting_detail.html:18 +#: quiz/templates/quiz/sitting_list.html:20 +msgid "Score" +msgstr "Score" + +#: quiz/templates/progress.html:61 +msgid "Possible Score" +msgstr "Score max." + +#: quiz/templates/question.html:13 quiz/templates/result.html:13 +msgid "The previous question" +msgstr "La question précédente" + +#: quiz/templates/question.html:32 quiz/templates/result.html:21 +#: quiz/templates/result.html:87 +msgid "Explanation" +msgstr "Explication" + +#: quiz/templates/question.html:47 quiz/templates/quiz/sitting_detail.html:24 +msgid "Question" +msgstr "Question" + +#: quiz/templates/question.html:47 +msgid "of" +msgstr "de" + +#: quiz/templates/question.html:52 +msgid "Question category" +msgstr "Catégorie de la question" + +#: quiz/templates/question.html:74 +msgid "Check" +msgstr "Verifier" + +#: quiz/templates/quiz/category_list.html:3 +#: quiz/templates/quiz/sitting_list.html:3 +msgid "All Quizzes" +msgstr "Tous les quiz" + +#: quiz/templates/quiz/category_list.html:6 +msgid "Category list" +msgstr "Liste de catégories" + +#: quiz/templates/quiz/quiz_detail.html:11 +msgid "You will only get one attempt at this quiz" +msgstr "Vous n'aurez qu'un seul essai pour ce quiz" + +#: quiz/templates/quiz/quiz_detail.html:16 +msgid "Start quiz" +msgstr "Commencer le quiz" + +#: quiz/templates/quiz/quiz_list.html:3 +#, fuzzy +#| msgid "List of quizzes" +msgid "Tout les quizzs" +msgstr "Liste des quizs" + +#: quiz/templates/quiz/quiz_list.html:6 +msgid "List of quizzes" +msgstr "Liste des quizs" + +#: quiz/templates/quiz/quiz_list.html:12 +msgid "Title" +msgstr "Titre" + +#: quiz/templates/quiz/quiz_list.html:14 +msgid "Exam" +msgstr "Examen" + +#: quiz/templates/quiz/quiz_list.html:15 +msgid "Single attempt" +msgstr "Un seul essai" + +#: quiz/templates/quiz/quiz_list.html:31 +#: quiz/templates/quiz/sitting_list.html:46 +msgid "View details" +msgstr "Voir les détails" + +#: quiz/templates/quiz/quiz_list.html:41 +msgid "There are no available quizzes" +msgstr "Il n'y a pas de quiz disponibles" + +#: quiz/templates/quiz/sitting_detail.html:5 +#, fuzzy +#| msgid "Result of" +msgid "Results of " +msgstr "Resultat de" + +#: quiz/templates/quiz/sitting_detail.html:5 +msgid "for " +msgstr "pour " + +#: quiz/templates/quiz/sitting_detail.html:12 +msgid "Quiz title" +msgstr "Titre du quiz" + +#: quiz/templates/quiz/sitting_detail.html:13 +#, fuzzy +#| msgid "Category" +msgid "Catégory" +msgstr "Categorie" + +#: quiz/templates/quiz/sitting_detail.html:16 +#: quiz/templates/quiz/sitting_list.html:17 +msgid "User" +msgstr "Utilisateur" + +#: quiz/templates/quiz/sitting_detail.html:17 +#: quiz/templates/quiz/sitting_list.html:19 +msgid "Completed" +msgstr "Completé" + +#: quiz/templates/quiz/sitting_detail.html:25 +msgid "User answer" +msgstr "Réponse de l'utilisateur" + +#: quiz/templates/quiz/sitting_detail.html:47 +msgid "Correct" +msgstr "Correcte" + +#: quiz/templates/quiz/sitting_detail.html:60 +#: quiz/templates/quiz/sitting_list.html:60 +msgid "You don't have access to this page" +msgstr "Vous n'avez pas accès à cette page" + +#: quiz/templates/quiz/sitting_detail.html:66 +msgid "Toggle whether correct" +msgstr "[Dés]Activer si c'est correcte" + +#: quiz/templates/quiz/sitting_list.html:10 +msgid "List of complete exams" +msgstr "Liste des examens complétés" + +#: quiz/templates/quiz/sitting_list.html:18 +msgid "Quiz" +msgstr "Quiz" + +#: quiz/templates/quiz/sitting_list.html:32 +msgid "Filter" +msgstr "Filtre" + +#: quiz/templates/quiz/sitting_list.html:56 +msgid "There are no matching quizzes" +msgstr "Il n'y a pas de quiz correspondant" + +#: quiz/templates/result.html:7 +#, fuzzy +#| msgid "Exam Results for" +msgid "Exam results for" +msgstr "Résultats de l'examen de" + +#: quiz/templates/result.html:32 +msgid "Exam results" +msgstr "Résultats de l'examen" + +#: quiz/templates/result.html:34 +msgid "Exam title" +msgstr "Titre de l'examen" + +#: quiz/templates/result.html:38 +msgid "You answered" +msgstr "Vous avez donné la bonne réponse pour " + +#: quiz/templates/result.html:38 +#, fuzzy +#| msgid "questions correctly out of" +msgid "questions correctly on " +msgstr "questions sur un total de" + +#: quiz/templates/result.html:38 +msgid "giving you" +msgstr "ce qui vous donne" + +#: quiz/templates/result.html:38 +#, fuzzy +#| msgid "This is the correct answer" +msgid " of correct answers" +msgstr "C'est la bonne réponse" + +#: quiz/templates/result.html:48 +msgid "Review the questions below and try the exam again in the future" +msgstr "" +"Revoyez les questions suivantes et essayez à nouveau l'examen une autre fois" + +#: quiz/templates/result.html:52 +msgid "" +"The result of this exam will be stored in your progress section so you can " +"review and monitor your progression" +msgstr "" +"Le résultat de cet examen sera enregistré pour que vous puissiez suivre " +"votre progression" + +#: quiz/templates/result.html:66 +msgid "Your session score is" +msgstr "Votre score pour cette session est" + +#: quiz/templates/result.html:66 +msgid "out of a possible" +msgstr "sur un maximum de" + +#: quiz/templates/result.html:84 +msgid "Your answer" +msgstr "Votre réponse" + +#: quiz/templates/single_complete.html:13 +msgid "You already did this quiz" +msgstr "Vous avez déjà éffectué ce quiz" + +#: quiz/templates/single_complete.html:15 +#, fuzzy +#| msgid "This exam is only accessible to signed in users" +msgid "This quiz is only accessible to authentified users" +msgstr "Cet examen n'est accessible qu'aux utilisateurs enregistrés" + +#: quiz/templates/view_quiz_category.html:3 +msgid "Quizzes related to" +msgstr "Quiz pour la catégorie" + +#: quiz/templates/view_quiz_category.html:6 +msgid "Quizzes in the" +msgstr "Quizs dans la catégorie" + +#: quiz/templates/view_quiz_category.html:6 +#, fuzzy +#| msgid "category" +msgid "category" +msgstr "catégorie" + +#: quiz/templates/view_quiz_category.html:20 +msgid "There are no quizzes" +msgstr "Il n'y a pas de quiz" diff --git a/quiz-app/quiz/locale/it/LC_MESSAGES/django.mo b/quiz-app/quiz/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..926bc4c8c650deb782304129e742dd71ea23c36f GIT binary patch literal 7232 zcmaKwS&SS<8OJLS2$&<`3P*sHNrVZ>4C@#OtYasRvxX%;7VkP-5~y~jcD9qA?n!sg zZgx2ZhzP{-1V{vlLm(mGfkOx$Kpcq>DBLIlaYRHyf~QCz@xTL!-@mH5XVw_3@%;Lz z=4%;lz^B2lK+U@!YQJB>!|)-feV)VO&xVJf);$F!>MDE* zd>yyg_pw-ycE6zN}mtIL-3PuKl}xh9sdp`$3+OCahF3xFjqtA+e^<+K#gC6 zPk{rdeWy_Rz7w*Pd2ixJASN@PfSUJN_*D2+C_CH_HUF3JCir_OdtSjyjo+WR0QLMP zsP&i9^A*U)yd^P*&)|Ls7VsnR`S9QHdGL8CCp`~C`Dq0{2fhnx-n~%!d=<)m--OcZ zXOJb#uOT1vC%&Y|BM_0zMF^|;Pl6hERpJ7?mir^{W|+Yj!!JV3dl1S$4@1rW8&q6f z!bACSKa?L{244h^LdiFRinlS8J??_C5r{8D=UL-_8C$Qvkm z-^5_)vk7m6Z-t7FZ$Yj5yTm_3rkF>dO20Qi+5IhW5f0PyPeHBodC13nlP}5h0F)lThw|@Vq4xO~ybV5{ zhtGuPpyV4v<<%D4fNzKIhJS_wIKmmy`vIu^9)zk#e}TBjT#Qok)6?J~*n`(X2iekm z2=XzX;fp2Bx1jRir|=5+Ak;d4OO$Zh=TfL~`=Ru|21>s^ls-q(^VdMx`wUcFc_Y+% zcS6}=7s_t;K2(^a z4!;R5!H>h2!#_fedpgENBy%;q3LZ)K4od%BD0_Sm_Ta~$2f9n|^SoIi4nV7elV9$`2S2X}Y9UNqDc?zJ`HEep>{2v#bx>B`-0JH=l})smxizj4rnfuPHe*v;xnfw3 zZCMT3y{xR0Q9R3Hvf4K{wR71&+pyD`Q5!DH>;45^Ok7=iy{S;fEMfkoLP|;Mc3a!{ zyQN36`?f>iPDQhXSHhQFaT8y~%d^RA8)bTs+!)_BS(E#4iMv7=*w^{>I&1V0%M~t| zVD8#BrCmq6IkWGPa1$G>dyjR3n>^+|fy#Cb$<2vuG{w3nvK-CK@`l~<^>wx^@I+a7 zeAM{yq_OK*Fj{LnBRbg*b;cQQhkbjxEW*3m4qQ=`jYV2aLO3WY``xNhs%%$*qG6q# ztL^q?8D9G#JKYsiW$!-GrXe%jVDtazQ8z@Fl<)&z z*RI;J_{EN0b!S$LShFDdLa=vNo$qUNQnHeLZF0rj>K-S_%qe#_o{X7Lo72mby&eopMZS@G3?TyP^LJe&nFIlDWfg1VM|P| z?`|ufvz(MOXJabI-D1*UG;`sw!S2F#c z*JIZVHZjJ9-_E9_Y*y}u>fnOXA>s(cIvW)#si_bk0ps{ID4r51m7n-(o0=36uuyGtD`YK76&ONW5vodGB2eZcS--4A-4aNoG!m+T1QP4t=BQZ{EO} z*=FCKo1lSPFF8(IZ=z*VDc=cW!(r?4%Ddr?4qfK7){>jLVoF(TWNBV@)iW#*!XOMA zdFshr-E9|>A2hVnY3|x$%=nJest)0Te4cHLL&5IYRK<}$!dj`CZ*cw>LyG;h%1xKZ z?S&ndK9*{Kcc^p~x^KBW8`@f17++N!Vmio1*_Kqpr=~NHAzRC7D3H!hQhhS0u2R-H zw>2xLN7n?zSw_X)?hz4}-$73FmWRFDsc0y>XjhIMzwOwomhA0IXIGccoZffVPs*z4 zovKIKuy@OJRQJ}(MZ0h1%v$d_K2k#UZl%a9+Upk%zN~j}p?Bz@z5e>eg+tda@Q;B# z)fg>)!ErB5<4(G|>8;Ul)Re5UTD0p2tiAE*fqf@kF`80gdu!f}7wySor(bnW0^WG? z_ zJ8$@^w?sG&G5(@`#d_9syG!MKTDiP;qO8XCqAe!jwmx$GVH+=xyr{7IkJy9P9Nzc( zP7^=uovXug!#hx<>{TV3H_k5fZ|J{#pIMs{#Wu6ARY;zt6D#Y6Vw302Ze#_GT1KNa zno^l4Tht$#Hr#>PnNwwISam)0qdc>|c4LNXg<{%doO9DMvs<3?#oO6{bi6Weu5E3b z)y#$S*0rZs<_)2dZDa%2wyb4)fuCZl*>G`^ZZV4QV(3Z9(`QcG`@Udt|CBi2-E}-0 zmXp$=9*rgW?E3a3)x1@F%VQ(doSQLcject(`V~btTa0nCM^U~G@Zrq(3Vi2m`Wxn<=XRz5IQ z$az}eoVIJ=`~Q20S`F7Xx0Kj~b`c?$!@BhV$L7QY-0$o^ysBYbE*3fbGZgt%uJ~Pbncm+8FEBvkw;tg!#4MQ z`8ru&B|VI%Hy|=*w#GUkIDGD@5^)?2%JjakVJ*T!KZiLkHV_$_7z$X$JscDnX;;VgLLUh$e<7eMW{sN zRB&XcQrD1&1gtVTC}IOOCHRzY8L4wrY|S%LwafY#`>FoXFAgYqMUxpC^Q<5c5xQ+y zvZS}`YDQP-oQ)=N)-1`vZR&ZGib1m2tW>tS+1fJn-EB&dy|JpN6bp?)DDxr16i6;i zpqAx1DMlT4=1i(p47bCRBJdnk!-~OQcbOt;#5BZt*$>wF+El)5}g-(y64v z&L>Lf*4rl}4wWb)gjM9}Ju;_w3}UZpmtN{-I2Yo5+sC_*(50p5=nUfkNflZrLyQDG z+WN*DyL?`lht4HcA`Yz(&SO93Zz?)BV&*vlIaDGAKdpGN8xDX{nvzghNv)Cos=xwm zdil1skGa<9P@IK>er{8ALr!8#l|B?Gvh^&_%zwSqu@m0M06YIZ{tT5n)>|s!Y%vl| zMpjJESA^E}ai&xCoG+Q}F*o-*7FPyw(9P;+iaN?zDnL4s((KZl3q?ZF6#I)(I(a9pFhd9@3zizF%c+{Cu0jTI)v zqjypfgUP?D=$%$tXq2hyrItq}dCva)gu, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-31 22:44+0000\n" +"PO-Revision-Date: 2015-10-31 22:43+0000\n" +"Last-Translator: b' <>'\n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Translated-Using: django-rosetta 0.7.6\n" + +#: apps/quiz/models.py:30 apps/quiz/models.py:37 apps/quiz/models.py:53 +#: apps/quiz/models.py:83 apps/quiz/models.py:545 +#: apps/quiz/templates/progress.html:19 +#: apps/quiz/templates/quiz/quiz_detail.html:9 +#: apps/quiz/templates/quiz/quiz_list.html:13 +#: apps/quiz/templates/quiz/sitting_detail.html:10 +msgid "Category" +msgstr "Categoria" + +#: apps/quiz/models.py:38 +msgid "Categories" +msgstr "Categorie" + +#: apps/quiz/models.py:48 apps/quiz/models.py:58 apps/quiz/models.py:550 +msgid "Sub-Category" +msgstr "Sotto-Categoria" + +#: apps/quiz/models.py:59 +msgid "Sub-Categories" +msgstr "Sotto-categorie" + +#: apps/quiz/models.py:69 apps/quiz/templates/quiz/quiz_list.html:12 +msgid "Title" +msgstr "Titolo" + +#: apps/quiz/models.py:73 +msgid "Description" +msgstr "Descrizione" + +#: apps/quiz/models.py:74 +msgid "a description of the quiz" +msgstr "una descrizione del quiz" + +#: apps/quiz/models.py:78 +msgid "a user friendly url" +msgstr "un url amichevole" + +#: apps/quiz/models.py:79 +msgid "user friendly url" +msgstr "url amichevole" + +#: apps/quiz/models.py:87 +msgid "Random Order" +msgstr "Ordine Casuale" + +#: apps/quiz/models.py:88 +msgid "Display the questions in a random order or as they are set?" +msgstr "" +"Visualizzare le domande in un ordine casuale o nell'ordine in cui sono state " +"inserite?" + +#: apps/quiz/models.py:93 +msgid "Max Questions" +msgstr "Numero massimo di domande" + +#: apps/quiz/models.py:94 +msgid "Number of questions to be answered on each attempt." +msgstr "Numero di domande cui rispondere in ogni tentativo." + +#: apps/quiz/models.py:98 +msgid "" +"Correct answer is NOT shown after question. Answers displayed at the end." +msgstr "" +"La risposta corretta NON è visualizzata dopo la domanda. Le risposte vengono " +"visualizzate alla fine." + +#: apps/quiz/models.py:100 +msgid "Answers at end" +msgstr "Risposte alla fine" + +#: apps/quiz/models.py:104 +msgid "" +"If yes, the result of each attempt by a user will be stored. Necessary for " +"marking." +msgstr "" +"Se si, il risultato di ogni tentativo da parte di un utente verrà salvato. " +"Necessario per segnare." + +#: apps/quiz/models.py:107 +msgid "Exam Paper" +msgstr "Foglio dell'esame" + +#: apps/quiz/models.py:111 +msgid "" +"If yes, only one attempt by a user will be permitted. Non users cannot sit " +"this exam." +msgstr "" +"Se si, per ogni utente sarà permesso un solo tentativo. I non tutenti non " +"potranno sostenere l'esame." + +#: apps/quiz/models.py:114 +msgid "Single Attempt" +msgstr "Songolo tentativo" + +#: apps/quiz/models.py:118 +msgid "Percentage required to pass exam." +msgstr "Percentuale richiesta per superare l'esame." + +#: apps/quiz/models.py:122 +msgid "Displayed if user passes." +msgstr "Visualizzato se l'utente passa." + +#: apps/quiz/models.py:123 +msgid "Success Text" +msgstr "Testo Risposta Corretta" + +#: apps/quiz/models.py:126 +msgid "Fail Text" +msgstr "Test risposta Sbagliata" + +#: apps/quiz/models.py:127 +msgid "Displayed if user fails." +msgstr "Visualizzato se l'utente fallisce." + +#: apps/quiz/models.py:131 +msgid "Draft" +msgstr "Bozza" + +#: apps/quiz/models.py:132 +msgid "" +"If yes, the quiz is not displayed in the quiz list and can only be taken by " +"users who can edit quizzes." +msgstr "" +"Se sì, il quiz non viene visualizzato nell'elenco quiz e può essere " +"selezionato solo dagli utenti che possono modificare i quiz." + +#: apps/quiz/models.py:152 apps/quiz/models.py:372 apps/quiz/models.py:541 +#: apps/quiz/templates/quiz/sitting_list.html:14 +msgid "Quiz" +msgstr "Quiz" + +#: apps/quiz/models.py:153 +msgid "Quizzes" +msgstr "Quiz" + +#: apps/quiz/models.py:192 apps/quiz/models.py:370 +#: apps/quiz/templates/quiz/sitting_detail.html:13 +#: apps/quiz/templates/quiz/sitting_list.html:13 +msgid "User" +msgstr "Utente" + +#: apps/quiz/models.py:195 apps/quiz/templates/progress.html:60 +#: apps/quiz/templates/quiz/sitting_detail.html:15 +#: apps/quiz/templates/quiz/sitting_list.html:16 +msgid "Score" +msgstr "Punteggio" + +#: apps/quiz/models.py:200 +msgid "User Progress" +msgstr "Progressi dell'utente" + +#: apps/quiz/models.py:201 +msgid "User progress records" +msgstr "registarzione progressi utente" + +#: apps/quiz/models.py:261 +msgid "error" +msgstr "errore" + +#: apps/quiz/models.py:261 +msgid "category does not exist or invalid score" +msgstr "categoria inesistente o punteggio non valido" + +#: apps/quiz/models.py:375 +msgid "Question Order" +msgstr "ordine Domande" + +#: apps/quiz/models.py:378 +msgid "Question List" +msgstr "Elenca domande" + +#: apps/quiz/models.py:381 +msgid "Incorrect questions" +msgstr "Domande sbagliate" + +#: apps/quiz/models.py:383 +msgid "Current Score" +msgstr "Punteggio Attuale" + +#: apps/quiz/models.py:386 +msgid "Complete" +msgstr "Completo" + +#: apps/quiz/models.py:389 +msgid "User Answers" +msgstr "Risposte utente" + +#: apps/quiz/models.py:392 +msgid "Start" +msgstr "Inizio" + +#: apps/quiz/models.py:394 +msgid "End" +msgstr "Fine" + +#: apps/quiz/models.py:399 +msgid "Can see completed exams." +msgstr "Puoi vedere gli esami completati." + +#: apps/quiz/models.py:557 +msgid "Figure" +msgstr "Immagine" + +#: apps/quiz/models.py:561 +msgid "Enter the question text that you want displayed" +msgstr "Inserisci il testo della domanda che desideri visualizzare" + +#: apps/quiz/models.py:563 apps/quiz/models.py:575 +#: apps/quiz/templates/question.html:47 +#: apps/quiz/templates/quiz/sitting_detail.html:21 +msgid "Question" +msgstr "Domanda" + +#: apps/quiz/models.py:567 +msgid "Explanation to be shown after the question has been answered." +msgstr "" +"Spiegazione da visulizzare dopo che è stata data la risposta alla domanda." + +#: apps/quiz/models.py:570 apps/quiz/templates/question.html:32 +#: apps/quiz/templates/result.html:21 apps/quiz/templates/result.html.py:87 +msgid "Explanation" +msgstr "Spiegazione" + +#: apps/quiz/models.py:576 +msgid "Questions" +msgstr "Domande" + +#: apps/quiz/templates/base.html:7 +msgid "Example Quiz Website" +msgstr "Sito Quiz di esempio" + +#: apps/quiz/templates/correct_answer.html:6 +msgid "You answered the above question incorrectly" +msgstr "Hai risposto alla domanda di cui sopra in modo non corretto" + +#: apps/quiz/templates/correct_answer.html:16 +msgid "This is the correct answer" +msgstr "Questa è la risposta corretta" + +#: apps/quiz/templates/correct_answer.html:23 +msgid "This was your answer." +msgstr "Questa è stata la tua risposta " + +#: apps/quiz/templates/progress.html:6 +msgid "Progress Page" +msgstr "Pagina dei progressi" + +#: apps/quiz/templates/progress.html:7 +msgid "User Progress Page" +msgstr "Pagina dei progressi dell'utente" + +#: apps/quiz/templates/progress.html:13 +msgid "Question Category Scores" +msgstr "Punteggi Categoria Domanda " + +#: apps/quiz/templates/progress.html:20 +msgid "Correctly answererd" +msgstr "Risposto correttamente" + +#: apps/quiz/templates/progress.html:21 +msgid "Incorrect" +msgstr "Sbagliato" + +#: apps/quiz/templates/progress.html:50 +msgid "Previous exam papers" +msgstr "Fogli esami precedenti" + +#: apps/quiz/templates/progress.html:52 +msgid "Below are the results of exams that you have sat." +msgstr "Di seguito sono riportati i risultati degli esami sostenuti." + +#: apps/quiz/templates/progress.html:59 +msgid "Quiz Title" +msgstr "Titolo del Quiz" + +#: apps/quiz/templates/progress.html:61 +msgid "Possible Score" +msgstr "Possibile Punteggio" + +#: apps/quiz/templates/question.html:13 apps/quiz/templates/result.html:13 +msgid "The previous question" +msgstr "La domanda precedente" + +#: apps/quiz/templates/question.html:22 +msgid "Your answer was" +msgstr "La tua risposta è stata" + +#: apps/quiz/templates/question.html:47 +msgid "of" +msgstr "di" + +#: apps/quiz/templates/question.html:52 +msgid "Question category" +msgstr "Categoria domanda" + +#: apps/quiz/templates/question.html:74 +msgid "Check" +msgstr "Verifica" + +#: apps/quiz/templates/quiz/category_list.html:3 +#: apps/quiz/templates/quiz/quiz_list.html:3 +#: apps/quiz/templates/quiz/sitting_list.html:3 +msgid "All Quizzes" +msgstr "Tutti i Quiz" + +#: apps/quiz/templates/quiz/category_list.html:6 +msgid "Category list" +msgstr "Lista Categorie" + +#: apps/quiz/templates/quiz/quiz_detail.html:11 +msgid "You will only get one attempt at this quiz" +msgstr "Avrai un solo tentativo a disposizione per questo quiz" + +#: apps/quiz/templates/quiz/quiz_detail.html:16 +msgid "Start quiz" +msgstr "Comincia il Quiz" + +#: apps/quiz/templates/quiz/quiz_list.html:6 +msgid "List of quizzes" +msgstr "Lista dei quiz" + +#: apps/quiz/templates/quiz/quiz_list.html:14 +msgid "Exam" +msgstr "Esame" + +#: apps/quiz/templates/quiz/quiz_list.html:15 +msgid "Single attempt" +msgstr "Singolo tentivo" + +#: apps/quiz/templates/quiz/quiz_list.html:31 +#: apps/quiz/templates/quiz/sitting_list.html:42 +msgid "View details" +msgstr "Vedi i dettagli" + +#: apps/quiz/templates/quiz/quiz_list.html:41 +msgid "There are no available quizzes" +msgstr "Non ci sono quiz disponibili" + +#: apps/quiz/templates/quiz/sitting_detail.html:5 +msgid "Result of" +msgstr "Risultato di" + +#: apps/quiz/templates/quiz/sitting_detail.html:5 +msgid "for" +msgstr "per" + +#: apps/quiz/templates/quiz/sitting_detail.html:9 +msgid "Quiz title" +msgstr "Titolo quiz" + +#: apps/quiz/templates/quiz/sitting_detail.html:14 +#: apps/quiz/templates/quiz/sitting_list.html:15 +msgid "Completed" +msgstr "Completato" + +#: apps/quiz/templates/quiz/sitting_detail.html:22 +msgid "User answer" +msgstr "Risposta utente" + +#: apps/quiz/templates/quiz/sitting_detail.html:41 +msgid "incorrect" +msgstr "errato" + +#: apps/quiz/templates/quiz/sitting_detail.html:43 +msgid "Correct" +msgstr "Corretto" + +#: apps/quiz/templates/quiz/sitting_detail.html:49 +msgid "Toggle whether correct" +msgstr "Seleziona se corretto" + +#: apps/quiz/templates/quiz/sitting_list.html:6 +msgid "List of complete exams" +msgstr "Lista edgli esami completati" + +#: apps/quiz/templates/quiz/sitting_list.html:28 +msgid "Filter" +msgstr "Filtro" + +#: apps/quiz/templates/quiz/sitting_list.html:52 +msgid "There are no matching quizzes" +msgstr "Non ci sono quiz corrispondenti" + +#: apps/quiz/templates/result.html:7 +msgid "Exam Results for" +msgstr "Risultati esame per" + +#: apps/quiz/templates/result.html:32 +msgid "Exam results" +msgstr "Risultati esame" + +#: apps/quiz/templates/result.html:34 +msgid "Exam title" +msgstr "Titolo esame" + +#: apps/quiz/templates/result.html:38 +msgid "You answered" +msgstr "Hai risposto" + +#: apps/quiz/templates/result.html:38 +msgid "questions correctly out of" +msgstr "domande cui hai correttamente risposto su" + +#: apps/quiz/templates/result.html:38 +msgid "giving you" +msgstr "dandoti" + +#: apps/quiz/templates/result.html:38 +msgid "percent correct" +msgstr "percentuale corretta" + +#: apps/quiz/templates/result.html:48 +msgid "Review the questions below and try the exam again in the future" +msgstr "Riesamina le domande qui sotto e riprova l'esame in futuro" + +#: apps/quiz/templates/result.html:52 +msgid "" +"The result of this exam will be stored in your progress section so you can " +"review and monitor your progression" +msgstr "" +" Il risultato di questo esame verrà memorizzato nella sezione di avanzamento " +"in modo da poter verificare e monitorare i tuoi progressi" + +#: apps/quiz/templates/result.html:66 +msgid "Your session score is" +msgstr "Il punteggio di questa sessione è " + +#: apps/quiz/templates/result.html:66 +msgid "out of a possible" +msgstr "su un massimo di" + +#: apps/quiz/templates/result.html:84 +msgid "Your answer" +msgstr "La tua risposta" + +#: apps/quiz/templates/single_complete.html:13 +msgid "You have already sat this exam and only one sitting is permitted" +msgstr "Hai già sostenuto questo esame ed è consentito farlo solo una volta" + +#: apps/quiz/templates/single_complete.html:15 +msgid "This exam is only accessible to signed in users" +msgstr "Questo esame è disponibile solo per gli utenti collegati" + +#: apps/quiz/templates/view_quiz_category.html:3 +msgid "Quizzes related to" +msgstr "Quiz collegati a" + +#: apps/quiz/templates/view_quiz_category.html:6 +msgid "Quizzes in the" +msgstr "Quiz nella" + +#: apps/quiz/templates/view_quiz_category.html:6 +msgid "category" +msgstr "categoria" + +#: apps/quiz/templates/view_quiz_category.html:20 +msgid "There are no quizzes" +msgstr "Non ci sono quiz" diff --git a/quiz-app/quiz/locale/ru/LC_MESSAGES/django.mo b/quiz-app/quiz/locale/ru/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..b8be314c3af0f2ac519478ee8b07a2367cdf636d GIT binary patch literal 9767 zcmbuDeT-b!S;kM=xNTfYlTg4E+Mc9I8poN0y&O19&T*IyedR3s#j?ofoFRS~5^{86dlAMyuO z!0$Qd+`BXDwFz*wXP$e{=leeIbKZ08f4KeT7Y)yD%5PAr?>0siSKh-9&#ku@^M3F) z@E5_4fIZ;-;3DvGa3MGWz7ISIegHfIE&yK&^(R68%xnC-7d!`U0xyBT1m4Uf8n+14 zdiQ`Uz@?zpse!)+J_BmrQy`|ASHTCsKLKwBe+cqt{*j+s!JmS^0RBAG-@@b{;`>9O z)>+I?AGjRE6qAB-{mTKL0(bF!1T2F;26uv+m{k2=24(-N;IDv}!4HCe4a%Q?0v`nb z6}$tyi%Rjh0hArPK=s?rkNDdM%HIQ_{sgH0uYtFL7eKB17ohz8J}7_xF5pi<@%uAS zx31$(f@ppr(!3RL`nSlJ6X27RH{ntRv|5B(w4Qig(1O6%a%Y6S8SOb3o zeiYmR2_FHU0OjW~@B#2N_+jvGK#h9~)cOkumiT)=D8KFmwazC%TrkT(`LPxx1ZEeg z@e!zg69JzBm+<`p_%L`Cybt_OP~#RuB1@X(pvL!u($!<2;@AWghv&e1!Q-Ipy9`Qi z-v!0T_dxNOf$su;0P<&k#E<5G3zVP#73x2X@&9}i`vz3M+aX2mcYzVO8tey8f%5ZT z0{%PrF}^>5vAAGL0atd)`1h?0JsbMOYn=}ope(B zAyD&u9ef;o6_gI&!_OzckAZiA8^ID-1+~rzQ0u<|VygKrI0pVLxENdyxk$p)K*j0H z;9l@6;19u@AYniFBT#-m&ZHZ_-v_(F?}2nRZ-cAATS-#Sf!n~xz`qA+GRqO$GVl>l z`|N2@>%9gp2d6;(%uo5zI=3KF^;-Q2qZ9 zycs+RB0+N+Tnb(R<^Nlt`Ypogn?OB^+kKQB6mfeCC4Xd#o`>D9Ut6z_g>QlKg4WtZ zSwoRM+7lIueCwj<>7&Tz{87BVKzW=ZZOJ}y_IZk>JVIGT(erMKc+(?)^dK2`HYjeN zp=_a)C`j7$QuHjK3{wUuidX(bysW0Yi?TLUN*8)oPzaNIl#9Md*+9925>xctNr6i9 zS&I1lU5er>Ezf;MsQ7eSrS@eH<}}%l%j_eVYXA&Q#Mn6ld^=ej$-4}VJ^Jn!{jJ{fQ~ zD82WGZ^2Ietf^M*BhAW_PsXWPQ%fh}dTOJFjcdbZZCp(zY*deJV>Gt)IBixNsZB;~ zye}F{sifaz(zK(|-q@y5qsy#|YBr5yJCux#SK~%J?7OO=5toyCg+;>aWbtCFm9$~j zjmATJ%(^hJcp2ucUXO?9;L%3TNLxwm)@=he9Ze=`HX3Qfb^Am!P8*e^)@5@?hAZiK zHJZc@OqCP3g)x4n>SUNJuCq#$RcZ~pb113DW__Fv)hpwg%&hlwxZ(K3UqDnRGnx|nrO4C>^b(}H%(BEH^Q?fc= z);8jO@+0s*5n*uQqUk3p?#FJA#^btw-4UWTl7xy7M&H_~G^(+CC0tGh_OtO|T4|^f z=4z3npzYl@5<7@@ZM1h-I0^@YaSS^yOfhtCz-2ptr+=Sf?l`5W@O(S+PPVcu# zjYuT5m>4zUvGIl-gh9{NL>t#AxE0<6%~M!f%z%bv&nTXGBAzH}E5E zpe{KP55;L3)h8`+v13tvPo-97&Kl}-VlUo`*r#T*Y-RW5o6GO5qB>Y+wnY1gq~8gt z+1eZ%lsHFbCki3V1BBZ)ZZo^fY>(?h?1iYTP0zHLtT9q(AbER|rjv5Io<9U|wnQyfA}E9II}YDffFKtKK(I36}o zNI$-5f}G@B^^)&0UMB-dSy7o7jTuAw}#{^y7z)pHZ!L~ zY91Ah!*N5|-+Z1kGv9q3AI^hlFyT1OqluTnrRt>X>kiwfT92dQNgcY3$=OnvieyS! zY=~(Zi|pwpa58Y+$}#z*E$`-&DGusd_|*1pA=9^UTBS}d*cY>miEywuHkEM{4>woH z<|CZ{wPBKdvtBjDM$TXCa1#4e9q)6Qu8!|}qiSW?rdql&7LT28ZJFbM#I@&JG?upm6MX( zTDT(~PwI`*mb6?MF0E~r)6ziFYZq?cHc(nee6*QL>q#)Zc4>FdCrjNu{MnwK-UmOm zq9;vb8>Im*8!723srTCcW;w1!c1vXx zJyrH3dn3Ctc6D82vvm)b$7t^2xLCy$wQ`d@TpEa@v0l4*&DM>()@rX`xLWB- z>gCx!y|&(5xMkCp{#mbky1EyxOSq5JFl2HZk8~4xfEz-kw!#jLMs=<`eY*xWlpdPx zCxb`gdZ`};4->Cm`_N#ev2c5}S&yov4M}}0?X|UW_nG!RxWf9^zI$tT_jLF5_1Jsv zv3l*kqpzpOuD0El?tHK6Tbehm>|3T+H==uGPq+Qjm;4a=bT4L14`Y@tUa|0VrHyed zu6z2nC+;Zk=~~{kY@x}Hw+>`ewskO@Y8_}DY#lM#H~BcnCm%LDXR}M$Om?;PbT(zO zm$T{Y4Z3GIuXWgF#~FAf zn=Y27$2pUI17L;LLBGZf)?IPa>}Tn7?(L|hk2mU>e8M>{oKQ#FUe9J&dODjn*_^7@ zF_WFj-pr<1fZ60_=a7qSM9}MC>!`{8$oV?e+TVIs3tv-_&A=zd@5f7CPx2yirp1Qb z&Msnl&aQ>c7xB_Lb0)h$*Q@Rmi=Y$gX>rU^ai+_5#zoW2WM|z9Z(#cKSa_gytYZQ{ z_%Qw62-Hv0L&W&F6~_926qYf7NPG(yFSQP}p2L3ZK8t;qv&*m&Si@XeraVpUra)DP z@m@yqirJoFnv0?*yW(x#-#UhIm*g-!p$AD0QXsi#I4@Tnl}=}bTiK)xlK+;mXMlN^_OCv6{P65*e3n7%>VLl1* ziY9=sry+;UpKBMcG|ptN(B84j3j(t<7P~KNm1{aFKjh-;SX#YbX4wl063Zd0*`8+# zdtGuu^IvHlgXpWyMz6qYE1ib$hDl*Y(<-6O*&$+1Il}RHMp@vz*6-M)(9prUv!;lK zZId+$#wKzflb~~Q&MS_uLsXMuOmg+p?grA}KD8_sIiV6flDPV~y7 zeiK`~DRTH(t?cu`1)`=UI_;d_*JI4V$#6jQ&NvED>##GxX;B)U(#EAKoN;qf>T#9|8NGFcK)V37 z?_eYp6sQ@CsXES$Ip>zPtLqqq;8%txpX6OCZ$IcdTfV_)G7G}wly#|6F~tm}Bp+ly z4-|K71DZJ_PP~I&*Y(q9D(n@hK_L!1$l>&9!!pS3f(q(FVRJ9Heqx^Wb9 z%J`6`{N%)uy6c~kGo&W3>Trq|r(rv_&Q9Hmj!@je$*QfdV)txL_3=;&fNwG#CX-+M zarC;28Hc?N=0YhZdqJTgIATI!fCoh}zuj<7vJNy>7E`_&6 zmjuS{pJsBG<|Jihh;XSRxU)(89rlB6cj3CM+i3W}*`vzAZd*eGV$t=hLs2@r=4}X< zhwB`F#r@~7Bz!V3S8N7lu{NE}8<&v(@Y@~Cb9WD0#hrny#2Gjz|F({F@vjPmLPK!` zDW)z8t`aX5YRu5vQQ32*^=z^KWHIC)Fxl6g%nlOCH$yJZDbwci2R-*7N0Q4O=g}lL zWo`JtZAZtT>5jVZ&=c(y1LV8J?N=rGYVr41ccha<9HpBuY&FO6}5k z=Z%*PVKTR#_q8K6&N*E|H&Qb9;+&u&bzZZ-P4>qwIZCbWpGgw-oWs@=HP1!dU$_0) z?z7u`#(OOx2+gecxI8$2&r^<=Yg21J)MeYi>Ku;RjJd%AlJz??#fw9|&%(`={;71_ z$xXI&-bQFqg45~8q3h%Y^Wh>fCq7Q$hjhmey5-<^gWTEaQq#pkQ|yRWnDqa0Q~b6M zK4iO8q1`h7rSg9`Nu5{9WMN0=+ru3pZuhl`%M+w+;r!<$cRDPxWDq3$;UoWXAvLg{ z$yc0y+81sw%=z~N|KU~;qRccW+bOBdsR}V*33rY=0(9|YK}-t&PE|~GdE`c{{Ydo{ zfBY1egBe0IP4t=F(AE8`=v-T%J8q21(bL%l_aiqu?i{VdCZw_d#TCa7>DcS@T!Xac H9EScIW)SLP literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/locale/ru/LC_MESSAGES/django.po b/quiz-app/quiz/locale/ru/LC_MESSAGES/django.po new file mode 100644 index 0000000..851778d --- /dev/null +++ b/quiz-app/quiz/locale/ru/LC_MESSAGES/django.po @@ -0,0 +1,464 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: django-quiz\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-01 11:37+0400\n" +"PO-Revision-Date: 2015-08-21 19:40+0500\n" +"Last-Translator: Eugena Mihailikova \n" +"Language-Team: LANGUAGE \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 1.5.4\n" + +#: admin.py:31 admin.py:33 models.py:576 +msgid "Questions" +msgstr "Вопросы" + +#: models.py:30 models.py:37 models.py:53 models.py:83 models.py:545 +#: templates/progress.html:19 templates/quiz/quiz_detail.html:9 +#: templates/quiz/quiz_list.html:13 templates/quiz/sitting_detail.html:10 +msgid "Category" +msgstr "Категория" + +#: models.py:38 +msgid "Categories" +msgstr "Категории" + +#: models.py:48 models.py:58 models.py:550 +msgid "Sub-Category" +msgstr "Подкатегория" + +#: models.py:59 +msgid "Sub-Categories" +msgstr "Подкатегории" + +#: models.py:69 templates/quiz/quiz_list.html:12 +msgid "Title" +msgstr "Название" + +#: models.py:73 +msgid "Description" +msgstr "Описание" + +#: models.py:74 +msgid "a description of the quiz" +msgstr "описание теста" + +#: models.py:78 +msgid "a user friendly url" +msgstr "url теста" + +#: models.py:79 +msgid "user friendly url" +msgstr "url теста" + +#: models.py:87 +msgid "Random Order" +msgstr "Случайный порядок" + +#: models.py:88 +msgid "Display the questions in a random order or as they are set?" +msgstr "Отображать вопросы в случайном порядке или в порядке добавления?" + +#: models.py:93 +msgid "Max Questions" +msgstr "Максимальное количество вопросов" + +#: models.py:94 +msgid "Number of questions to be answered on each attempt." +msgstr "" +"Количество вопросов, на которые должны быть даны ответы при каждой попытке" + +#: models.py:98 +msgid "" +"Correct answer is NOT shown after question. Answers displayed at the end." +msgstr "" +"Правильный ответ НЕ показан после вопроса. Ответы отображаются после " +"прохождения теста" + +#: models.py:100 +msgid "Answers at end" +msgstr "Ответы в конце" + +#: models.py:104 +msgid "" +"If yes, the result of each attempt by a user will be stored. Necessary for " +"marking." +msgstr "Если отмечено, результаты каждой попытки пользователя будет сохранен" + +#: models.py:107 +msgid "Exam Paper" +msgstr "Экзаменационный лист" + +#: models.py:111 +msgid "" +"If yes, only one attempt by a user will be permitted. Non users cannot sit " +"this exam." +msgstr "Если отмечено, пользователю будет разрешена только одна попытка" + +#: models.py:114 +msgid "Single Attempt" +msgstr "Единственная попытка" + +#: models.py:118 +msgid "Percentage required to pass exam." +msgstr "Процент правильных ответов для прохождения теста" + +#: models.py:122 +msgid "Displayed if user passes." +msgstr "Отображается, если пользователь успешно прошел тест" + +#: models.py:123 +msgid "Success Text" +msgstr "Текст в случае успеха" + +#: models.py:126 +msgid "Fail Text" +msgstr "Текст в случае неудачи" + +#: models.py:127 +msgid "Displayed if user fails." +msgstr "Отображается, если пользователь провалил тест" + +#: models.py:131 +msgid "Draft" +msgstr "Черновик" + +#: models.py:132 +msgid "" +"If yes, the quiz is not displayed in the quiz list and can only be taken by " +"users who can edit quizzes." +msgstr "Если отмечено, то не отображается в публичном списке и может быть " +"взято только пользователями с соответствующим правом" + +#: models.py:152 models.py:372 models.py:541 +#: templates/quiz/sitting_list.html:14 +msgid "Quiz" +msgstr "Тест" + +#: models.py:153 +msgid "Quizzes" +msgstr "Тесты" + +#: models.py:192 models.py:370 templates/quiz/sitting_detail.html:13 +#: templates/quiz/sitting_list.html:13 +msgid "User" +msgstr "Пользователь" + +#: models.py:195 templates/progress.html:60 +#: templates/quiz/sitting_detail.html:15 templates/quiz/sitting_list.html:16 +msgid "Score" +msgstr "Баллы" + +#: models.py:200 +msgid "User Progress" +msgstr "Прогресс пользователя" + +#: models.py:201 +msgid "User progress records" +msgstr "Прогресс пользователя" + +#: models.py:261 +msgid "error" +msgstr "ошибка" + +#: models.py:261 +msgid "category does not exist or invalid score" +msgstr "категории не существует или недопустимый балл" + +#: models.py:375 +msgid "Question Order" +msgstr "Порядок вопросов" + +#: models.py:378 +msgid "Question List" +msgstr "Список вопросов" + +#: models.py:381 +msgid "Incorrect questions" +msgstr "Вопросы, на которые дан неверный ответ" + +#: models.py:383 +msgid "Current Score" +msgstr "Текущий балл" + +#: models.py:386 +msgid "Complete" +msgstr "Завершен" + +#: models.py:389 +msgid "User Answers" +msgstr "Ответы пользователя" + +#: models.py:392 +msgid "Start" +msgstr "Начало" + +#: models.py:394 +msgid "End" +msgstr "Окончание" + +#: models.py:399 +msgid "Can see completed exams." +msgstr "Может просматривать оконченные тесты" + +#: models.py:557 +msgid "Figure" +msgstr "Рисунок" + +#: models.py:561 +msgid "Enter the question text that you want displayed" +msgstr "Введите текст вопроса, который должен отобразиться" + +#: models.py:563 models.py:575 templates/question.html:47 +#: templates/quiz/sitting_detail.html:21 +msgid "Question" +msgstr "Вопрос" + +#: models.py:567 +msgid "Explanation to be shown after the question has been answered." +msgstr "Объяснение показывается после того, как дан ответ на вопрос" + +#: models.py:570 templates/question.html:32 templates/result.html:21 +#: templates/result.html.py:87 +msgid "Explanation" +msgstr "Объяснение" + +#: templates/base.html:7 +msgid "Example Quiz Website" +msgstr "Тесты" + +#: templates/correct_answer.html:6 +msgid "You answered the above question incorrectly" +msgstr "Вы дали неверный ответ" + +#: templates/correct_answer.html:16 +msgid "This is the correct answer" +msgstr "Это правильный ответ" + +#: templates/correct_answer.html:23 +msgid "This was your answer." +msgstr "Это был ваш ответ" + +#: templates/progress.html:6 +msgid "Progress Page" +msgstr "Страница прогесса" + +#: templates/progress.html:7 +msgid "User Progress Page" +msgstr "Страница прогресса пользователя" + +#: templates/progress.html:13 +msgid "Question Category Scores" +msgstr "Баллы по категориям вопросов" + +#: templates/progress.html:20 +msgid "Correctly answererd" +msgstr "Верных ответов" + +#: templates/progress.html:21 +msgid "Incorrect" +msgstr "Неверных ответов" + +#: templates/progress.html:50 +msgid "Previous exam papers" +msgstr "Список предыдущих экзаменов" + +#: templates/progress.html:52 +msgid "Below are the results of exams that you have sat." +msgstr "Ниже представлены результаты пройденных Вами тестов" + +#: templates/progress.html:59 +msgid "Quiz Title" +msgstr "Название теста" + +#: templates/progress.html:61 +msgid "Possible Score" +msgstr "Возможный балл" + +#: templates/question.html:13 templates/result.html:13 +msgid "The previous question" +msgstr "Предыдущий вопрос" + +#: templates/question.html:22 +msgid "Your answer was" +msgstr "Ваш ответ был" + +#: templates/question.html:47 +msgid "of" +msgstr "из" + +#: templates/question.html:52 +msgid "Question category" +msgstr "Категория вопроса" + +#: templates/question.html:74 +msgid "Check" +msgstr "Ответить" + +#: templates/quiz/category_list.html:3 templates/quiz/quiz_list.html:3 +#: templates/quiz/sitting_list.html:3 +msgid "All Quizzes" +msgstr "Все тесты" + +#: templates/quiz/category_list.html:6 +msgid "Category list" +msgstr "Список категорий" + +#: templates/quiz/quiz_detail.html:11 +msgid "You will only get one attempt at this quiz" +msgstr "У вас есть одна попытка для прохождения данного теста" + +#: templates/quiz/quiz_detail.html:16 +msgid "Start quiz" +msgstr "Начать тест" + +#: templates/quiz/quiz_list.html:6 +msgid "List of quizzes" +msgstr "Список тестов" + +#: templates/quiz/quiz_list.html:14 +msgid "Exam" +msgstr "Тестирование" + +#: templates/quiz/quiz_list.html:15 +msgid "Single attempt" +msgstr "Единственная попытка" + +#: templates/quiz/quiz_list.html:31 templates/quiz/sitting_list.html:42 +msgid "View details" +msgstr "Подробнее" + +#: templates/quiz/quiz_list.html:41 +msgid "There are no available quizzes" +msgstr "Доступных тестов нет" + +#: templates/quiz/sitting_detail.html:5 +msgid "Result of" +msgstr "Результаты" + +#: templates/quiz/sitting_detail.html:5 +msgid "for" +msgstr "для" + +#: templates/quiz/sitting_detail.html:9 +msgid "Quiz title" +msgstr "Назвние теста" + +#: templates/quiz/sitting_detail.html:14 templates/quiz/sitting_list.html:15 +msgid "Completed" +msgstr "Завершено" + +#: templates/quiz/sitting_detail.html:22 +msgid "User answer" +msgstr "Ответ пользователя" + +#: templates/quiz/sitting_detail.html:41 +msgid "incorrect" +msgstr "Неверно" + +#: templates/quiz/sitting_detail.html:43 +msgid "Correct" +msgstr "Верно" + +#: templates/quiz/sitting_detail.html:49 +msgid "Toggle whether correct" +msgstr "Изменить результат" + +#: templates/quiz/sitting_list.html:6 +msgid "List of complete exams" +msgstr "Список завершенных тестов" + +#: templates/quiz/sitting_list.html:28 +msgid "Filter" +msgstr "Фильтр" + +#: templates/quiz/sitting_list.html:52 +msgid "There are no matching quizzes" +msgstr "Подходящих тестов нет" + +#: templates/result.html:7 +msgid "Exam Results for" +msgstr "Результат теста для" + +#: templates/result.html:32 +msgid "Exam results" +msgstr "Результаты тестирования" + +#: templates/result.html:34 +msgid "Exam title" +msgstr "Название теста" + +#: templates/result.html:38 +msgid "You answered" +msgstr "Ваш результат" + +#: templates/result.html:38 +msgid "questions correctly out of" +msgstr "правильных ответов из" + +#: templates/result.html:38 +msgid "giving you" +msgstr "вы дали" + +#: templates/result.html:38 +msgid "percent correct" +msgstr "процент правильных ответов" + +#: templates/result.html:48 +msgid "Review the questions below and try the exam again in the future" +msgstr "" +"Просмотрите вопросы, представленные ниже и попробуйте пройти тест еще раз" + +#: templates/result.html:52 +msgid "" +"The result of this exam will be stored in your progress section so you can " +"review and monitor your progression" +msgstr "" +"Результаты данного экзамена будут сохранены. Вы сможете просматривать ваш " +"прогресс" + +#: templates/result.html:66 +msgid "Your session score is" +msgstr "Балл вашей сессии" + +#: templates/result.html:66 +msgid "out of a possible" +msgstr "из возможных" + +#: templates/result.html:84 +msgid "Your answer" +msgstr "Ваш ответ" + +#: templates/single_complete.html:13 +msgid "You have already sat this exam and only one sitting is permitted" +msgstr "Вы уже прошли данный тест. Разрешена только одна попытка" + +#: templates/single_complete.html:15 +msgid "This exam is only accessible to signed in users" +msgstr "Этот тест доступен только зарегистрированным пользователям" + +#: templates/view_quiz_category.html:3 +msgid "Quizzes related to" +msgstr "Тесты относятся к" + +#: templates/view_quiz_category.html:6 +msgid "Quizzes in the" +msgstr "Тесты в" + +#: templates/view_quiz_category.html:6 +msgid "category" +msgstr "категория" + +#: templates/view_quiz_category.html:20 +msgid "There are no quizzes" +msgstr "Тестов нет" diff --git a/quiz-app/quiz/locale/zh_CN/LC_MESSAGES/django.mo b/quiz-app/quiz/locale/zh_CN/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..cf830616a583e6c0d9ad2e3a53c7d8274e9f15f8 GIT binary patch literal 7158 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 K;KOvDVE+X*81l3L literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/locale/zh_CN/LC_MESSAGES/django.po b/quiz-app/quiz/locale/zh_CN/LC_MESSAGES/django.po new file mode 100644 index 0000000..d4edd83 --- /dev/null +++ b/quiz-app/quiz/locale/zh_CN/LC_MESSAGES/django.po @@ -0,0 +1,474 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-31 22:44+0000\n" +"PO-Revision-Date: 2015-10-31 22:43+0000\n" +"Last-Translator: b' <>'\n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Translated-Using: django-rosetta 0.7.6\n" + +#: apps/quiz/models.py:30 apps/quiz/models.py:37 apps/quiz/models.py:53 +#: apps/quiz/models.py:83 apps/quiz/models.py:545 +#: apps/quiz/templates/progress.html:19 +#: apps/quiz/templates/quiz/quiz_detail.html:9 +#: apps/quiz/templates/quiz/quiz_list.html:13 +#: apps/quiz/templates/quiz/sitting_detail.html:10 +msgid "Category" +msgstr "类别" + +#: apps/quiz/models.py:38 +msgid "Categories" +msgstr "类别" + +#: apps/quiz/models.py:48 apps/quiz/models.py:58 apps/quiz/models.py:550 +msgid "Sub-Category" +msgstr "子类" + +#: apps/quiz/models.py:59 +msgid "Sub-Categories" +msgstr "子类" + +#: apps/quiz/models.py:69 apps/quiz/templates/quiz/quiz_list.html:12 +msgid "Title" +msgstr "标题" + +#: apps/quiz/models.py:73 +msgid "Description" +msgstr "描述" + +#: apps/quiz/models.py:74 +msgid "a description of the quiz" +msgstr "测试的描述" + +#: apps/quiz/models.py:78 +msgid "a user friendly url" +msgstr "一个用户友好的URL" + +#: apps/quiz/models.py:79 +msgid "user friendly url" +msgstr "用户友好的URL" + +#: apps/quiz/models.py:87 +msgid "Random Order" +msgstr "随机次序" + +#: apps/quiz/models.py:88 +msgid "Display the questions in a random order or as they are set?" +msgstr "按设定的次序还是随机次序显示问题?" + +#: apps/quiz/models.py:93 +msgid "Max Questions" +msgstr "最大问题数量" + +#: apps/quiz/models.py:94 +msgid "Number of questions to be answered on each attempt." +msgstr "每次尝试可回答的问题数量。" + +#: apps/quiz/models.py:98 +msgid "" +"Correct answer is NOT shown after question. Answers displayed at the end." +msgstr "" +"正确答案不会在问题后显示。回答显示在最后。" + +#: apps/quiz/models.py:100 +msgid "Answers at end" +msgstr "最后给出答案" + +#: apps/quiz/models.py:104 +msgid "" +"If yes, the result of each attempt by a user will be stored. Necessary for " +"marking." +msgstr "" +"如果是,用户每次尝试的结果都将记录。如需打分此项必选。" + +#: apps/quiz/models.py:107 +msgid "Exam Paper" +msgstr "试卷" + +#: apps/quiz/models.py:111 +msgid "" +"If yes, only one attempt by a user will be permitted. Non users cannot sit " +"this exam." +msgstr "" +"如果是,一个用户只允许尝试一次。非注册用户不能参加本考试。" + +#: apps/quiz/models.py:114 +msgid "Single Attempt" +msgstr "单次尝试" + +#: apps/quiz/models.py:116 +msgid "Pass Mark" +msgstr "通过分数" + +#: apps/quiz/models.py:118 +msgid "Percentage required to pass exam." +msgstr "通过考试需要的百分数。" + +#: apps/quiz/models.py:122 +msgid "Displayed if user passes." +msgstr "如果用户通过则显示。" + +#: apps/quiz/models.py:123 +msgid "Success Text" +msgstr "成功文本" + +#: apps/quiz/models.py:126 +msgid "Fail Text" +msgstr "失败文本" + +#: apps/quiz/models.py:127 +msgid "Displayed if user fails." +msgstr "如果用户未通过则显示" + +#: apps/quiz/models.py:131 +msgid "Draft" +msgstr "草稿" + +#: apps/quiz/models.py:132 +msgid "" +"If yes, the quiz is not displayed in the quiz list and can only be taken by " +"users who can edit quizzes." +msgstr "" +"如果是,测试不会显示在测试列表里,只能被可以编辑测试的用户操作。" + +#: apps/quiz/models.py:152 apps/quiz/models.py:372 apps/quiz/models.py:541 +#: apps/quiz/templates/quiz/sitting_list.html:14 +msgid "Quiz" +msgstr "测试" + +#: apps/quiz/models.py:153 +msgid "Quizzes" +msgstr "测试" + +#: apps/quiz/models.py:192 apps/quiz/models.py:370 +#: apps/quiz/templates/quiz/sitting_detail.html:13 +#: apps/quiz/templates/quiz/sitting_list.html:13 +msgid "User" +msgstr "用户" + +#: apps/quiz/models.py:195 apps/quiz/templates/progress.html:60 +#: apps/quiz/templates/quiz/sitting_detail.html:15 +#: apps/quiz/templates/quiz/sitting_list.html:16 +msgid "Score" +msgstr "得分" + +#: apps/quiz/models.py:200 +msgid "User Progress" +msgstr "用户进度" + +#: apps/quiz/models.py:201 +msgid "User progress records" +msgstr "用户进度记录" + +#: apps/quiz/models.py:261 +msgid "error" +msgstr "错误" + +#: apps/quiz/models.py:261 +msgid "category does not exist or invalid score" +msgstr "类别不存在或得分无效" + +#: apps/quiz/models.py:375 +msgid "Question Order" +msgstr "问题次序" + +#: apps/quiz/models.py:378 +msgid "Question List" +msgstr "问题列表" + +#: apps/quiz/models.py:381 +msgid "Incorrect questions" +msgstr "不正确的答案" + +#: apps/quiz/models.py:383 +msgid "Current Score" +msgstr "当前得分" + +#: apps/quiz/models.py:386 +msgid "Complete" +msgstr "完成" + +#: apps/quiz/models.py:389 +msgid "User Answers" +msgstr "用户回答" + +#: apps/quiz/models.py:392 +msgid "Start" +msgstr "开始" + +#: apps/quiz/models.py:394 +msgid "End" +msgstr "结束" + +#: apps/quiz/models.py:399 +msgid "Can see completed exams." +msgstr "可以看到已完成的考试" + +#: apps/quiz/models.py:557 +msgid "Figure" +msgstr "图像" + +#: apps/quiz/models.py:561 +msgid "Enter the question text that you want displayed" +msgstr "输入你想显示的问题文本" + +#: apps/quiz/models.py:563 apps/quiz/models.py:575 +#: apps/quiz/templates/question.html:47 +#: apps/quiz/templates/quiz/sitting_detail.html:21 +msgid "Question" +msgstr "问题" + +#: apps/quiz/models.py:567 +msgid "Explanation to be shown after the question has been answered." +msgstr "回答问题后将展示题解。" + +#: apps/quiz/models.py:570 apps/quiz/templates/question.html:32 +#: apps/quiz/templates/result.html:21 apps/quiz/templates/result.html.py:87 +msgid "Explanation" +msgstr "题解" + +#: apps/quiz/models.py:576 +msgid "Questions" +msgstr "问题" + +#: apps/quiz/templates/base.html:7 +msgid "Example Quiz Website" +msgstr "测试样例网站" + +#: apps/quiz/templates/correct_answer.html:6 +msgid "You answered the above question incorrectly" +msgstr "你错误回答了以上问题" + +#: apps/quiz/templates/correct_answer.html:16 +msgid "This is the correct answer" +msgstr "这是正确答案" + +#: apps/quiz/templates/correct_answer.html:23 +msgid "This was your answer." +msgstr "这是你的回答。" + +#: apps/quiz/templates/progress.html:6 +msgid "Progress Page" +msgstr "进度页面" + +#: apps/quiz/templates/progress.html:7 +msgid "User Progress Page" +msgstr "用户进度页面" + +#: apps/quiz/templates/progress.html:13 +msgid "Question Category Scores" +msgstr "问题类别得分" + +#: apps/quiz/templates/progress.html:20 +msgid "Correctly answererd" +msgstr "正确回答了" + +#: apps/quiz/templates/progress.html:21 +msgid "Incorrect" +msgstr "不正确" + +#: apps/quiz/templates/progress.html:50 +msgid "Previous exam papers" +msgstr "前一试卷" + +#: apps/quiz/templates/progress.html:52 +msgid "Below are the results of exams that you have sat." +msgstr "以下是你已经参加的考试的结果。" + +#: apps/quiz/templates/progress.html:59 +msgid "Quiz Title" +msgstr "测试标题" + +#: apps/quiz/templates/progress.html:61 +msgid "Possible Score" +msgstr "可能得分" + +#: apps/quiz/templates/question.html:13 apps/quiz/templates/result.html:13 +msgid "The previous question" +msgstr "前一问题" + +#: apps/quiz/templates/question.html:22 +msgid "Your answer was" +msgstr "你的回答是" + +#: apps/quiz/templates/question.html:47 +msgid "of" +msgstr "属于" + +#: apps/quiz/templates/question.html:52 +msgid "Question category" +msgstr "问题类别" + +#: apps/quiz/templates/question.html:74 +msgid "Check" +msgstr "检查" + +#: apps/quiz/templates/quiz/category_list.html:3 +#: apps/quiz/templates/quiz/quiz_list.html:3 +#: apps/quiz/templates/quiz/sitting_list.html:3 +msgid "All Quizzes" +msgstr "全部测试" + +#: apps/quiz/templates/quiz/category_list.html:6 +msgid "Category list" +msgstr "类别列表" + +#: apps/quiz/templates/quiz/quiz_detail.html:11 +msgid "You will only get one attempt at this quiz" +msgstr "本测试你只有一次尝试的机会" + +#: apps/quiz/templates/quiz/quiz_detail.html:16 +msgid "Start quiz" +msgstr "开始测试" + +#: apps/quiz/templates/quiz/quiz_list.html:6 +msgid "List of quizzes" +msgstr "测试列表" + +#: apps/quiz/templates/quiz/quiz_list.html:14 +msgid "Exam" +msgstr "考试" + +#: apps/quiz/templates/quiz/quiz_list.html:15 +msgid "Single attempt" +msgstr "单一尝试" + +#: apps/quiz/templates/quiz/quiz_list.html:31 +#: apps/quiz/templates/quiz/sitting_list.html:42 +msgid "View details" +msgstr "显示细节" + +#: apps/quiz/templates/quiz/quiz_list.html:41 +msgid "There are no available quizzes" +msgstr "没有可做的测试" + +#: apps/quiz/templates/quiz/sitting_detail.html:5 +msgid "Result of" +msgstr "结果属于" + +#: apps/quiz/templates/quiz/sitting_detail.html:5 +msgid "for" +msgstr "为了" + +#: apps/quiz/templates/quiz/sitting_detail.html:9 +msgid "Quiz title" +msgstr "测试标题" + +#: apps/quiz/templates/quiz/sitting_detail.html:14 +#: apps/quiz/templates/quiz/sitting_list.html:15 +msgid "Completed" +msgstr "已完成" + +#: apps/quiz/templates/quiz/sitting_detail.html:22 +msgid "User answer" +msgstr "用户的回答" + +#: apps/quiz/templates/quiz/sitting_detail.html:41 +msgid "incorrect" +msgstr "不正确" + +#: apps/quiz/templates/quiz/sitting_detail.html:43 +msgid "Correct" +msgstr "正确" + +#: apps/quiz/templates/quiz/sitting_detail.html:49 +msgid "Toggle whether correct" +msgstr "切换是否正确" + +#: apps/quiz/templates/quiz/sitting_list.html:6 +msgid "List of complete exams" +msgstr "已完成考试列表" + +#: apps/quiz/templates/quiz/sitting_list.html:28 +msgid "Filter" +msgstr "过滤" + +#: apps/quiz/templates/quiz/sitting_list.html:52 +msgid "There are no matching quizzes" +msgstr "没有符合条件的测试" + +#: apps/quiz/templates/result.html:7 +msgid "Exam Results for" +msgstr "考试结果" + +#: apps/quiz/templates/result.html:32 +msgid "Exam results" +msgstr "考试结果" + +#: apps/quiz/templates/result.html:34 +msgid "Exam title" +msgstr "考试标题" + +#: apps/quiz/templates/result.html:38 +msgid "You answered" +msgstr "你正确回答了" + +#: apps/quiz/templates/result.html:38 +msgid "questions correctly out of" +msgstr "个问题,总共" + +#: apps/quiz/templates/result.html:38 +msgid "giving you" +msgstr "个问题" + +#: apps/quiz/templates/result.html:38 +msgid "percent correct" +msgstr "%正确率" + +#: apps/quiz/templates/result.html:48 +msgid "Review the questions below and try the exam again in the future" +msgstr "回顾以下问题,将来可以再尝试本考试" + +#: apps/quiz/templates/result.html:52 +msgid "" +"The result of this exam will be stored in your progress section so you can " +"review and monitor your progression" +msgstr "本考试的结果将储存于你的进度区域,你可以查看和监控你的进度。" + +#: apps/quiz/templates/result.html:66 +msgid "Your session score is" +msgstr "你目前得分为" + +#: apps/quiz/templates/result.html:66 +msgid "out of a possible" +msgstr "而最多可能得分为" + +#: apps/quiz/templates/result.html:84 +msgid "Your answer" +msgstr "你的答案" + +#: apps/quiz/templates/single_complete.html:13 +msgid "You have already sat this exam and only one sitting is permitted" +msgstr "你已经参加本考试,只能参加一次" + +#: apps/quiz/templates/single_complete.html:15 +msgid "This exam is only accessible to signed in users" +msgstr "用户需登录方可访问本考试" + +#: apps/quiz/templates/view_quiz_category.html:3 +msgid "Quizzes related to" +msgstr "测试有关于" + +#: apps/quiz/templates/view_quiz_category.html:6 +msgid "Quizzes in the" +msgstr "测试属于" + +#: apps/quiz/templates/view_quiz_category.html:6 +msgid "category" +msgstr "类别" + +#: apps/quiz/templates/view_quiz_category.html:20 +msgid "There are no quizzes" +msgstr "没有测试" diff --git a/quiz-app/quiz/migrations/0001_initial.py b/quiz-app/quiz/migrations/0001_initial.py new file mode 100644 index 0000000..486249b --- /dev/null +++ b/quiz-app/quiz/migrations/0001_initial.py @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.3 on 2017-06-22 11:20 +from __future__ import unicode_literals + +from django.conf import settings +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import re + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Category', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('category', models.CharField(blank=True, max_length=250, null=True, unique=True, verbose_name='Category')), + ], + options={ + 'verbose_name': 'Category', + 'verbose_name_plural': 'Categories', + }, + ), + migrations.CreateModel( + name='Progress', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('score', models.CharField(max_length=1024, validators=[django.core.validators.RegexValidator(re.compile('^\\d+(?:\\,\\d+)*\\Z', 32), code='invalid', message='Enter only digits separated by commas.')], verbose_name='Score')), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='User')), + ], + options={ + 'verbose_name': 'User Progress', + 'verbose_name_plural': 'User progress records', + }, + ), + migrations.CreateModel( + name='Question', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('figure', models.ImageField(blank=True, null=True, upload_to='uploads/%Y/%m/%d', verbose_name='Figure')), + ('content', models.CharField(help_text='Enter the question text that you want displayed', max_length=1000, verbose_name='Question')), + ('explanation', models.TextField(blank=True, help_text='Explanation to be shown after the question has been answered.', max_length=2000, verbose_name='Explanation')), + ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='quiz.Category', verbose_name='Category')), + ], + options={ + 'verbose_name': 'Question', + 'verbose_name_plural': 'Questions', + 'ordering': ['category'], + }, + ), + migrations.CreateModel( + name='Quiz', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=60, verbose_name='Title')), + ('description', models.TextField(blank=True, help_text='a description of the quiz', verbose_name='Description')), + ('url', models.SlugField(help_text='a user friendly url', max_length=60, verbose_name='user friendly url')), + ('random_order', models.BooleanField(default=False, help_text='Display the questions in a random order or as they are set?', verbose_name='Random Order')), + ('max_questions', models.PositiveIntegerField(blank=True, help_text='Number of questions to be answered on each attempt.', null=True, verbose_name='Max Questions')), + ('answers_at_end', models.BooleanField(default=False, help_text='Correct answer is NOT shown after question. Answers displayed at the end.', verbose_name='Answers at end')), + ('exam_paper', models.BooleanField(default=False, help_text='If yes, the result of each attempt by a user will be stored. Necessary for marking.', verbose_name='Exam Paper')), + ('single_attempt', models.BooleanField(default=False, help_text='If yes, only one attempt by a user will be permitted. Non users cannot sit this exam.', verbose_name='Single Attempt')), + ('pass_mark', models.SmallIntegerField(blank=True, default=0, help_text='Percentage required to pass exam.', validators=[django.core.validators.MaxValueValidator(100)], verbose_name='Pass Mark')), + ('success_text', models.TextField(blank=True, help_text='Displayed if user passes.', verbose_name='Success Text')), + ('fail_text', models.TextField(blank=True, help_text='Displayed if user fails.', verbose_name='Fail Text')), + ('draft', models.BooleanField(default=False, help_text='If yes, the quiz is not displayed in the quiz list and can only be taken by users who can edit quizzes.', verbose_name='Draft')), + ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='quiz.Category', verbose_name='Category')), + ], + options={ + 'verbose_name': 'Quiz', + 'verbose_name_plural': 'Quizzes', + }, + ), + migrations.CreateModel( + name='Sitting', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('question_order', models.CharField(max_length=1024, validators=[django.core.validators.RegexValidator(re.compile('^\\d+(?:\\,\\d+)*\\Z', 32), code='invalid', message='Enter only digits separated by commas.')], verbose_name='Question Order')), + ('question_list', models.CharField(max_length=1024, validators=[django.core.validators.RegexValidator(re.compile('^\\d+(?:\\,\\d+)*\\Z', 32), code='invalid', message='Enter only digits separated by commas.')], verbose_name='Question List')), + ('incorrect_questions', models.CharField(blank=True, max_length=1024, validators=[django.core.validators.RegexValidator(re.compile('^\\d+(?:\\,\\d+)*\\Z', 32), code='invalid', message='Enter only digits separated by commas.')], verbose_name='Incorrect questions')), + ('current_score', models.IntegerField(verbose_name='Current Score')), + ('complete', models.BooleanField(default=False, verbose_name='Complete')), + ('user_answers', models.TextField(blank=True, default='{}', verbose_name='User Answers')), + ('start', models.DateTimeField(auto_now_add=True, verbose_name='Start')), + ('end', models.DateTimeField(blank=True, null=True, verbose_name='End')), + ('quiz', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='quiz.Quiz', verbose_name='Quiz')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='User')), + ], + options={ + 'permissions': (('view_sittings', 'Can see completed exams.'),), + }, + ), + migrations.CreateModel( + name='SubCategory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sub_category', models.CharField(blank=True, max_length=250, null=True, verbose_name='Sub-Category')), + ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='quiz.Category', verbose_name='Category')), + ], + options={ + 'verbose_name': 'Sub-Category', + 'verbose_name_plural': 'Sub-Categories', + }, + ), + migrations.AddField( + model_name='question', + name='quiz', + field=models.ManyToManyField(blank=True, to='quiz.Quiz', verbose_name='Quiz'), + ), + migrations.AddField( + model_name='question', + name='sub_category', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='quiz.SubCategory', verbose_name='Sub-Category'), + ), + ] diff --git a/quiz-app/quiz/migrations/0002_auto_20210417_1052.py b/quiz-app/quiz/migrations/0002_auto_20210417_1052.py new file mode 100644 index 0000000..5e152e8 --- /dev/null +++ b/quiz-app/quiz/migrations/0002_auto_20210417_1052.py @@ -0,0 +1,40 @@ +# Generated by Django 2.2.9 on 2021-04-17 10:52 + +import django.core.validators +from django.db import migrations, models +import re + + +class Migration(migrations.Migration): + + dependencies = [ + ('quiz', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='progress', + name='score', + field=models.CharField(max_length=1024, validators=[django.core.validators.RegexValidator(re.compile('^\\d+(?:,\\d+)*\\Z'), code='invalid', message='Enter only digits separated by commas.')], verbose_name='Score'), + ), + migrations.AlterField( + model_name='quiz', + name='draft', + field=models.BooleanField(blank=True, default=False, help_text='If yes, the quiz is not displayed in the quiz list and can only be taken by users who can edit quizzes.', verbose_name='Draft'), + ), + migrations.AlterField( + model_name='sitting', + name='incorrect_questions', + field=models.CharField(blank=True, max_length=1024, validators=[django.core.validators.RegexValidator(re.compile('^\\d+(?:,\\d+)*\\Z'), code='invalid', message='Enter only digits separated by commas.')], verbose_name='Incorrect questions'), + ), + migrations.AlterField( + model_name='sitting', + name='question_list', + field=models.CharField(max_length=1024, validators=[django.core.validators.RegexValidator(re.compile('^\\d+(?:,\\d+)*\\Z'), code='invalid', message='Enter only digits separated by commas.')], verbose_name='Question List'), + ), + migrations.AlterField( + model_name='sitting', + name='question_order', + field=models.CharField(max_length=1024, validators=[django.core.validators.RegexValidator(re.compile('^\\d+(?:,\\d+)*\\Z'), code='invalid', message='Enter only digits separated by commas.')], verbose_name='Question Order'), + ), + ] diff --git a/quiz-app/quiz/migrations/0003_progress_user_answers.py b/quiz-app/quiz/migrations/0003_progress_user_answers.py new file mode 100644 index 0000000..96edb83 --- /dev/null +++ b/quiz-app/quiz/migrations/0003_progress_user_answers.py @@ -0,0 +1,21 @@ +# Generated by Django 3.2 on 2021-05-11 13:59 + +import django.core.validators +from django.db import migrations, models +import re + + +class Migration(migrations.Migration): + + dependencies = [ + ('quiz', '0002_auto_20210417_1052'), + ] + + operations = [ + migrations.AddField( + model_name='progress', + name='user_answers', + field=models.CharField(default=0, max_length=1024, validators=[django.core.validators.RegexValidator(re.compile('^\\d+(?:,\\d+)*\\Z'), code='invalid', message='Enter only digits separated by commas.')], verbose_name='User_answers'), + preserve_default=False, + ), + ] diff --git a/quiz-app/quiz/migrations/0004_remove_progress_user_answers.py b/quiz-app/quiz/migrations/0004_remove_progress_user_answers.py new file mode 100644 index 0000000..e2649b9 --- /dev/null +++ b/quiz-app/quiz/migrations/0004_remove_progress_user_answers.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2 on 2021-05-11 14:02 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('quiz', '0003_progress_user_answers'), + ] + + operations = [ + migrations.RemoveField( + model_name='progress', + name='user_answers', + ), + ] diff --git a/quiz-app/quiz/migrations/0005_progress_user_answers.py b/quiz-app/quiz/migrations/0005_progress_user_answers.py new file mode 100644 index 0000000..367320f --- /dev/null +++ b/quiz-app/quiz/migrations/0005_progress_user_answers.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2 on 2021-05-11 14:33 + +import django.core.validators +from django.db import migrations, models +import re + + +class Migration(migrations.Migration): + + dependencies = [ + ('quiz', '0004_remove_progress_user_answers'), + ] + + operations = [ + migrations.AddField( + model_name='progress', + name='user_answers', + field=models.CharField(default='{}', max_length=1024, validators=[django.core.validators.RegexValidator(re.compile('^\\d+(?:,\\d+)*\\Z'), code='invalid', message='Enter only digits separated by commas.')], verbose_name='User_answers'), + ), + ] diff --git a/quiz-app/quiz/migrations/0006_alter_progress_user_answers.py b/quiz-app/quiz/migrations/0006_alter_progress_user_answers.py new file mode 100644 index 0000000..288c7ec --- /dev/null +++ b/quiz-app/quiz/migrations/0006_alter_progress_user_answers.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2 on 2021-05-11 14:42 + +import django.core.validators +from django.db import migrations, models +import re + + +class Migration(migrations.Migration): + + dependencies = [ + ('quiz', '0005_progress_user_answers'), + ] + + operations = [ + migrations.AlterField( + model_name='progress', + name='user_answers', + field=models.CharField(default='{}', max_length=1024, validators=[django.core.validators.RegexValidator(re.compile('^\\d+(?:,\\d+)*\\Z'), code='invalid', message='Enter only digits separated by commas.')], verbose_name='Réponses'), + ), + ] diff --git a/quiz-app/quiz/migrations/0007_remove_progress_user_answers.py b/quiz-app/quiz/migrations/0007_remove_progress_user_answers.py new file mode 100644 index 0000000..c122aea --- /dev/null +++ b/quiz-app/quiz/migrations/0007_remove_progress_user_answers.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2 on 2021-05-23 18:31 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('quiz', '0006_alter_progress_user_answers'), + ] + + operations = [ + migrations.RemoveField( + model_name='progress', + name='user_answers', + ), + ] diff --git a/quiz-app/quiz/migrations/__init__.py b/quiz-app/quiz/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/quiz-app/quiz/migrations/__pycache__/0001_initial.cpython-311.pyc b/quiz-app/quiz/migrations/__pycache__/0001_initial.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ecfab04ad97b0dc4e15321ce1d1bce3c25db7f77 GIT binary patch literal 8791 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 A=l}o! literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0001_initial.cpython-37.pyc b/quiz-app/quiz/migrations/__pycache__/0001_initial.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a27a2c7b66bb54bc1d2f90a0dc39ecb2052e99c4 GIT binary patch literal 4489 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 WCDupJcXv{~@#$^h*m;3hlKBr$34m4r literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0002_auto_20210417_1052.cpython-37.pyc b/quiz-app/quiz/migrations/__pycache__/0002_auto_20210417_1052.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c04f95e35bcf41997b3c2a18a74b6dd64daee56f GIT binary patch literal 1321 zcmah}OOG2x5T2)BvAqkMgy&&|1Y(wz?X?Iw)id_4av^O^byro_^Q-pBV9;}DO~3y0r{CL-^Ot3IE1<(& z`qW26zyUXR5|?%__f~%5uYx3S8+n+7Upe4I@QVWh`peeOe$oQ>u@i@Xldbb0_DpZZ zGs!eBgfgvF0hp_~)$P`h4tMEO{}RDEQsRM|xrvX#G6WBNY%Sa5zq9Nvd&_Is|8)T2 zZ!WZ;4V?==bD;~p3m>jsG!}grki`&&um}6_3cPv|Tz2k(D+`-ryq@JV9YTs&hrhw8mAg+>__BHu*7Gp<#nuw;Y>LNwb%^J2AP zYGk9$2^!O0k#Clv2_IYcu}|=^^E5}1>4oXlPMI#GGW};LXNAI4uvK%# za?C-71gi-_vQz#2y(+tZ8f{P=MS6jeEimFL5{0JhRGG64rNzaSGUrN1Oh7beqN!qr zk!EKoZ1!t~Qbo@fMXg5Qx^`Ki8kz758!-+{ILnzhGi|_Aw$8QbE-)`sjpthK+0@#K zYt2Pw4!EG2CC+vFbd9Q>*y`Z^PDrk|!Z?sO$Wjh0vE$n~8tg8lHtTBeaC<-chFCMa z)D{v@R>Mp6cb0z;@0(6qw=YdiFHPyCtaGGuKc#e7Zd+aSO4~wMnB*9K|Q1Tp2|D-5#WTN(FdPRxb zr~8K^V_T^u|D24U7xGM%Y>v0aO#};NHMVqo_1?!cyVI1db&*ad)8om9#~-K1lUvhK zxsmoyrbC}PvaXY!$gdN$sMpt7g-yv_NyH&!h?vS)y fk?&e!qh1x#oNNN7bEj$eC-$yt5$U-5ZpZ%*J3M@d literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0002_auto_20210417_1052.cpython-38.pyc b/quiz-app/quiz/migrations/__pycache__/0002_auto_20210417_1052.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3bc0ae57f5f7fa94b6802da7f94b40130c8e55ce GIT binary patch literal 1343 zcmah}OOG2x5T2)BvAqjR!t*dfBFcow_F8!$gdhY6iUf%uB!^MN(00|1+dJ-=bhneW zuW;QfXW+(--_uu4h<|`UP(8D@lMCrlS66j)RaezlJr8=ljzi=3AAkGqmnN-Ncyda~AA%no2+*H5zW0*`xc8kn{DW+ryRm0F z3!X`)c_EZ(EDFF}O|9;JF6^Kjugn^#{L z!E4V&Z~(8r(Bh4aMHVJ|@FvymEz|yTQ!grB@Oa7BraKyq4pT0;<}5d@QWlv+rA(-% zg+%TUVC%haAHlnqK6?KOE%D_?iD`22gykI87e5mkWmJfK6#>tl0If_irOs8_nbRm`LK0!Gt6sCeL>T?#}N-}}n zGvN`(9Arqanh+#A(%;-(XLpXG6{;(do?&DYjJS$Kp(#35=4?e_aj{e8T==cOeyLEZ=;^Ge)CgQxF4w3ACj8Xi7zZYt6D{{_ zXiden<{~o(Tu{yur#gMSL{)X|`ryuHlU$!|#(_Lfma=DwZQt5aZ*w5EQLlSnot=-q zAkp-<+Cl=#b$_eAXXU%`zG=itXEt_9rt|%ccQyCbGh!E3t~z^uNXoPafL#ut*wD6719mCC|}xZxuz3OjO=X zrzr94`Tpw2*k)?UU$=%&3wf+cHpTIC(w5t4iTkti5;v0zbr1ua1Zl7c)6lQ=Q5t>aK>*>89)uXon?D3;6a4#L68%BG-o2z@ zy9=HxW_TgBZ7vExp{LIF>>7}8leYew2v)bH4e)b64KSQX(0~A&^A_FFo_FTm`33C# z)Q9M2ADYmD_F0ho(1Gq*02j_`j~?{NV*mr#gMD}jUOo%AwgY&jiZ=M)co*T)b3U)W zFoV~g%isWBf1$@48;?9n_ux(H+grACchfIwUif&)*S0qrjgB%dx#3LMcBzV7q1HCi z(?TKl2(b0u_mAM+D>pv5MxW&Bqtv#ze8L2W_2n<6K@}HLtYY9fH#*i>GQtEQo~+_& zu~;xYbhk|j9@|<_Y?h;q?z`|wKoGLiOrXro%yz4w%oIx7-V;=lLSrV`qCV%~tt1;d zosEt;3Q!TjY9mnW*gUws&hH$@E7aFwGsD;w7;_!V!cca)6l_Ilak(=Ju1(AW2g zDkc~kc7oDnztpI7{B%}SW(01kkZaUK8-3w!OhOw?1d}JW1$fMs!r0CXMVT2qHEPeL z*3#Sm)Ya6k5AJM~6#875gz6%Bs=gy`eCt5{&4J8iz3zW|em?%1 zL_6483k9gwgRS`+C*Mo0*UWslnxWFrA`7YQ3A>-N39yJfbM64 zFuq+iJ8+85=QCEzwh414^TMI4u*%gAzQY_(AG+~yNZN)X*l7+*F3|RF6@@@1t7x`c zlz9GpfAv)2Ds|+qTZc~zb)ri)#qnW%!+Q?P!;0+Q{2|TmIAcpwWaH8JX!QQkN7>Qn zgYmFjDfdUyrma7AOwjl@j6%Obzsvt@xcx16Wy|fX#Qj-CNm}WpI*FmHa=05(^)|(} oopU2hs(vZgBlV6WE{9!NHFwpyv_Gxef8CwcO(Jc7-){&10eUuregFUf literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0003_progress_user_answers.cpython-311.pyc b/quiz-app/quiz/migrations/__pycache__/0003_progress_user_answers.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..52f3eddd9a748a7dcda2acb22cb077b48f913867 GIT binary patch literal 1306 zcmZt_OKclObY|CHd$)GlhKe2_#iXT*p^Y84fCQ)rA&P`UB?_&;s#r}tFPnAu=NUU~ zQX%EgLvNH*ubcviNL=B@kpl+{S;CrYPuw<2PCfBv?WL*c%+CA2H}5n1L$&Gc%%5WB5rYo&R4FU8^i*0+XS%|OK>9=!d3KevN2|?Drli9uKN&hbt1uHKx~3Li+K$j zQg$;-*Hw<|qUSIGq${r5AF@DuYmP$#5r?SjgB1EPsqzP$U)52C?z^%-++ZT(mBo83 z@?u?=0C7@l=dObXcW>&(=$w@yuwd*!;s>CdIDy#<{D~Z(IeGGBV^IMC0irZs0I4x%uGSqjOtMwuJsIGEhcB{)S-ZznxmdzL1*6 zDQjmnb%_1)17}=*X>$72$;nqH^NSD9kLMSET>16XA8-Bn?zqkVZYO`WlTrWPs4vI; zdnqB`(9ev0j8Cr{hf{>YuZ%SVQDA&wj@k*TSLqEC)f%C^O>b%hrqt+#fr%Cf(E#CO zVKKFfwzE$V9BPo7rFm=T6TQW`yq0=Ny*Ta7vhMlv)5jqe&_>xaC11;CmrYF6a&K`~ zQ(3Urka|*nZ~6+Zh$Uq8-zRS)NKHy9wuqh?k%j3uAxop@eG_8uWIMI0)JnzCG#&?8eN6} literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0003_progress_user_answers.cpython-37.pyc b/quiz-app/quiz/migrations/__pycache__/0003_progress_user_answers.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..23b1800eb03b72d0d5f50fce5fe274a48d849968 GIT binary patch literal 865 zcmYjPJ8u&~5WdIye7@L8DkzYUp+GSpzaStX1Ob#l0VzOGoFXcIYBY8sLD7UeW{x4fK;%5+p0w{?P&NrwvW;p*43S z8vd%*{d#xzLfwq>6OqO+yR)5FD7!_To_8UR z;!1TDmV(Mg=pLMRCqM`8}JQUNkBG$wiPce_GBOTO9 zL{&(_c7pPtP{?zU;SNOvHKnzwnK{&r!x&T0>m?O~@&x(Co4Z7a&+D6<>wt5LoTf;6 zoAcwTNKLe{087jP^GS?K(r{SXe*v&#UX`vfTd$6UtZnT&EOW_WG!cHhA5U-Bw%(0$#yaKb@dc3rHzNuE0T Z6752}Z9@E~3l^UlVw6Y1x7Tgo{SOSv`fLCI literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0003_progress_user_answers.cpython-38.pyc b/quiz-app/quiz/migrations/__pycache__/0003_progress_user_answers.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..143cc8bddf4f970b4eed76c55c201030e863a1cb GIT binary patch literal 879 zcmYjPOK%e~5Z;G3*=&=v;s6p7Qn;W7P?Cn1gb);=mJ9R%Du-2taWm8HZueDt(?_mw z?STttICA6n_{xdDfRM^~)2i{xV~=M)&o|$AyVD6Q8o$5&`t;SI)i{fTk+V)yJthMd z*r^rTv^uGixuKh}klFKdFZ5np-~#(%0Yf)we0IYI*zc{r_lL07R^QP<7DrN4agi(C z$O^zzO-yWYERnNLQ@tUBb+*s}JF-I;S>k~ME;f=TF!0b%T1k*BVf%Xr8b54kf)A}T zH?kpsr85R?=$tV^cA-l=mUZjxWqu;V4yW-fyfGS$##~IRf{#bzwb8@1Cwy)6XsrEG z7Li1ybbG2$a*?ZJluFt}E4E0N+49F7xVQS^>3v%IcXvYFjPoOr#xT3Hkyj{tMV_Aa zAdccn^%RzZN=NAJp7th1mI*a5BqpSSZf2B6M5x=_3#s}{Hv#v=G_6QEal%u~qiSCV zbrMk(lDHkA+$|LHTx7UOh@h6Wb~Q7H+S`jU1-(*IF({9aU);Gxg801tlXD$#PRMDB zv~P2MI2EZu8xOF=95A26s3biSOZzVYHqEWlHE!$GzL2%A8<2=RDokAxW!FTz?=ZrX z4@MZnSv!&nCI!kkMI96+Uc88(mh930wfVa-JTBycD#ZlH!}*=2U9+LF!>eaBr1m}F zm#yN9of?#<(mY?Ern+V}u5->jW;^t)+Ri_AUdQ{*@cKN%z>pqXsVi?1O1Cb8uv-^j gmn?5lq()zHp6_lOi2rP^<#QvCYLM~m729|J1Ey;I`v3p{ literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0003_progress_user_answers.cpython-39.pyc b/quiz-app/quiz/migrations/__pycache__/0003_progress_user_answers.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e62ae0254224d144b322d11cbecac173808e0e39 GIT binary patch literal 879 zcmYjPOK%e~5Z;G3*=&=v;s6p7Qn;XoN0Nq@giu?AS}xE72o9?X%gIc)yWLmqO+$&WeDjS(rxRE-);E4lzB!il+c=AZk+VrtJtG4a z*r^rT^mkGxb3->{A+zWEUg*8CzyLR?+;T>ujL|c4UVxvcv-iTx=vwVBn#jw2~lM!uIzLG=A971Rq-G zZe&9MOXm#Q&^c#>>_V4#EbG?0tNcWU9nRvj@YZNF8gntL3O*i<*G5m)p7XWQ)3NqT zSws?*((Rc-$wjV?Q7UN@t=J-6&Xzy#!h_X~7Z2&zzrP#mW}F|1G={T#TX}`DSLEqw z58^1UR8L_ksC0zhfZa^aPs4#U&lwA|;zQ+hp zJ{e&QXYEKTm=q}E6m?LPc=;lJTCzvyYx8$&cwEQ>Rf;K&hx0ohnSKpxbN!5l)V|03 zs#SckQ-ktUn&<1&R5#4RbuO64Y=^#8+xf>X>Uh5y-kfI`7}A4lb>(eB>DFZsCUx<3 f$?^_GYVqAvhuEu34Ge!T9i3cDY1QU6Fzg zy8MG66eRu%MT%%!Dmq7(DiyQ7bBIJ{?dLbUGy7&n{?_dVK=$Ql_idj6{5DQ&?wm}w zh#Y_b!7|9%fHAP(DF|yHgpF)uwF!qdz!AMO8(6}54WawTxFOR)o+dK>kd}oS&O@4y zGk2yBi5vjJfC->vmau_s0Xn0$5Rw%359g2sk1j+h$`dXLdD?%`DukAHcE;%^eY@A| zJ>Zor6NyUku|mn?LhYecy3=m!rOW%28|0gX3%WPR+sD6{n5jU!!2V AkpKVy literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0004_remove_progress_user_answers.cpython-37.pyc b/quiz-app/quiz/migrations/__pycache__/0004_remove_progress_user_answers.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d18054cb0ce93877532c05ebc7fb4b2df3daa83a GIT binary patch literal 515 zcmZutJx{|h5Vd1Bq@fkejBHt&ijNH;!~hJ?0k$kA)TbyViBp?U(G^yH2n#>RD-(Z# ziE~O+kT~g{?w;?S?)h{$3<<{G#ry4q67u1iE;tq^m}VD25=jeE(u7iSPNXN<3y}=y z%zI{uC;1JDdY?E)B5K1j&vg2btIA9r)x{q{APJQOS7}BQ27K0YqLROQ*!!}Fg1+rv zbxM(E`Mk-O$dnB-BtzsHQm>?V%OBc@3p{gtHt9X+u@RkJmS%xA47%ugiF$ z^u4LmDICUfmR6Z^=PzT2@%n>ev~wVItN6dGQT?PD>iU=_KnR%6IrV7EP9kReEB%qY ZYY%Ms^(m`r8y9VGv~qdu^o%nzVBf0+iunKl literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0004_remove_progress_user_answers.cpython-38.pyc b/quiz-app/quiz/migrations/__pycache__/0004_remove_progress_user_answers.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e843313c67ec8decb3bceed2d2d6fa0720a4198 GIT binary patch literal 529 zcmZutJx{|h5cO9|8d?M^BU_fH0!D-)`s;_j055SX0cGJ6P$D4LUk#*~sXqL|{(L~)=a z_QYeR#1#p>Ppl&$wLy`kI=RoP(hME79)CoE#8eS%rzwp&h>_=nm3U#8x0HvXE!)0W zs)fvo@g$qs-G0A+AZuNv8jO(>16n4fnSwUfU(&X-&SP&-R0?ugCIwjGa1d@-Up9o4 zHjokvCOP1_BjtFKfzQz)$$eIpX6&fV_#+A=ri$P=O=-+QOgty7#4E$Pr92dE+4l8H zEo4?qXW5h8@Av!1ves3q!5BF+pk-2;IcQ`36>U44JkAD1r68AOQh*f>hvAm>WkX15 z11Yg#mILM;DW|g}cTKKRP(!Jp9A{uOLpyf+28!wdE;7iK4XPS`{k{>si}wwDT}AUs z-E;R(tp`xcAlZWwag eUcS;(qh`&9UoW)G_Hf+#r%SH`r)r#~4*vn6#*SV9 literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0005_progress_user_answers.cpython-311.pyc b/quiz-app/quiz/migrations/__pycache__/0005_progress_user_answers.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e1a2713b4802864105db5eb05a46804a68bc585d GIT binary patch literal 1291 zcmZt_J8Tq3boO(5x67RYCn7~iI1D0O0G|~>iYS60NFqh#A_YibWo5O#d0y{%f6VNi z@kJmP6zM`oo5}=XDP5E*b&3?H=p;_lrlMQRuBh^6_ZA%Ro1ORHdB2&*jfO=Ke*Ueo zJX8t!R|+Lmrp(SYWF8Sps1gucL8=C7sM%Vm+qzQdD|SUCUlOW4AXEpfXOxF*YJ@z+ zU4U&+2##`uEb^+42b?#ZB~izw;!Z9F!!z#K;)$>!peiV zX^ctM2f&tM4o>8T(9+OP4l|d8E_I@^>_b31t%IWG^lNU(TE>rr2JcG$z3-ii~%W_#5wC6@%EQ?^k4omCIx8T9u?_?Kbf)i*(y)mE_~E34n8MG)t2a-nxKflXs3!4j-G$&OJOe zo}K&k{2y2UTK;==+@a4p{GSdVrT0haV4U912>DFCp>7k>S8l4i1wrMa3M!IV{azb& zIGVpvZfR(i1oa)|wj?XsK$5rCH1t4>4v4d=Zd%&}(XK?9X3QEJU&+Nzl!dga;z-e$ zdD-y!SJ!|YMIT{KjdUp=Ts|&#to)nJNiIL^ByulmpB7i(BKrVE`P}#_qD)g11^c7C nKO*lH--MhV?e|THxsk8Ts4GTB-b4?r@u8F3(y+UaHBaV06G&Xl literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0005_progress_user_answers.cpython-37.pyc b/quiz-app/quiz/migrations/__pycache__/0005_progress_user_answers.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4345ea93521be2b6939f0a1664d234658a70b501 GIT binary patch literal 851 zcmZuvOK;Oa5cXr^IL@P-kdTlt7lZ*N5uzLrf&wZaBzgeB!KzrcnW<~zS9g=N3E~9T z{s%a6;Ro%N6MumdvreP*z*;+=*Y14t?L6)G1B=$(m%lzP9n1P{jP+uq?9f*CNq_}* zZpAkJo!lwh*ezJh?3KS2w_aG_0{dnGLpSrjy0HiLTPte)p|jRr)uaC#$dt72s&5_r#N+c@9X9^`3r8+^Ww7+)i z-bMe?`TQldh??crhkdwx^YMc_^owro$GV-CbCIX8ys=wOQHE8SFG5I@bgDvywV>`1 z!h=OPsft3Vp+PetB6Pc;>LS6o_wE9Mi0L-qp_t`UB2S$19Lr>Sq=Tl2m{tU`H%EC; zDdeRnFmfr+5ZhRq8J}()rkKNCw55IC_&L`B=ae_gk@Ozt$1{pK5b~KS&yh7Q!a~_0)rs<|td6go~=?&JE7Mdge!xe{*3@yqd;oFyN-~9(l Cmic1< literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0005_progress_user_answers.cpython-38.pyc b/quiz-app/quiz/migrations/__pycache__/0005_progress_user_answers.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5f9476f924e25247eaaf070537e611f36430242b GIT binary patch literal 865 zcmZuvJ8u&~5WdIW`FydHR0s(POoMWOY%2l^gdhk7BqUORLUD>%HlE4lj(cU-PGTb} zXwyot@{-%(t`K?S>YuUtfQ|pE-0JVRNd%j0u>*Eu$1bwW0|#96vlcM$Fv!|jn5|&vTNnKAHnbps_L-a5 z5W>nCgO1_jRp?R`tGfN_GCP&Rjwb0WzBwEY?{SGmb&R~0RU%O-K2a#SDAfr{rGrbg z?kwwP&c{!wMexkl-tEDijVBN9(iPp_i*+k4k42us?ACTUM%k;%eA> zLT`WC8&yRiRNquHA~1BTpzI>SxU;)dLBwa#G&4Hw9i*7UPPC>2-sm~kA?M^b$&vUD=SLHf8($*<)>s0TqZE~- z!LW4j6yUjeL%K$6KRXn%k+lz*D3i)GAyIaXb@eqSc>30$U<%ZZr0%HQI?YjsRgD)@ z@WYbV$-g0gwg)Gb{Ge(v!p*__P4h{!fuV!N=nUx7?*IR{`t?+rkqzjmb;G#MIrEt9 z(BAmV&Kqmgim%My@0*hQ3n1lHiqY*0BkVV=Hx0{cWND%o70sNP^wh7_{ z*Zv1Ma^v^xl@osf36)u=RdQgh9nW+3n{P*SyP-vEYy0PL=2+G*V=OO5#tv=ugalY% z=T>af-^rcAjopI9%%1zb*n4Gx3+$@}4BgEC;>JGM@2trCO|{luOTH zYzSfHoI%Iv@hWr)#j0+X_AgrPhl;H z0fgRg+8b3xAynU>84($}RnYAs!MO8&2|>hk3-CZp@-Y!8&UlVxGCtH{bBP#N1hR92 za#$(kr6@3RDbJAGSehB1_6}0aVJ}+K0dM@A>yUHGo8(A(hx6l!$W5-X0BbA(%TbC- z(qLFRcneo|gMmC_W){Wvi7tCX} zL*K?18YKaNfN-T(jq literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0006_alter_progress_user_answers.cpython-311.pyc b/quiz-app/quiz/migrations/__pycache__/0006_alter_progress_user_answers.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..94eac3d24e417dc8933f0df4b1bf0d3afb741f74 GIT binary patch literal 1292 zcmZt_J8aWH^!$kvo1}$;Kmt)hK^5WCR0tRl;v;?%f*|q7s<7PL)phD0cTS;2pbiXd zu(2`~5S7>v6AKFiLxds`-O9w~s-2j4XUBZ|&iDSl_q%&psTc_0>D$T_l@a~iN~6K-;`AP!pa9=o+FaRH)Sk2lBvjusI5Fp$O;RM)+*)) zU=C}qz(gc>i0rA!y>y$4%V}S4~Qw%1v+3yQOeYR-`P4$?}%lK z^wyr?STsk)TS!p}81@d(!mpKRNUtY~yh&TQm>5VOeqwY>+k0Df_BQP34UIe-?GBB+ zI`sa`r>V~~-3I>JU|$-n6F=(2v)%Yng3w9%n!JoqTe>c;>mP?>CotK{x{tzxb(1H!2Kv4%dWz4ItrqAZ)^roqDYbi{gH+{XnXec i(4Nj(Uk~XE=}NS+q$TKo^vvk4-@Pmht7}-(WPSqloLm(E literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0006_alter_progress_user_answers.cpython-37.pyc b/quiz-app/quiz/migrations/__pycache__/0006_alter_progress_user_answers.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7796c85ba0a3c3b2c211c58f284639a706d74135 GIT binary patch literal 852 zcmZuvOK;Oa5cXr^IL@P-kU&V}gfO5as?;73f&$_p5Iq!$gH^F?GgH^bukI#o6T}Iw z{SR>Lg+IZ+*efUg0w-qeM&ZC(JD#1H-TCI5dD8C(7Ol;fKR!suvVNJvYB5rFXsc}! zV1b=kkxhRmb8{1lE}%2kh96Tx4kr9B|P~+rXfOe%eWcw2QrOeek~9&;}nm z=Wc960Nry2J)=hh=o5m0?z~xLCK&8^o-FnC$z-y{D_O=8mEv=Sl8Zu}qEy;nnRV}9 z`_lRJIkAY7<;MGcxO@B2{d@Ea@9amqofIb`OJI5HSusO7EQ@S0gd|R8YN)UhR5rr! zU@@GQc`nq*z?c#Px}8&Y5#zi=HShhrsE8a?A=7QZLov^0#F{wc85Z&ENC$NiF)ImV z?*!#RsgM^U$IzuX!)Sfd%-D46Fu@FV!wv28+RnKSIH$OIhNSm6Kc0)s#F`Ueg#}a{#FD!YJ;%o8e_4u@uA5|r$xHWFxH2qnQjU2BhW=#Fs=E4B_f7eFULYjH?X)80* zzUwh&JM`7|upM1(-X9srqcxTC8b#~Qr4tV7;_HIt4f52t*N7W!Xs-AV8ZI9ia+F8H Jx3Ac~`xn_}`9uH! literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0006_alter_progress_user_answers.cpython-38.pyc b/quiz-app/quiz/migrations/__pycache__/0006_alter_progress_user_answers.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6b6b4e15e107385bf3b9a9297b9436deb6df191d GIT binary patch literal 866 zcmZuvJ8#rL5cXs3^Z6c0g#<$4Dii~{J0Xz*AqYZ%1R_Nc6jsEtxtTaNer5MA$sMAC zHZ3)j>G%))i*2d+3rHx;`Vu7tYwhgL%k#~*^QPAeEn2_6{&+7PI*oF9F;X^Yt924! zft_2iO{bGPg&VsCiX5QQTfHEGO|{qoJF#OIS>}NQF8Wyu72%vrJ zCN_l7IcCr`_qY!|LebalSLf9U3frHh3w>=o9^d1&tP+Vz@tH!&MX3%^Djl4gb@#G; z;e7m*TExp@<=r;iUVC)^4js|0?O3B1Ch1fS6xM=TM;PqP z2a~EOgc=$c6JkNP3aTy=oVBUvt)C|~5risYx&^o^X8Dwu6GuG9GMVn_uqh&@6@ly? zpxmhx@=_ESxfEwuZ8Xh{O?$g3=CB#9=zuqN&UMH+#m#c0dzbV5naEA7(Ew{K0n15> z%1nf%!^b%_^UVB3y2j9cvL}|h_8}8xQkga+%D(aTw=lt@w}uA;Q9F|QqlW7=M;%r* zo(;f>C2vrCBmTS`9ai##s>KBFj+Xy4@3R;gIl7pd5xv(s7Y5M(Uu{^=rJ31)wpuk8 z*EwY#vmN@@{<71?8@1vq%PK_66?cZD3M@2TMjD O8j6%pBCuEO!2JiPNd1EV literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0006_alter_progress_user_answers.cpython-39.pyc b/quiz-app/quiz/migrations/__pycache__/0006_alter_progress_user_answers.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6e4ccafe97925b17b52c1704a64925a4d7c359ff GIT binary patch literal 866 zcmZuwOK;Oa5MJAB$8jF*2?>NmPN?RQL`d|2P+Nom2}BP?;$T%++sxFp@vFN@+XQif zYySfrd*eUwFZRlbzkr0wtkbGJu-4Abb7$t;vFP;zMr&j9$DXtq`(=ddi<7WLTdflT z23F1@i%vVY3ny|49&u}_cO&-|0|)q51{|Ht`{G0%SnpWq{-#*A9ojl5(nN}BT9rzB zMFp6viLqT@9TK)^tJg%Z$rjmQC067h&s?y+W^^ z!v6F*WrWLO<-;!AU)y~0fR6CqZlqgjc_i`_7I$BiQ=sAY9ncGblTldF^BDNMf-81k7FIgG5O7MB)%KRhcl5IUn2q5SOS)l z6qT6>rh{iWHS^NkA|0b>KR*ylS$mL)GO0`(5@p|5`#YH6$$Nu?DN);!`lE*HG)Em& zHC_zB8IyO&zaf9#jE*b$QPpCCk4DQoADRamHRNh)M)Y3mu`mVw|J8=|T$-8nX{%Mk zIQBVrxnE5jg;aJ`+HfS;G3Z1?UXhLP%2BKb%7nJh~92C{MT~3#)~*d?HJq&ujvkNHaOP-=M*r? zkoY|3+oL!$LBq^P7Bh@N|edHE5aq?idEloie<@f{|n{c|3@FLR8jz9iZ$ z+G!+uCAcPoz0XhIv78B}Il#+k78!EcO%7d`*Kwg=6 z1t!i3Q9fiXheMxW?OnXz-BLn6?9dg*<^+%4MUh0(jN~+;l$;akNcKV` z13Gh_S>#B5LxSEX?va2RKTi`CFVeEmQ)_kg2M8phlHgUE(1-z_^(<8KR|jWT_7Lcr z{#8c`9K+{zx{7wjwDCII41W7a@bgkaCW<%*!>vw& z4daQ%5W@IE;6j}N_5&g2b)4BHJ4vXZkWfrh(8|F;X7d{I@)6Eb$fWVh3Vss55w(Ti z8~M5nm!*2pRXm0LP|o5aDQ$>VXf<5_rVv9N3e^z*Pc^EZ6hp3yM|&t9b2+CDZQMz~ fOuyxi$14-R zz(Bc9sahniti3^bh|#m`gnc6y{0%@vR)j?2@bu7Ac>?I$!SC>IU|xu=b1wQ1dr2%Mh@_iYmFs;VaQw3MbnmP zUo71MX85>HXJ)tG?;nUbn}8CPDiZ}-i&`U#3q1v;jklCdXI)1JKQAR@qKI=a+~OeE zFrH`xA&f5sHq;s5x+BE6jx*b2nS=@o3B@o4tr&(fo0pK64{(}7CXHWK@SFOLsBPSD z;Ojh`mg-(t@euYyIf{#|4p#c=giA%;2>s&V{3Rj+zf4*Irm=q&`#VRPA literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/0007_remove_progress_user_answers.cpython-39.pyc b/quiz-app/quiz/migrations/__pycache__/0007_remove_progress_user_answers.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..33083e786887efc39fbd41d4938b76fbfc9b9349 GIT binary patch literal 535 zcmZutyH3L}6tx|vq@hLd2Z${LO~n8UDon6I2Vlx#rS(;ml2`493RYP85H`NYD-*xK zK)Ft-S|qOIBcJ1Yk9{0>yFS4hoV}0kC?Ow~Y!*jyj!PdPNFr%QavD)eE{SB)c_GpP zI$_UF#3a8Zf%}PlB%sF6(?rFyv@G=4N}Kh^6i7rR!Eu_<$N@fat+C{<40%hsXxcLE z>y=x;44>BNliBb0`^O^AW}rl+%0z+IqSnabLeD{I=V+0@a&&r1oJDB>Ipw>S*8 zj3*jF2;&QZ4Rr>%?+7ui>Ex5}mqwJe6 knzLcxnD+9Po*XsLZ1nYmmb*P1H{R(o>%h8d8>!>`0MKWU=Kufz literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/__init__.cpython-311.pyc b/quiz-app/quiz/migrations/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cae3a1ddd250a43bd2bdf37dd762a268d3273fd0 GIT binary patch literal 179 zcmZ3^%ge<81pVuI(?IlN5CH>>P{wCAAY(d13PUi1CZpd*ZCdcJO9X=ar^h|o!aiA=5 literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/migrations/__pycache__/__init__.cpython-37.pyc b/quiz-app/quiz/migrations/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..620777167cb777abbd7a5c48767d09a65ed19566 GIT binary patch literal 138 zcmZ?b<>g`k0wa%g2_X70h=2h`Aj1KOi&=m~3PUi1CZpdg`kg2&S~B!FoUfeaXd90wpSW&si@48aVVjD9N_ia^2$;+L_0d45rLaY15o zs*!$5R$^Xyeqm{5Rh2%7)X&XKFG?)Q%+D*g`k0z3N+Ng(<$h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vQzdXMvySN}R zIn_u%B`Yy6Jzux5G_y({Oyp*!7bTWt=I0gb$H!;pWtPOp>lIYq;;_lhPbtkwwF4RU H8HgDG>&PI6 literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/models.py b/quiz-app/quiz/models.py new file mode 100644 index 0000000..89d3992 --- /dev/null +++ b/quiz-app/quiz/models.py @@ -0,0 +1,621 @@ +from __future__ import unicode_literals +import re +import json + +from django.db import models +from django.core.exceptions import ValidationError, ImproperlyConfigured +from django.core.validators import ( + MaxValueValidator, validate_comma_separated_integer_list, +) +from django.utils.translation import gettext_lazy as _ +from django.utils.timezone import now +from six import python_2_unicode_compatible +#from django.utils.encoding import python_2_unicode_compatible +from django.conf import settings +from django.contrib.auth.models import User + +from model_utils.managers import InheritanceManager + +from datetime import datetime, timedelta, timezone + +class CategoryManager(models.Manager): + + def new_category(self, category): + new_category = self.create(category=re.sub('\s+', '-', category) + .lower()) + + new_category.save() + return new_category + + +@python_2_unicode_compatible +class Category(models.Model): + + category = models.CharField( + verbose_name=_("Category"), + max_length=250, blank=True, + unique=True, null=True) + + objects = CategoryManager() + + class Meta: + verbose_name = _("Category") + verbose_name_plural = _("Categories") + + def __str__(self): + return self.category + + +@python_2_unicode_compatible +class SubCategory(models.Model): + + sub_category = models.CharField( + verbose_name=_("Sub-Category"), + max_length=250, blank=True, null=True) + + category = models.ForeignKey( + Category, null=True, blank=True, + verbose_name=_("Category"), on_delete=models.CASCADE) + + objects = CategoryManager() + + class Meta: + verbose_name = _("Sub-Category") + verbose_name_plural = _("Sub-Categories") + + def __str__(self): + return self.sub_category + " (" + self.category.category + ")" + + +@python_2_unicode_compatible +class Quiz(models.Model): + + title = models.CharField( + verbose_name=_("Title"), + max_length=60, blank=False) + + description = models.TextField( + verbose_name=_("Description"), + blank=True, help_text=_("a description of the quiz")) + + url = models.SlugField( + max_length=60, blank=False, + help_text=_("a user friendly url"), + verbose_name=_("user friendly url")) + + category = models.ForeignKey( + Category, null=True, blank=True, + verbose_name=_("Category"), on_delete=models.CASCADE) + +# sub_category = models.ForeignKey( +# SubCategory, null=True, blank=True, +# verbose_name=_("SubCategory"), on_delete=models.CASCADE) + + random_order = models.BooleanField( + blank=False, default=False, + verbose_name=_("Random Order"), + help_text=_("Display the questions in " + "a random order or as they " + "are set?")) + + max_questions = models.PositiveIntegerField( + blank=True, null=True, verbose_name=_("Max Questions"), + help_text=_("Number of questions to be answered on each attempt.")) + + answers_at_end = models.BooleanField( + blank=False, default=False, + help_text=_("Correct answer is NOT shown after question." + " Answers displayed at the end."), + verbose_name=_("Answers at end")) + + exam_paper = models.BooleanField( + blank=False, default=False, + help_text=_("If yes, the result of each" + " attempt by a user will be" + " stored. Necessary for marking."), + verbose_name=_("Exam Paper")) + + single_attempt = models.BooleanField( + blank=False, default=False, + help_text=_("If yes, only one attempt by" + " a user will be permitted." + " Non users cannot sit this exam."), + verbose_name=_("Single Attempt")) + + pass_mark = models.SmallIntegerField( + blank=True, default=0, + verbose_name=_("Pass Mark"), + help_text=_("Percentage required to pass exam."), + validators=[MaxValueValidator(100)]) + + success_text = models.TextField( + blank=True, help_text=_("Displayed if user passes."), + verbose_name=_("Success Text")) + + fail_text = models.TextField( + verbose_name=_("Fail Text"), + blank=True, help_text=_("Displayed if user fails.")) + + draft = models.BooleanField( + blank=True, default=False, + verbose_name=_("Draft"), + help_text=_("If yes, the quiz is not displayed" + " in the quiz list and can only be" + " taken by users who can edit" + " quizzes.")) + + def save(self, force_insert=False, force_update=False, *args, **kwargs): + self.url = re.sub('\s+', '-', self.url).lower() + + self.url = ''.join(letter for letter in self.url if + letter.isalnum() or letter == '-') + + if self.single_attempt is True: + self.exam_paper = True + + if self.pass_mark > 100: + raise ValidationError('%s is above 100' % self.pass_mark) + + super(Quiz, self).save(force_insert, force_update, *args, **kwargs) + + class Meta: + verbose_name = _("Quiz") + verbose_name_plural = _("Quizzes") + + def __str__(self): + return self.title + + def get_questions(self): + return self.question_set.all().select_subclasses() + + @property + def get_max_score(self): + return self.get_questions().count() + + def anon_score_id(self): + return str(self.id) + "_score" + + def anon_q_list(self): + return str(self.id) + "_q_list" + + def anon_q_data(self): + return str(self.id) + "_data" + + +class ProgressManager(models.Manager): + + def new_progress(self, user): + new_progress = self.create(user=user, + score="",) + new_progress.save() + return new_progress + + +class Progress(models.Model): + """ + Progress is used to track an individual signed in users score on different + quiz's and categories + + Data stored in csv using the format: + category, score, possible, category, score, possible, ... + """ + user = models.OneToOneField(settings.AUTH_USER_MODEL, verbose_name=_("User"), on_delete=models.CASCADE) + + score = models.CharField(max_length=1024, + verbose_name=_("Score"), + validators=[validate_comma_separated_integer_list]) + + objects = ProgressManager() + + class Meta: + verbose_name = _("User Progress") + verbose_name_plural = _("User progress records") + + @property + def list_all_cat_scores(self): + """ + Returns a dict in which the key is the category name and the item is + a list of three integers. + + The first is the number of questions correct, + the second is the possible best score, + the third is the percentage correct. + + The dict will have one key for every category that you have defined + """ + score_before = self.score + output = {} + + for cat in Category.objects.all(): + to_find = re.escape(cat.category) + r",(\d+),(\d+)," + # group 1 is score, group 2 is highest possible + + match = re.search(to_find, self.score, re.IGNORECASE) + + if match: + score = int(match.group(1)) + possible = int(match.group(2)) + + try: + percent = int(round((float(score) / float(possible)) + * 100)) + except: + percent = 0 + + output[cat.category] = [score, possible, percent] + + else: # if category has not been added yet, add it. + self.score += cat.category + ",0,0," + output[cat.category] = [0, 0] + + if len(self.score) > len(score_before): + # If a new category has been added, save changes. + self.save() + + return output + + def update_score(self, question, score_to_add=0, possible_to_add=0): + """ + Pass in question object, amount to increase score + and max possible. + + Does not return anything. + """ + category_test = Category.objects.filter(category=question.category)\ + .exists() + + if any([item is False for item in [category_test, + score_to_add, + possible_to_add, + isinstance(score_to_add, int), + isinstance(possible_to_add, int)]]): + return _("error"), _("category does not exist or invalid score") + + to_find = re.escape(str(question.category)) +\ + r",(?P\d+),(?P\d+)," + + match = re.search(to_find, self.score, re.IGNORECASE) + + if match: + updated_score = int(match.group('score')) + abs(score_to_add) + updated_possible = int(match.group('possible')) +\ + abs(possible_to_add) + + new_score = ",".join( + [ + str(question.category), + str(updated_score), + str(updated_possible), + "" + ]) + + # swap old score for the new one + self.score = self.score.replace(match.group(), new_score) + self.save() + + else: + # if not present but existing, add with the points passed in + self.score += ",".join( + [ + str(question.category), + str(score_to_add), + str(possible_to_add), + "" + ]) + self.save() + + def show_exams(self): + """ + Finds the previous quizzes marked as 'exam papers'. + Returns a queryset of complete exams. + """ + return Sitting.objects.filter(user=self.user, complete=True) + +### TROUVER COMMENT RECUP QUIZ_SITTING USER_ANSWERS {} + #print(self.user) + + +class SittingManager(models.Manager): + + def new_sitting(self, user, quiz): + if quiz.random_order is True: + question_set = quiz.question_set.all() \ + .select_subclasses() \ + .order_by('?') + else: + question_set = quiz.question_set.all() \ + .select_subclasses() + + question_set = [item.id for item in question_set] + + if len(question_set) == 0: + raise ImproperlyConfigured('Question set of the quiz is empty. ' + 'Please configure questions properly') + + if quiz.max_questions and quiz.max_questions < len(question_set): + question_set = question_set[:quiz.max_questions] + + questions = ",".join(map(str, question_set)) + "," + + new_sitting = self.create(user=user, + quiz=quiz, + question_order=questions, + question_list=questions, + incorrect_questions="", + current_score=0, + complete=False, + user_answers='{}') + return new_sitting + + def user_sitting(self, user, quiz): + if quiz.single_attempt is True and self.filter(user=user, + quiz=quiz, + complete=True)\ + .exists(): + return False + + try: + sitting = self.get(user=user, quiz=quiz, complete=False) + except Sitting.DoesNotExist: + sitting = self.new_sitting(user, quiz) + except Sitting.MultipleObjectsReturned: + sitting = self.filter(user=user, quiz=quiz, complete=False)[0] + return sitting + + +class Sitting(models.Model): + """ + Used to store the progress of logged in users sitting a quiz. + Replaces the session system used by anon users. + + Question_order is a list of integer pks of all the questions in the + quiz, in order. + + Question_list is a list of integers which represent id's of + the unanswered questions in csv format. + + Incorrect_questions is a list in the same format. + + Sitting deleted when quiz finished unless quiz.exam_paper is true. + + User_answers is a json object in which the question PK is stored + with the answer the user gave. + """ + + user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_("User"), on_delete=models.CASCADE) + + quiz = models.ForeignKey(Quiz, verbose_name=_("Quiz"), on_delete=models.CASCADE) + + question_order = models.CharField( + max_length=1024, + verbose_name=_("Question Order"), + validators=[validate_comma_separated_integer_list]) + + question_list = models.CharField( + max_length=1024, + verbose_name=_("Question List"), + validators=[validate_comma_separated_integer_list]) + + incorrect_questions = models.CharField( + max_length=1024, + blank=True, + verbose_name=_("Incorrect questions"), + validators=[validate_comma_separated_integer_list]) + + current_score = models.IntegerField(verbose_name=_("Current Score")) + + complete = models.BooleanField(default=False, blank=False, + verbose_name=_("Complete")) + + user_answers = models.TextField(blank=True, default='{}', + verbose_name=_("User Answers")) + + start = models.DateTimeField(auto_now_add=True, + verbose_name=_("Start")) + + end = models.DateTimeField(null=True, blank=True, verbose_name=_("End")) + + objects = SittingManager() + + class Meta: + permissions = (("view_sittings", _("Can see completed exams.")),) + + def get_first_question(self): + """ + Returns the next question. + If no question is found, returns False + Does NOT remove the question from the front of the list. + """ + if not self.question_list: + return False + + first, _ = self.question_list.split(',', 1) + question_id = int(first) + return Question.objects.get_subclass(id=question_id) + + def remove_first_question(self): + if not self.question_list: + return + + _, others = self.question_list.split(',', 1) + self.question_list = others + self.save() + + def add_to_score(self, points): + self.current_score += int(points) + self.save() + + @property + def get_current_score(self): + return self.current_score + + def _question_ids(self): + return [int(n) for n in self.question_order.split(',') if n] + + @property + def get_percent_correct(self): + dividend = float(self.current_score) + divisor = len(self._question_ids()) + if divisor < 1: + return 0 # prevent divide by zero error + + if dividend > divisor: + return 100 + + correct = int(round((dividend / divisor) * 100)) + + if correct >= 1: + return correct + else: + return 0 + + @property + # add by makayabou, 30/5/2021 + def get_duration(self): + time_delta = self.end - self.start + time_delta_in_seconds = time_delta.total_seconds() + min, sec = divmod(time_delta_in_seconds, 60) + return "%d minutes et %d secondes" % (min, sec) + + + def mark_quiz_complete(self): + self.complete = True + self.end = now() + self.save() + + def add_incorrect_question(self, question): + """ + Adds uid of incorrect question to the list. + The question object must be passed in. + """ + if len(self.incorrect_questions) > 0: + self.incorrect_questions += ',' + self.incorrect_questions += str(question.id) + "," + if self.complete: + self.add_to_score(-1) + self.save() + + @property + def get_incorrect_questions(self): + """ + Returns a list of non empty integers, representing the pk of + questions + """ + return [int(q) for q in self.incorrect_questions.split(',') if q] + + def remove_incorrect_question(self, question): + current = self.get_incorrect_questions + current.remove(question.id) + self.incorrect_questions = ','.join(map(str, current)) + self.add_to_score(1) + self.save() + + @property + def check_if_passed(self): + return self.get_percent_correct >= self.quiz.pass_mark + + @property + def result_message(self): + if self.check_if_passed: + return self.quiz.success_text + else: + return self.quiz.fail_text + + def add_user_answer(self, question, guess): + current = json.loads(self.user_answers) + current[question.id] = guess + self.user_answers = json.dumps(current) + self.save() + + def get_questions(self, with_answers=False): + question_ids = self._question_ids() + questions = sorted( + self.quiz.question_set.filter(id__in=question_ids) + .select_subclasses(), + key=lambda q: question_ids.index(q.id)) + + if with_answers: + user_answers = json.loads(self.user_answers) + for question in questions: + question.user_answer = user_answers[str(question.id)] + + return questions + + @property + def questions_with_user_answers(self): + return { + q: q.user_answer for q in self.get_questions(with_answers=True) + } + + @property + def get_max_score(self): + return len(self._question_ids()) + + def progress(self): + """ + Returns the number of questions answered so far and the total number of + questions. + """ + answered = len(json.loads(self.user_answers)) + total = self.get_max_score + #answerlist = self.questions_with_user_answers + return answered, total #answerlist + + +### AJOUT ### + def get_user_answers(self): + reponses = self.user_answers + return reponses +############# + + +@python_2_unicode_compatible +class Question(models.Model): + """ + Base class for all question types. + Shared properties placed here. + """ + + quiz = models.ManyToManyField(Quiz, + verbose_name=_("Quiz"), + blank=True) + + category = models.ForeignKey(Category, + verbose_name=_("Category"), + blank=True, + null=True, + on_delete=models.CASCADE) + + sub_category = models.ForeignKey(SubCategory, + verbose_name=_("Sub-Category"), + blank=True, + null=True, + on_delete=models.CASCADE) + + figure = models.ImageField(upload_to='uploads/%Y/%m/%d', + blank=True, + null=True, + verbose_name=_("Figure")) + + content = models.CharField(max_length=1000, + blank=False, + help_text=_("Enter the question text that " + "you want displayed"), + verbose_name=_('Question')) + + explanation = models.TextField(max_length=2000, + blank=True, + help_text=_("Explanation to be shown " + "after the question has " + "been answered."), + verbose_name=_('Explanation')) + + objects = InheritanceManager() + + class Meta: + verbose_name = _("Question") + verbose_name_plural = _("Questions") + ordering = ['category'] + + def __str__(self): + return self.content diff --git a/quiz-app/quiz/static/css/style.css b/quiz-app/quiz/static/css/style.css new file mode 100644 index 0000000..3df87fc --- /dev/null +++ b/quiz-app/quiz/static/css/style.css @@ -0,0 +1,17 @@ +@import url('https://fonts.googleapis.com/css2?family=Play&display=swap'); + +/* Appliquer les polices aux éléments du document */ +body { + font-family: 'Play'; /* Aladin pour le corps du document */ + /* font-size: 1.5em; */ +} + +.button-link { + background: none; + border: none; + color: #497AA1; + text-decoration: underline; + cursor: pointer; + padding: 0; + font: inherit; +} \ No newline at end of file diff --git a/quiz-app/quiz/static/favicon.ico b/quiz-app/quiz/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..02fb53aba1b2b7ffa328b778040531cb31148939 GIT binary patch literal 9892 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 literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/static/images/wp.jpg b/quiz-app/quiz/static/images/wp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bfb2c9f15e44f612da9da6bd73037dfd45bd0612 GIT binary patch literal 75729 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ξ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%0AvrcKheDOGK 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 + + + + +{% trans "Garage Numérique Quizzes" %} | {% block title %}{% endblock %} + + + + + + + + + + + + + + + + +
+ +{% block content %} + +{% endblock %} + +
+ + +
+ +
+ + + + + diff --git a/quiz-app/quiz/templates/correct_answer.html b/quiz-app/quiz/templates/correct_answer.html new file mode 100644 index 0000000..b7753d7 --- /dev/null +++ b/quiz-app/quiz/templates/correct_answer.html @@ -0,0 +1,32 @@ +{% load i18n %} +{% if previous.answers %} + + {% if user_was_incorrect %} +
+ {% trans "You answered incorrectly to this answer" %} +
+ {% endif %} + + + + {% for answer in previous.answers %} + {% if answer.correct %} + + + + {% else %} + + + + {% endif %} + + {% endfor %} + +
{{ answer.content }}{% trans "It's a correct answer" %}
{{ answer.content }} + {% if previous.question_type.MCQuestion %} + {% if answer.id|add:"0" == previous.previous_answer|add:"0" %} + {% trans "Your answer was" %} + {% endif %} + {% endif %} +
+{% endif %} diff --git a/quiz-app/quiz/templates/progress.html b/quiz-app/quiz/templates/progress.html new file mode 100644 index 0000000..0bf63c5 --- /dev/null +++ b/quiz-app/quiz/templates/progress.html @@ -0,0 +1,85 @@ +{% extends "base.html" %} +{% load i18n %} + +{% load quiz_tags %} + +{% block title %} {% trans "Progress Page" %} {% endblock %} +{% block description %} {% trans "User Progress Page" %} {% endblock %} + +{% block content %} + + {% if cat_scores %} + +

{% trans "Question Category Scores" %}

+ + + + + + + + + + + + + + + + {% for cat, value in cat_scores.items %} + + + + + + + + {% endfor %} + + + +
{% trans "Category" %}{% trans "Correctly answererd" %}{% trans "Incorrect" %}%
{{ cat }}{{ value.0 }}{{ value.1 }}{{ value.2 }}
+ + + {% endif %} + + {% if exams %} + +
+ +

{% trans "Previous exam papers" %}

+

+ {% trans "Below are the results of exams that you have sat." %} +

+ + + + + + + + + + + + + + + {% for exam in exams %} + + + + + + + + + + {% endfor %} + + + +
{% trans "Quiz Title" %}{% trans "Score" %}{% trans "Possible Score" %}%
{{ exam.quiz.title }}{{ exam.current_score }}{{ exam.get_max_score }}{{ exam.get_percent_correct }}
+ + {% endif %} +{% endblock %} diff --git a/quiz-app/quiz/templates/question.html b/quiz-app/quiz/templates/question.html new file mode 100644 index 0000000..c95b79d --- /dev/null +++ b/quiz-app/quiz/templates/question.html @@ -0,0 +1,82 @@ +{% extends "base.html" %} +{% load i18n%} + +{% load quiz_tags %} + +{% block title %} {{ quiz.title }} {% endblock %} +{% block description %} {{ quiz.title }} - {{ quiz.description }} {% endblock %} + +{% block content %} + +{% if previous.answers %} + +

{% trans "The previous question" %}:

+

{{ previous.previous_question }}

+ + {% if previous.previous_outcome %} +
+ {% else %} +
+ {% endif %} +

+ {% trans "Your answer was" %} + + {{ previous.previous_outcome|yesno:"correct,incorrect" }} + +

+ +
+ + {% include 'correct_answer.html' %} + +

{% trans "Explanation" %}:

+
+

{{ previous.previous_question.explanation }}

+
+ +
+ +{% endif %} + +
+ +{% if question %} + +{% if progress %} +
+{% trans "Question" %} {{ progress.0|add:1 }} {% trans "of" %} {{ progress.1 }} +
+{% endif %} + +

+ {% trans "Question category" %}: + {{ question.sub_category }} +

+ +

{{ question.content }}

+ +{% if question.figure %} + {{ question.content }} +{% endif %} + +
{% csrf_token %} + + +
    + + {% for answer in form.answers %} +
  • + {{ answer }} +
  • + {% endfor %} + +
+ +
+ +{% endif %} + +
+ + +{% endblock %} diff --git a/quiz-app/quiz/templates/quiz/category_list.html b/quiz-app/quiz/templates/quiz/category_list.html new file mode 100644 index 0000000..90ffe0a --- /dev/null +++ b/quiz-app/quiz/templates/quiz/category_list.html @@ -0,0 +1,18 @@ +{% extends 'base.html' %} +{% load i18n %} +{% block title %}{% trans "All Quizzes" %}{% endblock %} + +{% block content %} +

{% trans "Category list" %}

+ + + +{% endblock %} diff --git a/quiz-app/quiz/templates/quiz/quiz_detail.html b/quiz-app/quiz/templates/quiz/quiz_detail.html new file mode 100644 index 0000000..2681f77 --- /dev/null +++ b/quiz-app/quiz/templates/quiz/quiz_detail.html @@ -0,0 +1,19 @@ +{% extends 'base.html' %} +{% load i18n %} +{% block title %} +{{ quiz.title }} +{% endblock %} + +{% block content %} +

{{ quiz.title }}

+

{% trans "Category" %}: {{ quiz.category }}

+{% if quiz.single_attempt %} +

{% trans "You will only get one attempt at this quiz" %}.

+{% endif %} +

{{ quiz.description }}

+

+ + {% trans "Start quiz" %} + +

+{% endblock %} diff --git a/quiz-app/quiz/templates/quiz/quiz_list.html b/quiz-app/quiz/templates/quiz/quiz_list.html new file mode 100644 index 0000000..11f9ce2 --- /dev/null +++ b/quiz-app/quiz/templates/quiz/quiz_list.html @@ -0,0 +1,43 @@ +{% extends 'base.html' %} +{% load i18n %} +{% block title %}{% trans "Tout les quizzs" %}{% endblock %} + +{% block content %} +

{% trans "List of quizzes" %}

+ {% if quiz_list %} + + + + + + + + + + + + + + + {% for quiz in quiz_list %} + + + + + + + + + {% endfor %} + + +
{% trans "Title" %}{% trans "Category" %}{% trans "Exam" %}{% trans "Single attempt" %}
{{ quiz.title }}{{ quiz.category }}{{ quiz.exam_paper }}{{ quiz.single_attempt }} + + {% trans "View details" %} + +
+ + {% else %} +

{% trans "There are no available quizzes" %}.

+ {% endif %} +{% endblock %} diff --git a/quiz-app/quiz/templates/quiz/sitting_detail.html b/quiz-app/quiz/templates/quiz/sitting_detail.html new file mode 100644 index 0000000..6977d86 --- /dev/null +++ b/quiz-app/quiz/templates/quiz/sitting_detail.html @@ -0,0 +1,68 @@ +{% extends 'base.html' %} +{% load i18n %} +{% load quiz_tags %} +{% block title %} +{% trans "Results of " %} {{ sitting.quiz.title }} {% trans "for " %} {{ sitting.user }} +{% endblock %} + +{% block content %} + +{% if sitting.user.username == request.user.username or request.user.is_superuser %} + +

{% trans "Quiz title" %}: {{ sitting.quiz.title }}

+

{% trans "Catégory" %}: {{ sitting.quiz.category }}

+

{{ sitting.quiz.description }}

+
+

{% trans "User" %}: {{ sitting.user }}

+

{% trans "Completed" %}: {{ sitting.end|date }}

+

{% trans "Score" %}: {{ sitting.get_percent_correct }}%

+ + + + + + + + + + + + + + + +{% for question in questions %} + + + + + {% if question.explanation %} + + {% endif %} + +{% endfor %} + + + +
{% trans "Question" %}{% trans "User answer" %}RéponseExplication
+ {{ question.content }} + {% if question.figure %} +
{{ question.figure }}
+ {% endif %} +
{{ question|answer_choice_to_string:question.user_answer }} + {% if question.id in sitting.get_incorrect_questions %} +

{% trans "Incorrect" %}

+ {% else %} +

{% trans "Correct" %}

+ {% endif %} +
{{ question.explanation }}
+{% else %} +

{% trans "You don't have access to this page" %}

+{% endif %} +{% endblock %} + \ No newline at end of file diff --git a/quiz-app/quiz/templates/quiz/sitting_list.html b/quiz-app/quiz/templates/quiz/sitting_list.html new file mode 100644 index 0000000..1e3377d --- /dev/null +++ b/quiz-app/quiz/templates/quiz/sitting_list.html @@ -0,0 +1,64 @@ +{% extends 'base.html' %} +{% load i18n %} +{% block title %}{% trans "All Quizzes" %}{% endblock %} + +{% block content %} + + +{% if user.is_superuser %} + +

{% trans "List of complete exams" %}

+ {% if sitting_list %} + + + + + + + + + + + + + + + + + + + + + + + + + + + {% for sitting in sitting_list %} + + + + + + + + + + {% endfor %} + + + +
{% trans "User" %}{% trans "Quiz" %}{% trans "Completed" %}{% trans "Duration(in minutes)" %}{% trans "Score" %}(%)
{{ sitting.user }}{{ sitting.quiz }}{{ sitting.end|date }}{{ sitting.get_duration }}{{ sitting.get_percent_correct }} + + {% trans "View details" %} + +
+ {% else %} +

{% trans "There are no matching quizzes" %}.

+ {% endif %} + +{% else %} +

{% trans "You don't have access to this page" %}

+{% endif %} +{% endblock %} diff --git a/quiz-app/quiz/templates/result.html b/quiz-app/quiz/templates/result.html new file mode 100644 index 0000000..1a9831c --- /dev/null +++ b/quiz-app/quiz/templates/result.html @@ -0,0 +1,99 @@ +{% extends "base.html" %} +{% load i18n %} + +{% load quiz_tags %} + +{% block title %} {{ quiz.title}} {% endblock %} +{% block description %} {% trans "Exam results for" %} {{ quiz.title }} {% endblock %} + +{% block content %} + + {% if previous.answers %} + +

{% trans "The previous question" %}:

+

{{ previous.previous_question }}

+

Your answer was + + {{ previous.previous_outcome|yesno:"correct,incorrect" }} + +

+ {% include 'correct_answer.html' %} +

{% trans "Explanation" %}:

+
+

{{ previous.previous_question.explanation }}

+
+
+ + {% endif %} + + {% if max_score %} + +
+

{% trans "Exam results" %}

+

+ {% trans "Exam title" %}: + {{ quiz.title }}

+ +

+ {% trans "You answered" %} {{ score }} {% trans "questions correctly on " %} {{ max_score }}, {% trans "giving you" %} {{ percent }} {% trans " of correct answers" %} +

+ + {% if quiz.pass_mark %} +
+

{{ sitting.result_message }}

+
+ + {% endif %} + +

{% trans "Review the questions below and try the exam again in the future"%}.

+ + {% if user.is_authenticated %} + +

{% trans "The result of this exam will be stored in your progress section so you can review and monitor your progression" %}.

+ + {% endif %} +
+ + + {% endif %} + + +
+ + {% if possible %} + +

+ {% trans "Your session score is" %} {{ session }} {% trans "out of a possible" %} {{ possible }} +

+ +
+ + {% endif %} + + {% if questions %} + + {% for question in questions %} + +

+ {{ question.content }} +

+ + {% correct_answer_for_all question %} + + {% if question.user_answer %} +

{% trans "Your answer" %}: {{ question|answer_choice_to_string:question.user_answer }}

+ {% endif %} + +

{% trans "Explanation" %}:

+
+

{{ question.explanation|safe }}

+
+ +
+ + {% endfor %} + + {% endif %} + + +{% endblock %} diff --git a/quiz-app/quiz/templates/single_complete.html b/quiz-app/quiz/templates/single_complete.html new file mode 100644 index 0000000..7dba18b --- /dev/null +++ b/quiz-app/quiz/templates/single_complete.html @@ -0,0 +1,18 @@ +{% extends "base.html" %} +{% load i18n %} + +{% load quiz_tags %} + +{% block title %} {{ quiz.title }} {% endblock %} +{% block description %} {{ quiz.title }} - {{ quiz.description }} {% endblock %} + +{% block content %} + + +{% if user.is_authenticated %} +

{% trans "You already did this quiz" %}.

+{% else %} +

{% trans "This quiz is only accessible to authentified users" %}.

+{% endif %} + +{% endblock %} diff --git a/quiz-app/quiz/templates/view_quiz_category.html b/quiz-app/quiz/templates/view_quiz_category.html new file mode 100644 index 0000000..29aeda6 --- /dev/null +++ b/quiz-app/quiz/templates/view_quiz_category.html @@ -0,0 +1,23 @@ +{% extends 'base.html' %} +{% load i18n %} +{% block title %}{% trans "Quizzes related to" %} {{ category.category }}{% endblock %} + +{% block content %} +

{% trans "Quizzes in the" %} {{ category.category }} {% trans "category" %}

+ + {% with object_list as quizzes %} + {% if quizzes %} + + {% else %} +

{% trans "There are no quizzes" %}

+ {% endif %} + {% endwith %} +{% endblock %} diff --git a/quiz-app/quiz/templatetags/__init__.py b/quiz-app/quiz/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/quiz-app/quiz/templatetags/__pycache__/__init__.cpython-311.pyc b/quiz-app/quiz/templatetags/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..af53ac6d16f79313b0e8f86da23245594203d6a1 GIT binary patch literal 181 zcmZ3^%ge<81pVuI(?IlN5CH>>P{wCAAY(d13PUi1CZpd*ZCdcJO9X=ar^h|og`kf@j?85>K!yVl7qb9~6oz01O-8?!3`HPe1o6vMzdXMvySN}R zIn`7@B`Yy6J-@Itv#LrTMCzBM<`(26mZX*>rWfnS$7kkcmc+;F6;$5hu*uC&Da}c> K0~z-jh#3H5Dk1j( literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/templatetags/__pycache__/__init__.cpython-38.pyc b/quiz-app/quiz/templatetags/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b51eb4dd576b67f4dd39aca11b6d00d6ca2aa04b GIT binary patch literal 144 zcmWIL<>g`kg2&S~B!FoUfeaXd90wpSW&si@48aVVjD9N_ia^2$;+Ls@d45rLaY15o zs*!$5R$^Xyeqm{5Rh2%7)GtZREyzhMNi9iCFV>Hb&&g`k0z3N+Ng(<$h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vMzdXMvySN}R zIn_u%B`Yy6Jzux5G_y({Oq8VN7UU$Bq?RP67wgBzXXa&=#K-FuRNmsS$<0qG%}KQb J8TT2882~jWAyxnY literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/templatetags/__pycache__/quiz_tags.cpython-311.pyc b/quiz-app/quiz/templatetags/__pycache__/quiz_tags.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..759527ef488122ab8b894169fe199b9b090ed532 GIT binary patch literal 1289 zcmZWny-(Xf6u-0c;bIaB6haHACSr;Bh*S`&MAd;xph^`>nP9L?d`TP}JKQ;ZHBmD# zbSvt@(jgOVMWwF%83~F+bQ2O&w^VGM`s~CJX-?;N&+qQ{?%wbHzC|Jf2*&4Mk@TH_ z(4G6^k3h${KLh6+=}5;W%HwT}k$?!!!TI*MfaTKvLE9n`t3I|Hbsb&M#h-x-z+HB+ zdhitehYu1l7xIC6sBb^4hu@=w^xHj>z+7@jzF=w&IT=mal#-OAY8E>rbTRAX%`G?) zakM?c)Rb*GtXHai_WwG>tsgihr zsHh9&fCXHX1A3q&7`PPBgI@)xDRgo)pui|lJ4F~HOmVVA=~Sh(t5S9~Ms&rt6ivw( z2gFkLi-b7_1nk`$RPSXl(jK$}F_>aloiy{{rfr&U=PoirJpdo=o>2XSY-^o|+bLK= z;8KB-1H&#dKH|dELyf6jP(tK#hWOMoF2WBN3_TI#;STX!@)OfAkjJB4uxc92p^qTQ zf?!+wAL!0igf|epLl6p?FGWNoL(Kt!EWR)* zSUBe6y~0qTepNF~It-V&N@FUR3Th3aq1a6{ejSb1qqB|ZY-OW4Hg&%9Wv4c?awXKq zRvTlhmCa^&==8&xRSVC;Y);SAq-QX1r{k`D8n15DCgz**<(7yCS6ZlTf-CoM1?thB zt26|Nf zMWK&jp-+4h1BZ=+si0eV^hTb$mgl~&*X5;#yi^M;(Gl3%Oh`P`rklF&>9^v6AM>cH5{wswFX{m2@woLgZU#O;SKJF Z6abt)ZwVMLLm%+6yFL6c;6=R${sVi~MZy38 literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/templatetags/__pycache__/quiz_tags.cpython-37.pyc b/quiz-app/quiz/templatetags/__pycache__/quiz_tags.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d2ec7a4fa3199cbb620a791fcde26440c02ad9f6 GIT binary patch literal 844 zcmY*Xy>8nu5GE;ERvkP236QKBx(F!ZshNVJXn{^emS*z8$|5b(kwu53;>3`rcI_K< zu*WWaAg%!l^c6bwNZCevz@2y}-giGA-wg&m1oG?X=jTU)(4%wq62jpvsJ;Zl5W^*! z;}OP);|Hg*i@u^Sc+`Pt#JVi@UY9-jgwoz`KtL(BvElPYnHj!1 z$)!>}H#DpClB@HnnU~jaV_>oyu4yhS!|zQFJ$dPXb^W{t)fZqIyg^&ECJowPh6}VM z>!86i(gZh=ddbK-tU?y7Ll!nf;3j09?*uxDR`8aA|azX?jRX1AA2P{lc^jz_CQIv}3!wb=i0itlYvz$A@HE3T;#u zf zeGCRgG4A6Yjz~x%te!&Tz@lR_0QD@ohX?EdlUoeT;45JNtlb68r&8pc8cCsRQ57js zeYkF;_P?K?HLj$32IdS@`{zQuf0f2IYUffeY`Y)DSY_(L#)=oP4X*3}_EXjxn04d% kUTriHCH(Uk|I~3iQ?8heFXxigC4YlmMK^b!#KGzFzeAttZ2$lO literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/templatetags/__pycache__/quiz_tags.cpython-38.pyc b/quiz-app/quiz/templatetags/__pycache__/quiz_tags.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a6a453eb492748f046ba1f215ef05a455bf00955 GIT binary patch literal 862 zcmY*Xv2NQi5G5&DQe8U@8lYJ42nQ-7gLdz5S=IpB`GBk%F<9zXZ{T?F#*b0;_W#ix18vsJ;Nh5W@wU z;~~a~;|$ng21NDW_| zWKt=f8Jd=Q$<^7!%!_Nd(KqRgYnsW@@H>-1T?gsF&eilDRG)*X@djM2z_rghKM7P5tnRuo$U@1CYt40RCOqEN6Swumqf~Pi z%Q8;mT-@?9zNxr20s?Y0g}NIAF>X?KDMH7h+`+to?O3XLi(P51ngn}txIy=T`uc+n zTL_&H8!Z&S6|&OyrAwpBRMSIJ;@Rgp-w#b&4;)JbOFA~(jm$=SVC4ojJUS%PLTIBx z2>wE<56j>4!BVQ3UZfd+J7Cka%;ilbR;z)tgFRO!&2OAohey$Eye0aOu7wa0q;EG4O-0;2)f}6QS8eii}euDby~? zJRzzF*KN?AH+{6`2*S#}ehR9ak3$;&Dv4~+cBfp}h9AX9rRv^BisvvBu52HsR8$)H qbxk()+F&dSIBPH-z2hdQ++#Mnm`hd_{2g{Lx-NPo@}Ti!AO8o~rt1>` literal 0 HcmV?d00001 diff --git a/quiz-app/quiz/templatetags/__pycache__/quiz_tags.cpython-39.pyc b/quiz-app/quiz/templatetags/__pycache__/quiz_tags.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b14013e3b441af509e2d09b4081c79999046076 GIT binary patch literal 862 zcmY*Xy>8nu5GE;EQe8U@8lYJ?TK!;30QlLPmB1By2pN_Jw%Q@i#J zI@n{kJ`dMSeT6RVk+O~CfIIO{yzhQKvVOmdKrXL-j~)p^kJfoAJ~$si^#vG?IL^@w z4>3jpZ^#x6J>gA#PPoVYAB1;!@Ev`_!wy6P9`eX}A%F1|CEY)OfD&w?O3dattHkOg zEtL{!MOmSjLY+;jS$+dI`W3qsnxzN>|*ulJm+R%W6-u(Asq9vzZtE_J0s z2>wE<51+s1gJr31^_->R!+=j&k(KZ7YPlLXv*)T}nRXFsPiON7^X55u6eguC&jY~J z$6!zp;U4bdfcPZ9[\w|\W-]+)/$', + view=ViewQuizListByCategory.as_view(), + name='quiz_category_list_matching'), + +# PROGRESS VIEW + url(r'^progress/$', + view=QuizUserProgressView.as_view(), + name='quiz_progress'), + +# PROGRESS QUIZ DETAILS + #url(r'^marking/(?P[\d.]+)/$', + #view=QuizMarkingDetail.as_view(), + #name='quiz_marking_detail'), + + url(r'^marking/$', + view=QuizMarkingList.as_view(), + name='quiz_marking'), + + url(r'^marking/(?P[\d.]+)/$', + view=QuizMarkingDetail.as_view(), + name='quiz_marking_detail'), + + # passes variable 'quiz_name' to quiz_take view + url(r'^(?P[\w-]+)/$', + view=QuizDetailView.as_view(), + name='quiz_start_page'), + + url(r'^(?P[\w-]+)/take/$', + view=QuizTake.as_view(), + name='quiz_question'), + +] diff --git a/quiz-app/quiz/views.py b/quiz-app/quiz/views.py new file mode 100644 index 0000000..0abcd17 --- /dev/null +++ b/quiz-app/quiz/views.py @@ -0,0 +1,389 @@ +import random + +from django.contrib.auth.decorators import login_required, permission_required +from django.core.exceptions import PermissionDenied +from django.shortcuts import get_object_or_404, render +from django.utils.decorators import method_decorator +from django.views.generic import DetailView, ListView, TemplateView, FormView + +from .forms import QuestionForm, EssayForm +from .models import Quiz, Category, Progress, Sitting, Question + +from essay.models import Essay_Question + +#from django.core.mail import send_mail + +#send_mail('Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'], fail_silently=False) + +class QuizMarkerMixin(object): + @method_decorator(login_required) + @method_decorator(permission_required('quiz.view_sittings')) + def dispatch(self, *args, **kwargs): + return super(QuizMarkerMixin, self).dispatch(*args, **kwargs) + + +class SittingFilterTitleMixin(object): + def get_queryset(self): + queryset = super(SittingFilterTitleMixin, self).get_queryset() + quiz_filter = self.request.GET.get('quiz_filter') + if quiz_filter: + queryset = queryset.filter(quiz__title__icontains=quiz_filter) + + return queryset + + +class QuizListView(ListView): + model = Quiz + + def get_queryset(self): + queryset = super(QuizListView, self).get_queryset() + return queryset.filter(draft=False) + + +class QuizDetailView(DetailView): + model = Quiz + slug_field = 'url' + + def get(self, request, *args, **kwargs): + self.object = self.get_object() + + if self.object.draft and not request.user.has_perm('quiz.change_quiz'): + raise PermissionDenied + + context = self.get_context_data(object=self.object) + return self.render_to_response(context) + + +class CategoriesListView(ListView): + model = Category + + +class ViewQuizListByCategory(ListView): + model = Quiz + template_name = 'view_quiz_category.html' + + def dispatch(self, request, *args, **kwargs): + self.category = get_object_or_404( + Category, + category=self.kwargs['category_name'] + ) + + return super(ViewQuizListByCategory, self).\ + dispatch(request, *args, **kwargs) + + def get_context_data(self, **kwargs): + context = super(ViewQuizListByCategory, self)\ + .get_context_data(**kwargs) + + context['category'] = self.category + return context + + def get_queryset(self): + queryset = super(ViewQuizListByCategory, self).get_queryset() + return queryset.filter(category=self.category, draft=False) + + +class QuizUserProgressView(TemplateView): + template_name = 'progress.html' + + @method_decorator(login_required) + def dispatch(self, request, *args, **kwargs): + return super(QuizUserProgressView, self)\ + .dispatch(request, *args, **kwargs) + + def get_context_data(self, **kwargs): + context = super(QuizUserProgressView, self).get_context_data(**kwargs) + progress, c = Progress.objects.get_or_create(user=self.request.user) + context['cat_scores'] = progress.list_all_cat_scores + context['exams'] = progress.show_exams() + return context + + +class QuizMarkingList(QuizMarkerMixin, SittingFilterTitleMixin, ListView): + model = Sitting + + def get_queryset(self): + queryset = super(QuizMarkingList, self).get_queryset()\ + .filter(complete=True) + + user_filter = self.request.GET.get('user_filter') + if user_filter: + queryset = queryset.filter(user__username__icontains=user_filter) + + return queryset + + +class QuizMarkingDetail(QuizMarkerMixin, DetailView): + model = Sitting + + def post(self, request, *args, **kwargs): + sitting = self.get_object() + + q_to_toggle = request.POST.get('qid', None) + if q_to_toggle: + q = Question.objects.get_subclass(id=int(q_to_toggle)) + if int(q_to_toggle) in sitting.get_incorrect_questions: + sitting.remove_incorrect_question(q) + else: + sitting.add_incorrect_question(q) + + return self.get(request) + + def get_context_data(self, **kwargs): + context = super(QuizMarkingDetail, self).get_context_data(**kwargs) + context['questions'] =\ + context['sitting'].get_questions(with_answers=True) + return context + + +class QuizTake(FormView): + form_class = QuestionForm + template_name = 'question.html' + result_template_name = 'result.html' + single_complete_template_name = 'single_complete.html' + + def dispatch(self, request, *args, **kwargs): + self.quiz = get_object_or_404(Quiz, url=self.kwargs['quiz_name']) + if self.quiz.draft and not request.user.has_perm('quiz.change_quiz'): + raise PermissionDenied + + try: + self.logged_in_user = self.request.user.is_authenticated() + except TypeError: + self.logged_in_user = self.request.user.is_authenticated + + if self.logged_in_user: + self.sitting = Sitting.objects.user_sitting(request.user, + self.quiz) + else: + self.sitting = self.anon_load_sitting() + + if self.sitting is False: + return render(request, self.single_complete_template_name) + + return super(QuizTake, self).dispatch(request, *args, **kwargs) + + def get_form(self, *args, **kwargs): + if self.logged_in_user: + self.question = self.sitting.get_first_question() + self.progress = self.sitting.progress() + else: + self.question = self.anon_next_question() + self.progress = self.anon_sitting_progress() + + if self.question.__class__ is Essay_Question: + form_class = EssayForm + else: + form_class = self.form_class + + return form_class(**self.get_form_kwargs()) + + def get_form_kwargs(self): + kwargs = super(QuizTake, self).get_form_kwargs() + + return dict(kwargs, question=self.question) + + def form_valid(self, form): + if self.logged_in_user: + self.form_valid_user(form) + if self.sitting.get_first_question() is False: + return self.final_result_user() + else: + self.form_valid_anon(form) + if not self.request.session[self.quiz.anon_q_list()]: + return self.final_result_anon() + + self.request.POST = {} + + return super(QuizTake, self).get(self, self.request) + + def get_context_data(self, **kwargs): + context = super(QuizTake, self).get_context_data(**kwargs) + context['question'] = self.question + context['quiz'] = self.quiz + if hasattr(self, 'previous'): + context['previous'] = self.previous + if hasattr(self, 'progress'): + context['progress'] = self.progress + return context + + def form_valid_user(self, form): + progress, c = Progress.objects.get_or_create(user=self.request.user) + guess = form.cleaned_data['answers'] + is_correct = self.question.check_if_correct(guess) + + if is_correct is True: + self.sitting.add_to_score(1) + progress.update_score(self.question, 1, 1) + else: + self.sitting.add_incorrect_question(self.question) + progress.update_score(self.question, 0, 1) + + if self.quiz.answers_at_end is not True: + self.previous = {'previous_answer': guess, + 'previous_outcome': is_correct, + 'previous_question': self.question, + 'answers': self.question.get_answers(), + 'question_type': {self.question + .__class__.__name__: True}} + else: + self.previous = {} + + self.sitting.add_user_answer(self.question, guess) + self.sitting.remove_first_question() + + def final_result_user(self): + results = { + 'quiz': self.quiz, + 'score': self.sitting.get_current_score, + 'max_score': self.sitting.get_max_score, + 'percent': self.sitting.get_percent_correct, + 'sitting': self.sitting, + 'previous': self.previous, + } + + self.sitting.mark_quiz_complete() + + if self.quiz.answers_at_end: + results['questions'] =\ + self.sitting.get_questions(with_answers=True) + results['incorrect_questions'] =\ + self.sitting.get_incorrect_questions + + if self.quiz.exam_paper is False: + self.sitting.delete() + + return render(self.request, self.result_template_name, results) + + def anon_load_sitting(self): + if self.quiz.single_attempt is True: + return False + + if self.quiz.anon_q_list() in self.request.session: + return self.request.session[self.quiz.anon_q_list()] + else: + return self.new_anon_quiz_session() + + def new_anon_quiz_session(self): + """ + Sets the session variables when starting a quiz for the first time + as a non signed-in user + """ + self.request.session.set_expiry(259200) # expires after 3 days + questions = self.quiz.get_questions() + question_list = [question.id for question in questions] + + if self.quiz.random_order is True: + random.shuffle(question_list) + + if self.quiz.max_questions and (self.quiz.max_questions + < len(question_list)): + question_list = question_list[:self.quiz.max_questions] + + # session score for anon users + self.request.session[self.quiz.anon_score_id()] = 0 + + # session list of questions + self.request.session[self.quiz.anon_q_list()] = question_list + + # session list of question order and incorrect questions + self.request.session[self.quiz.anon_q_data()] = dict( + incorrect_questions=[], + order=question_list, + ) + + return self.request.session[self.quiz.anon_q_list()] + + def anon_next_question(self): + next_question_id = self.request.session[self.quiz.anon_q_list()][0] + return Question.objects.get_subclass(id=next_question_id) + + def anon_sitting_progress(self): + total = len(self.request.session[self.quiz.anon_q_data()]['order']) + answered = total - len(self.request.session[self.quiz.anon_q_list()]) + return (answered, total) + + def form_valid_anon(self, form): + guess = form.cleaned_data['answers'] + is_correct = self.question.check_if_correct(guess) + + if is_correct: + self.request.session[self.quiz.anon_score_id()] += 1 + anon_session_score(self.request.session, 1, 1) + else: + anon_session_score(self.request.session, 0, 1) + self.request\ + .session[self.quiz.anon_q_data()]['incorrect_questions']\ + .append(self.question.id) + + self.previous = {} + if self.quiz.answers_at_end is not True: + self.previous = {'previous_answer': guess, + 'previous_outcome': is_correct, + 'previous_question': self.question, + 'answers': self.question.get_answers(), + 'question_type': {self.question + .__class__.__name__: True}} + + self.request.session[self.quiz.anon_q_list()] =\ + self.request.session[self.quiz.anon_q_list()][1:] + + def final_result_anon(self): + score = self.request.session[self.quiz.anon_score_id()] + q_order = self.request.session[self.quiz.anon_q_data()]['order'] + max_score = len(q_order) + percent = int(round((float(score) / max_score) * 100)) + session, session_possible = anon_session_score(self.request.session) + if score is 0: + score = "0" + + results = { + 'score': score, + 'max_score': max_score, + 'percent': percent, + 'session': session, + 'possible': session_possible + } + + del self.request.session[self.quiz.anon_q_list()] + + if self.quiz.answers_at_end: + results['questions'] = sorted( + self.quiz.question_set.filter(id__in=q_order) + .select_subclasses(), + key=lambda q: q_order.index(q.id)) + + results['incorrect_questions'] = ( + self.request + .session[self.quiz.anon_q_data()]['incorrect_questions']) + + else: + results['previous'] = self.previous + + del self.request.session[self.quiz.anon_q_data()] + + return render(self.request, 'result.html', results) + + +def anon_session_score(session, to_add=0, possible=0): + """ + Returns the session score for non-signed in users. + If number passed in then add this to the running total and + return session score. + + examples: + anon_session_score(1, 1) will add 1 out of a possible 1 + anon_session_score(0, 2) will add 0 out of a possible 2 + x, y = anon_session_score() will return the session score + without modification + + Left this as an individual function for unit testing + """ + if "session_score" not in session: + session["session_score"], session["session_score_possible"] = 0, 0 + + if possible > 0: + session["session_score"] += to_add + session["session_score_possible"] += possible + + return session["session_score"], session["session_score_possible"] diff --git a/quiz-app/registration/locale/fr/LC_MESSAGES/django.mo b/quiz-app/registration/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..20dc403f5c27d68a72f4199b85810ec96ce92fa0 GIT binary patch literal 2072 zcmZvc%WoS+9LEPJFPBFs6(F8J5K;(b9m0ib)0Dcg6D({eavoJVG1(p4)2wIQnOP@} z#1U>>kT}4J6T*lK65K)Nz=cDRxbhcpgWmg{wbxFpjNaNfiHmz4>EQEdw`uqL> z-v<8%p9a|@jI96*;6?B{==IzHp95RqCGb;l5gda4zB}M+;Q!!f;6((z1bzb+!Qa6* z!T&(W%5nl^3lg*C_4vE;g`={3KM5{OUY-M=!Gko6^-kVD4*IAAG9)y&w^Zsv1 zk?3-n(2;Z6!6=9NMyvH`ys{J(1BN zb%YUqH_}Rp$PsUIso1(!Eor*5qeK778|3spR=~9*EzH`2m8G2=!YaxMGf^1nzA%G{ z@{nz4)7H*GMJ}7wbh|BL(y61@SwkF6cPM1rd2HiQTL>Sfc%KMv1tBzCG|;Ibb;>c{ zZs{b^N12dBszc<%{|wnKa+hB}OH|b13PQ5oxy)wXN8GAKM}3~ixJY$AI1nV=%%3Ml z@OVI}71*CBVwRWvkE;lPXJ6B<<+9`S^*cH4RQmxe3-1ADV)N0ofSww5hY@ncCtygBU zSBmcz(1d6mTsP=Jj}ymkxtE|}R|&;47>2dI-HqV#%+AYd2@_OQq+_YtAzeO@uCSe? zh9?1z8z3iu5dvBG-|E|5I=qjx&trpl`K6OZOM2WCx$E@dj&y0prNhi@6C?@r_ z!%%g#qj=nBs11#VZZt&0_Vr*i^uu>MMf*gOvJ;#i=E?X7lh2OQB=>})FgNH|iJNPJi#8N`SK`CzrV?B!+1Mjhg@pSg@a|@ wKGQ)ho*uJ(Ut~1m2|BBbj|EbW%erXomh>e&8}8U#EoKh*YGj@9y`Afedq+NOv;Y7A literal 0 HcmV?d00001 diff --git a/quiz-app/registration/locale/fr/LC_MESSAGES/django.po b/quiz-app/registration/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 0000000..d87e6eb --- /dev/null +++ b/quiz-app/registration/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,109 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-05-28 17:45+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: registration/templates/base_generic.html:20 +msgid "Hi " +msgstr "Bonjour " + +#: registration/templates/base_generic.html:21 +msgid "Disconnect" +msgstr "Se déconnecter" + +#: registration/templates/base_generic.html:24 +msgid "Connect" +msgstr "Se connecter" + +#: registration/templates/registration/logged_out.html:5 +#, fuzzy +msgid "Logged out" +msgstr "Déconnecté !" + +#: registration/templates/registration/logged_out.html:6 +msgid "Click here to connect again" +msgstr "Clique ici pour te reconnecter" + +#: registration/templates/registration/login.html:7 +msgid "Wrong username or/and password" +msgstr "Combinaison utilisateur/mot de passe faux" + +#: registration/templates/registration/login.html:12 +msgid "You don't have access to this page" +msgstr "Vous n'avez pas accès à cette page" + +#: registration/templates/registration/login.html:14 +msgid "Connect to see this page" +msgstr "Connectez-vous pour accéder à cette page" + +#: registration/templates/registration/login.html:36 +msgid "Forgotten password" +msgstr "Mot de passe oublié" + +#: registration/templates/registration/password_reset_complete.html:5 +msgid "The password has been changed" +msgstr "Le mot de passe a été changé" + +#: registration/templates/registration/password_reset_complete.html:6 +#, fuzzy +msgid "Reconnect?" +msgstr "Se connecter" + +#: registration/templates/registration/password_reset_confirm.html:6 +msgid "Please enter your new password" +msgstr "Veuillez entrez le nouveau mot de passe" + +#: registration/templates/registration/password_reset_confirm.html:12 +msgid "New password :" +msgstr "Nouveau mot de passe :" + +#: registration/templates/registration/password_reset_confirm.html:17 +msgid "Confirm password :" +msgstr "Confirmez le mot de passe :" + +#: registration/templates/registration/password_reset_confirm.html:27 +msgid "Password reset failed :" +msgstr "Réinitialisation du mot de passe échouée" + +#: registration/templates/registration/password_reset_confirm.html:28 +msgid "" +"The reset password link wasn't valid. Maybe it has been already used. Please " +"ask to reset password again" +msgstr "" +"Le lien de réinitialisation du mot de passe est invalide. Il a peux être " +"été déjà utilisé. Veuillez réitérer votre requête" + +#: registration/templates/registration/password_reset_done.html:5 +msgid "" +"An email with the reset password instructions has been sent to the given " +"email" +msgstr "" +"Un email avec les instructions pour réinitialiser votre mot de passe a été " +"envoyé" + +#: registration/templates/registration/password_reset_email.html:3 +msgid "You asked to reset your password" +msgstr "Vous avez demandé à modifier le mot de passe" + +#: registration/templates/registration/password_reset_email.html:3 +msgid "Please follow the link below :" +msgstr "Veuillez suivre le lien ci-dessous" + +#: registration/templates/registration/password_reset_form.html:5 +msgid "Enter the recovery email :" +msgstr "Veuillez entrer l'adresse email de récupération" diff --git a/quiz-app/registration/static/css/style.css b/quiz-app/registration/static/css/style.css new file mode 100644 index 0000000..3df87fc --- /dev/null +++ b/quiz-app/registration/static/css/style.css @@ -0,0 +1,17 @@ +@import url('https://fonts.googleapis.com/css2?family=Play&display=swap'); + +/* Appliquer les polices aux éléments du document */ +body { + font-family: 'Play'; /* Aladin pour le corps du document */ + /* font-size: 1.5em; */ +} + +.button-link { + background: none; + border: none; + color: #497AA1; + text-decoration: underline; + cursor: pointer; + padding: 0; + font: inherit; +} \ No newline at end of file diff --git a/quiz-app/registration/static/favicon.ico b/quiz-app/registration/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..02fb53aba1b2b7ffa328b778040531cb31148939 GIT binary patch literal 9892 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 literal 0 HcmV?d00001 diff --git a/quiz-app/registration/static/images/wp.jpg b/quiz-app/registration/static/images/wp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bfb2c9f15e44f612da9da6bd73037dfd45bd0612 GIT binary patch literal 75729 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ξ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%0AvrcKheDOGK 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 + + + {% block title %}Connexion{% endblock %} + + + + + {% load static %} + + + + + +
+ +
+ + \ No newline at end of file diff --git a/quiz-app/registration/templates/registration/logged_out.html b/quiz-app/registration/templates/registration/logged_out.html new file mode 100644 index 0000000..25e3c38 --- /dev/null +++ b/quiz-app/registration/templates/registration/logged_out.html @@ -0,0 +1,7 @@ +{% extends "base_generic.html" %} +{% load i18n %} + +{% block content %} +

{% trans "Logged out" %}

+ {% trans "Click here to connect again" %} +{% endblock %} \ No newline at end of file diff --git a/quiz-app/registration/templates/registration/login.html b/quiz-app/registration/templates/registration/login.html new file mode 100644 index 0000000..a18947e --- /dev/null +++ b/quiz-app/registration/templates/registration/login.html @@ -0,0 +1,38 @@ +{% extends "base_generic.html" %} +{% load i18n %} + +{% block content %} + + {% if form.errors %} +

{% trans "Wrong username or/and password" %}

+ {% endif %} + + {% if next %} + {% if user.is_authenticated %} +

{% trans "You don't have access to this page" %}

+ {% else %} +

{% trans "Connect to see this page" %}

+ {% endif %} + {% endif %} +
+
+ {% csrf_token %} + + + + + + + + + +
{{ form.username.label_tag }}{{ form.username }}
{{ form.password.label_tag }}{{ form.password }}

+
+ +
+

+ + {# Assumes you setup the password_reset view in your URLconf #} + + +{% endblock %} \ No newline at end of file diff --git a/quiz-app/registration/templates/registration/password_reset_complete.html b/quiz-app/registration/templates/registration/password_reset_complete.html new file mode 100644 index 0000000..50120fc --- /dev/null +++ b/quiz-app/registration/templates/registration/password_reset_complete.html @@ -0,0 +1,7 @@ +{% extends "base_generic.html" %} +{% load i18n %} + +{% block content %} +

{% trans "The password has been changed" %}

+

{% trans "Reconnect?" %}

+{% endblock %} \ No newline at end of file diff --git a/quiz-app/registration/templates/registration/password_reset_confirm.html b/quiz-app/registration/templates/registration/password_reset_confirm.html new file mode 100644 index 0000000..383429d --- /dev/null +++ b/quiz-app/registration/templates/registration/password_reset_confirm.html @@ -0,0 +1,30 @@ +{% extends "base_generic.html" %} +{% load i18n %} + +{% block content %} + {% if validlink %} +

{% trans "Please enter your new password" %}

+
+ {% csrf_token %} + + + + + + + + + + + + + +
{{ form.new_password1.errors }} + {{ form.new_password1 }}
{{ form.new_password2.errors }} + {{ form.new_password2 }}
+
+ {% else %} +

{% trans "Password reset failed :" %}

+

{% trans "The reset password link wasn't valid. Maybe it has been already used. Please ask to reset password again" %}.

+ {% endif %} +{% endblock %} \ No newline at end of file diff --git a/quiz-app/registration/templates/registration/password_reset_done.html b/quiz-app/registration/templates/registration/password_reset_done.html new file mode 100644 index 0000000..9c06616 --- /dev/null +++ b/quiz-app/registration/templates/registration/password_reset_done.html @@ -0,0 +1,6 @@ +{% extends "base_generic.html" %} +{% load i18n %} + +{% block content %} +

{% trans "An email with the reset password instructions has been sent to the given email" %}

+{% endblock %} \ No newline at end of file diff --git a/quiz-app/registration/templates/registration/password_reset_email.html b/quiz-app/registration/templates/registration/password_reset_email.html new file mode 100644 index 0000000..6874612 --- /dev/null +++ b/quiz-app/registration/templates/registration/password_reset_email.html @@ -0,0 +1,4 @@ +{% load i18n %} + +{% trans "You asked to reset your password" %}. {% trans "Please follow the link below :" %} +{{ protocol}}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %} \ No newline at end of file diff --git a/quiz-app/registration/templates/registration/password_reset_form.html b/quiz-app/registration/templates/registration/password_reset_form.html new file mode 100644 index 0000000..511afba --- /dev/null +++ b/quiz-app/registration/templates/registration/password_reset_form.html @@ -0,0 +1,14 @@ +{% extends "base_generic.html" %} +{% load i18n %} + +{% block content %} +

{% trans "Enter the recovery email :" %}

+
+ {% csrf_token %} + {% if form.email.errors %} + {{ form.email.errors }} + {% endif %} +

{{ form.email }}

+ +
+{% endblock %} \ No newline at end of file diff --git a/quiz-app/requirements.txt b/quiz-app/requirements.txt new file mode 100644 index 0000000..e3415e2 --- /dev/null +++ b/quiz-app/requirements.txt @@ -0,0 +1,7 @@ +django>=2.2.9 +django-admin +django-model-utils>=3.1.1 +Pillow>=4.0.0 +psycopg2-binary +six +environs diff --git a/quiz-app/true_false/__pycache__/models.cpython-311.pyc b/quiz-app/true_false/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4f5f3622c490e9e23fd8a1adaa3d86c98c42d304 GIT binary patch literal 2440 zcmZ`*&2JM&6rcUF*I&Vqv`)Z;beVlxd~| zvJ>@Xcfq#QE9!x=Y}e|VYs{Mz)X6G!UHaHnO|7{M^GFT$2OH(@8`N|yOW+@1n}YoxQ!toD(awmcKs5`;deu%Xui&nYliCvKltSBAU=ymPY<@0JV*n1Gr*t{ag#4=I1=}c7)wNYvZCKUj*?zwNXVG~)Z3JMI{C(tD>*`O5b&NYD5-p9*~x0c!y`OQpWJ5yLodXuM~X>H}&=H&J5 z$?I+Tgf}+Xy0s?bCp_~K?4Qjg*);SFiDwrOA^?8!E2vXcvx){ab(TXp=2?(eEQ_O4 z2xk!RoFP+L3}p!TI)4E4Svqoht+G9G`laMuEO?h@UVhmjeBrZQ!q42;N9aVz$CqC& zy`6Zq@@A!zkdA!5O91u}R_}I364FG6^x(KCL7Md-$w_(0zXOPH(s7)2AtFc$oQgM9Zdop>0q_BSP3huI}z6akH_5?X>g_;K%`< zfv4dSIPel&`JJHl0G7V}J>%aVd*|oo##e!H8$199;0|a(9G^gpKZ8B+1>6Haz<;Bo;=;E!Q@(JF1aR8N)j z9LkfbCwH%XvCx>EJT$d!w3!sNd#Xb+XqQg4vS;1g7i1Qz(3hPqt*7N9Lk~;JA9s_{ z)orFp zn`w4z=&j}_biu|@qnUaRzktxt`8=eEShvc1*jA3%#(J8H_iE}^eXOVJ9sg#G_ygYn B##sOW literal 0 HcmV?d00001 diff --git a/quiz-app/true_false/locale/de/LC_MESSAGES/django.po b/quiz-app/true_false/locale/de/LC_MESSAGES/django.po new file mode 100644 index 0000000..1db9e72 --- /dev/null +++ b/quiz-app/true_false/locale/de/LC_MESSAGES/django.po @@ -0,0 +1,36 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-31 22:44+0000\n" +"PO-Revision-Date: 2019-03-07 21:12+0100\n" +"Last-Translator: Reiner Mayers\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Translated-Using: django-rosetta 0.7.6\n" +"Language-Team: \n" +"X-Generator: Poedit 2.0.6\n" + +#: apps/true_false/models.py:11 +msgid "Tick this if the question is true. Leave it blank for false." +msgstr "Markieren Sie, wenn die Frage stimmt. Freilassen wenn falsch." + +#: apps/true_false/models.py:14 +msgid "Correct" +msgstr "Korrekt" + +#: apps/true_false/models.py:42 +msgid "True/False Question" +msgstr "Wahr/Falsch Frage" + +#: apps/true_false/models.py:43 +msgid "True/False Questions" +msgstr "Wahr/Falsch Fragen" diff --git a/quiz-app/true_false/locale/es_CO/LC_MESSAGES/django.mo b/quiz-app/true_false/locale/es_CO/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..6e65a734c0e69ef9e17d07d102286c5c389a6b79 GIT binary patch literal 742 zcmZvZv2GJV5QYy30$mAoPz)Ui?d8rm#yaB$JB}jRiir+HfrK``v9r!)*V)~(fG2>G zf`_2sDX3_81PWe)mVYlHZZgt$vpf6G%-+uLJ6m5P*iG;N48bi>fnc9N*nbAk!545B z`~vsDA5dP4qQCIB!Q1Omvfn|dNFYeRf-q&!imD<6i*KdF|aJd)x=PG&Z(7V zZIPuS%_w`8?{uD|FbKsVuT|)=(RD=nRJ7WZb#mmSJJ3z`C%c==WJwwijP|U(C_b!E z-Sd0Dy{e?rJ(?X$>)7{S6(iBz=&aOk&Q|Q|nJJZC{Ir*7rzmEtl3I$Y)(_dC0;p8x=A}8<8f-aU{SC<#s80`!_7j+>Rf%P z$cf#%!9o0gq$Zk3izy=P4LL=Xq?P4Gt-VBy)@(~zqG>|IAK#W-8DibccGk!t36qcs Wrgo84GGS~@mTBf~F3%iYarh5j(bP!* literal 0 HcmV?d00001 diff --git a/quiz-app/true_false/locale/es_CO/LC_MESSAGES/django.po b/quiz-app/true_false/locale/es_CO/LC_MESSAGES/django.po new file mode 100644 index 0000000..5f8dbdf --- /dev/null +++ b/quiz-app/true_false/locale/es_CO/LC_MESSAGES/django.po @@ -0,0 +1,35 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2016 +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: django-quiz-true-false\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-10-01 17:56+0000\n" +"PO-Revision-Date: 2016-03-24 16:14-0500\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.4\n" +"Language-Team: \n" +"Last-Translator: \n" +"Language: es_CO\n" + +#: models.py:9 +msgid "Tick this if the question is true. Leave it blank for false." +msgstr "Marque esto si la pregunta es verdadera. Déjelo en blanco si es falsa." + +#: models.py:12 +msgid "Correct" +msgstr "Correcto" + +#: models.py:40 +msgid "True/False Question" +msgstr "Pregunta de Verdadero/Falso" + +#: models.py:41 +msgid "True/False Questions" +msgstr "Preguntas de Verdadero/Falso" diff --git a/quiz-app/true_false/locale/it/LC_MESSAGES/django.mo b/quiz-app/true_false/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..804756367deb09cf6c7d6c5b3b37668d1f6ef023 GIT binary patch literal 730 zcmZuv&2G~`5MB@n6;yYJ3pTJyL0C&qjQ(=h|q5?bjl5_`5xITLYq(%9uU40 z9uj^LzT9H$5Al7%``e5q#0BvV@sBJ1P0V`Q7?C-a%IpH%nY196!~#Cl!aAuHkjt4` z_>c&^6d)ZeN>mrH)CQJVTH&*lzV8hi8{S?$+vc-uYV>*!f2yQ&^n$PRJKH?O$>`&fcD|8m!K+YECf#lu3|{K$4B#~z;=?nDy6SY zap;XlmIq}i$RV7N*g6s^96|OT+hy371*JNG_!v`wUxl~0A z2Mg)0vo|f5wZW1PwOQF1RJFd^PSk>p*?FSiaRenY&HOW*4Hak TIRZ^puQx%n{-kk<|6Tt8UDMV6 literal 0 HcmV?d00001 diff --git a/quiz-app/true_false/locale/it/LC_MESSAGES/django.po b/quiz-app/true_false/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000..d06536c --- /dev/null +++ b/quiz-app/true_false/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,37 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-31 22:44+0000\n" +"PO-Revision-Date: 2015-10-31 22:12+0000\n" +"Last-Translator: b' <>'\n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Translated-Using: django-rosetta 0.7.6\n" + +#: apps/true_false/models.py:11 +msgid "Tick this if the question is true. Leave it blank for false." +msgstr "" +"Seleziona se la risposta è corretta. Lascia bianco se la risposta è falsa." + +#: apps/true_false/models.py:14 +msgid "Correct" +msgstr "Corretto" + +#: apps/true_false/models.py:42 +msgid "True/False Question" +msgstr "Domanda Vero/Falso" + +#: apps/true_false/models.py:43 +msgid "True/False Questions" +msgstr "DOmande Vero/Falso" diff --git a/quiz-app/true_false/locale/ru/LC_MESSAGES/django.mo b/quiz-app/true_false/locale/ru/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..2fb51e45d330769d2e549cca34857d67c909273d GIT binary patch literal 975 zcmaJ<&rcIU6do00(j$8G@H|LGm}R%Nic1$kD1@ZdN{aD1w$o)`yHjR&@fQcdiv}(l zJ*tU+0U;qF0qcKYX8!>Xo;-T<;KetsrkW66^5uQ=-uJ#YJJ~OT18)e%X~cQNEaD6z zK$v)rFy|MDBH|_DEaEfb9O5hD`w2pRU>-z#J4whB%s(+-#{A$EA)}Z-U`81kK$yUG zcc~6B zCc+7*FEbVK*juX2(eb{{T)4>deW(vW zcd)Q$T7c4BK;F@x(4muVLRP=lyIBixeiLPA+M5SdJTs+qTOS>7mep^KX_n|$e;J}@ Ue<9Y7z-$=nY5$R?+wgz!FBmgmQ~&?~ literal 0 HcmV?d00001 diff --git a/quiz-app/true_false/locale/ru/LC_MESSAGES/django.po b/quiz-app/true_false/locale/ru/LC_MESSAGES/django.po new file mode 100644 index 0000000..56385ce --- /dev/null +++ b/quiz-app/true_false/locale/ru/LC_MESSAGES/django.po @@ -0,0 +1,36 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: django-quiz-true-false\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-10-01 17:56+0000\n" +"PO-Revision-Date: 2015-08-21 19:40+0500\n" +"Last-Translator: Eugena Mihailikova \n" +"Language-Team: LANGUAGE \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 1.5.4\n" + +#: models.py:9 +msgid "Tick this if the question is true. Leave it blank for false." +msgstr "Отметьте, если ответ на вопрос 'Да'. Оставьте пустым, если ответ 'Нет'" + +#: models.py:12 +msgid "Correct" +msgstr "Правильно" + +#: models.py:40 +msgid "True/False Question" +msgstr "Вопрос с ответом Да/Нет" + +#: models.py:41 +msgid "True/False Questions" +msgstr "Вопросы с ответом Да/Нет" diff --git a/quiz-app/true_false/locale/zh_CN/LC_MESSAGES/django.mo b/quiz-app/true_false/locale/zh_CN/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..62478914ba35e45e679a0829bbdbb1e7ded0da5b GIT binary patch literal 713 zcmZvX&rcIU6vszJjeAs&9-b#OW|nS2CEJ!*OG_HJQ0ta>own0uVcDrOvqU{XVO%^C_5*Odc3b7A& z_rD!?r$||fMeIh44LZ-I!tyqhv$;FjnLNzrEBA_Xvqputgw(X8JikG2N1mdtu)!$L zxilv^i)W(KOmiEO3F|tw5_H^xWYV6PxRyY}L|Wl1eq8+6JS(}E=P;$ID_N)lriHYj zHVTlQ8Z{gidJ*$DbvawM!O70fRO12Dj&m#UO(DIhgB%>JR4nBWx3SEGkrScjAr^ns z!YMU>sK;6X^TQO>7noFBXR2<2P9EmPLo~Uh`LHe;e(2dSS@X3~4kF0{S`czs*$}pd zp~@svu;*s3gm5_n*4318|6mi|pj9=j(OASq1eF3iY6c1Org_64{qCp1hb_|k-0r{I z-2M1w@OEow`|Duy{oilTd(Xb_u5R?ZonGh3pVjux_6rR0wYT;ZL(*IC^j~-J&k^rG D*KOXC literal 0 HcmV?d00001 diff --git a/quiz-app/true_false/locale/zh_CN/LC_MESSAGES/django.po b/quiz-app/true_false/locale/zh_CN/LC_MESSAGES/django.po new file mode 100644 index 0000000..9be8b70 --- /dev/null +++ b/quiz-app/true_false/locale/zh_CN/LC_MESSAGES/django.po @@ -0,0 +1,36 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-31 22:44+0000\n" +"PO-Revision-Date: 2015-10-31 22:12+0000\n" +"Last-Translator: b' <>'\n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Translated-Using: django-rosetta 0.7.6\n" + +#: apps/true_false/models.py:11 +msgid "Tick this if the question is true. Leave it blank for false." +msgstr "如果题目为真,勾选此处。不选为假。" + +#: apps/true_false/models.py:14 +msgid "Correct" +msgstr "正确" + +#: apps/true_false/models.py:42 +msgid "True/False Question" +msgstr "判断题" + +#: apps/true_false/models.py:43 +msgid "True/False Questions" +msgstr "判断题" diff --git a/quiz-app/true_false/migrations/0001_initial.py b/quiz-app/true_false/migrations/0001_initial.py new file mode 100644 index 0000000..bac3c43 --- /dev/null +++ b/quiz-app/true_false/migrations/0001_initial.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.3 on 2017-06-22 11:20 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('quiz', '__first__'), + ] + + operations = [ + migrations.CreateModel( + name='TF_Question', + fields=[ + ('question_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='quiz.Question')), + ('correct', models.BooleanField(default=False, help_text='Tick this if the question is true. Leave it blank for false.', verbose_name='Correct')), + ], + options={ + 'verbose_name': 'True/False Question', + 'verbose_name_plural': 'True/False Questions', + 'ordering': ['category'], + }, + bases=('quiz.question',), + ), + ] diff --git a/quiz-app/true_false/migrations/__init__.py b/quiz-app/true_false/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/quiz-app/true_false/migrations/__pycache__/0001_initial.cpython-311.pyc b/quiz-app/true_false/migrations/__pycache__/0001_initial.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2a7362cba084434b8aa5dcef02ae7a887adde72a GIT binary patch literal 1542 zcmZt`OKjsrbUaS%IKOS$QUu!Vx`gm8z=5AqBEZNn|W{EZ~SYilt(ar z{JqpGW)ONRm~>?4#MuKN9wUN?C`al6SUkM2+QTH5SS_VGa7rWjqr!h9?%_TrMN%T=zC^D4ER%(!$^m5i5Y}vf z$7QkzSy|%Ry)^U|BqFmL*<-GmX3u6pXqvpxYM7rzG!VJr#oak&`XOtKOX6@X-K{FT zXhorCb{VxoO1S2^CS;O^lox!9Q8$E?yF*}@J+j!IIi!1B3n;TK#~xFTLyxOnk1^T} z$G2N{cc_OucA(omz*JA~)Efv0TcD*g?f_zd!mb(cvHOesY_cPfQGn~ zD`a4~eUD?(;kl$hqPA-NPP2aJqmOyD$K4>W1hELx2s-_YF}fGbxJk{D~Qxo0~Vyc?dOskBOI?01b%XZvguj z^Q64EzZEM;Ta9JBtn6>cd8A$cAwSKn9#>XRD%U4#w|-ffuHE|cok{cIwE5+<*_}3> zX)}xws^cvT=yUu~Ac_Y9dH7p_Ui%K8Ch$CgAgO#HA6H(TTs59FrdN$WvLL!EeIm|& zfxi;ynk7^Kf(k&P(!p_7UM_=EYwsSfzju6X{mFK$W?m}CNPs+Ax)Hxz)bghYz_|di zTwYZ6?~2LZN&~OvM74WS7%`|X6F)Dm%`#deousg{TE222tj+#YwX}llMrw?`DX7Hu z22js(w`XniKD!C51S<#u#IhtwkXh-C30i;gJ3%11iG#MN(q)fACX&y72m` L*f_srH}UFUf=;*d literal 0 HcmV?d00001 diff --git a/quiz-app/true_false/migrations/__pycache__/0001_initial.cpython-37.pyc b/quiz-app/true_false/migrations/__pycache__/0001_initial.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e5ef2ff3d26a15a138585ecbd22122800be297fb GIT binary patch literal 1071 zcmZuwy^`BD5GFy2KN4kMa@V-yOe&_3E}3zYaWb~gzPRwuWUPt}LUETeB#Pt#pzTu| zxAz8q0XKdiw5jq6sk|Uhc8WlQ)h@8R`1af7sevv+gXwK}WW-pjqcpZkOD)ssB<-2opa9~_vVw+;XD@({e&P8R$_@lNKNlfDsU z3&?AsQ5Lnzn3?XyMiyGMjWWTWE^GC&wEo96Bjq7&Rgpj^cfrXSxVZ;xR$S`pW{FyY0RCi6@PSQUM(P5cJyj%$3c zP4X7yx>d-VVvmQ@6=hpq+Q{@+%;D^R4wZ>Ys%+EB>&%m9)FpHJ-%Px#duq0cS_xED zv&r0Bj*i$f-}v@T6I23gP$q1T@3ucuoEWjWSjY`23IYKOZ%t^U|Tes)-YI`XlRh_ZFuqM z^~IwnPfhZ;ZEGx=(Rtc-G{6JKPmate-5~z`b@{H9JJl5>-d~Oh?KB*gwl#cc!}8m} zFVD}xmV>I-y`-uoBVQAbk1b$5 slsi^<@9W`W{IV9uy5tWOG$i{5e$;-n*`fy{!@pVTR6rtOCvN0@0ole!vH$=8 literal 0 HcmV?d00001 diff --git a/quiz-app/true_false/migrations/__pycache__/0001_initial.cpython-38.pyc b/quiz-app/true_false/migrations/__pycache__/0001_initial.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1b3533741fbc03ef097b2d779466a12c21b7239e GIT binary patch literal 1089 zcmZuwJ(J`#5Vhs+8PDBvdkG2UDk2liEQHiS-LbGF+)>mGi4);*x92?LvAmLeu#-Z% zDG`5wjNhY_h#x>g6&x*lhuZ*6sjZgOPyJr^e7ji892&p>{M&b_PhacYAGGH@rKvt9 z0}i;Yb8rjSwQJV0gI9P5zwk%jYl9;E(g7cWpBxC#+eJTmMFieUClCLicqezw+0ZqW z0OW0>QI@UBnVB7$tt@pTI%UEG9k%L4W$)h~b8?>2R5clN3KyJ$fm?XMwr=5LunWNh zAER9iE+)I#F51m^DY*0tAcW{PtQo{~z92t=8O(3Jnr#`Ruz&|!7asoN!5O@B>l5As zctlyBo85JLv?Togx9B`R^h2?9^8l7$0vfF31kXcQ7RngD`K`4@+SA>W2%xlzmLTGcA$crSV$mN z-8OgcG&<#;`^L9#ny_xL1!W@9PhAmgN`>l0{?NpHOpCOiaZbH5v`Fie^Xs8(Z7_LJ z(>0o8Gbvz?9bi{AsHA68nqQ9kKet^bZFif+*B!0}nJfFK31L@uTVWV%Ogt9I);79) z_VV)C=Uw^wh*-j=wrGC%Do4^~vgcA@`~;EBt6R0oraju54-eSccWx zre9rLTztsyl3w;VG9aLYrh1P|%zTf%@dMvwEOQ_I!vf|q*Z2bzs=?JKU|Eix zZ@>$1<9T%D!~<}l3PQ`?A$vem>QPJTPhWrCE*6WKL*wZezikrFaelYX{Xu)qGn(o% zGT;DfoCC`lvuob)gPXetFZV{@ZTvj=#sLrfpB?bg-Gx87c?j++Cky_dcqe1#Y-sDU z0~AfIQ5KELxS1X5tt@oiwaNqsI&9R-(%!#6=Hxu1sVXw)(_?ANg3wW?)@bDKG&fvXUkMJJA zBVv7S;uj}sYa;4h5B1T+LR7U>S_m^=Uy1JrRF=C*uJ2Z&*YfJPu$Pyo(=0GaG3ZW| z5(|xB;;t2xDQYzHzL3~zlBC^}BkMyUZ^RyNOsr7WMN=QqaNU`(?4-m}AD^u2a-Ztg zwMy%X{xLnhozj+;11{5Vv3P@Nt+)<)%|8+Twu6^EIKZu54s_O6K_Ze>RngO3G~8$(ziTkEu%L{63QCn}G^$qD}&3 z)owF(r_qUf<{8hvX@aW829ycAe(DN;Qz%p~vxg=UBQ4T?CIt1$&>*c7A+Cp_vBBhp zbz5ta%_M+5wt#I}qmr(rG`}46e_^{!+U_=s?^;}UWUlO^CV*YhZac$aW1_J@wzlEr z^H-P8zxvuFUv^!CMLS)dbv-rl$njT4W&}5yzdm36(8;~(ixNLwO@JTUc39cch_MW- zcTK;#xVZR4+>u`PH_|7dn5O!GOvF8xzx8~Nah|eA|8So(&b+@ppa1E-9q(q5Rihg8 zASr*zDayptvrE{FiBGw{|KH|v`p%Z84CRLuG=jZLV_JP=(V{1l)=#a7Dj<{aGZwl3 E0vf>P{wCAAY(d13PUi1CZpd*ZCdcJO9X=ar^h|og`k0wa%g2_X70h=2h`Aj1KOi&=m~3PUi1CZpdAwl9``ZtREkrnU`4-AFo$Xd5gm) RH$SB`C)EyQg`kg2&S~B!FoUfeaXd90wpSW&si@48aVVjD9N_ia^2$;+Lg&ryk0@&Ee@O9 Q{FKt1R6CH7pMjVG09{ukC;$Ke literal 0 HcmV?d00001 diff --git a/quiz-app/true_false/migrations/__pycache__/__init__.cpython-39.pyc b/quiz-app/true_false/migrations/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b9a7413fefc115a7277d4714357519096a344c6 GIT binary patch literal 148 zcmYe~<>g`k0z3N+Ng(<$h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vKzdXMvySN}R zIn_u%B`Yy6Jzux5G_y*-q^LACJ}oh)I8{G4GrcIWBr`v+SU)~KGcU6wK3=b&@)n0p RZhlH>PO2Tq$j?B`007E