From 0a2f9b2f650dda9fad4cc8c31625ef875cf636e6 Mon Sep 17 00:00:00 2001 From: Salman Nawaz Date: Mon, 31 Jul 2023 16:16:58 +0500 Subject: [PATCH 1/6] fix: add django42 support --- .github/workflows/ci.yml | 2 +- CHANGELOG.md | 3 +++ freetextresponse/__init__.py | 2 +- .../locale/en/LC_MESSAGES/{django.po => django-saved.po} | 0 setup.py | 1 + tox.ini | 5 +++-- 6 files changed, 9 insertions(+), 4 deletions(-) rename freetextresponse/conf/locale/en/LC_MESSAGES/{django.po => django-saved.po} (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 444ae84e..8e48564c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: matrix: os: [ubuntu-20.04] python-version: ['3.8'] - toxenv: [django32, quality, csslint, eslint, translations_validate] + toxenv: [django32, django42, quality, csslint, eslint, translations_validate] steps: - uses: actions/checkout@v3 diff --git a/CHANGELOG.md b/CHANGELOG.md index 859990d9..4f267345 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## Version 3.1.0 +* Added support for Django 4.2 + ## Version 3.0.0 * Removed Support for Django 2.2, 3.0 and 3.1 diff --git a/freetextresponse/__init__.py b/freetextresponse/__init__.py index 0a74b3f1..422bd97c 100644 --- a/freetextresponse/__init__.py +++ b/freetextresponse/__init__.py @@ -4,4 +4,4 @@ present in order for the student to receive credit. """ -__version__ = "3.0.0" +__version__ = "3.1.0" diff --git a/freetextresponse/conf/locale/en/LC_MESSAGES/django.po b/freetextresponse/conf/locale/en/LC_MESSAGES/django-saved.po similarity index 100% rename from freetextresponse/conf/locale/en/LC_MESSAGES/django.po rename to freetextresponse/conf/locale/en/LC_MESSAGES/django-saved.po diff --git a/setup.py b/setup.py index 5e2f768d..4c83f4d9 100644 --- a/setup.py +++ b/setup.py @@ -149,6 +149,7 @@ def is_requirement(line): 'Programming Language :: Python :: 3.8', 'Framework :: Django', 'Framework :: Django :: 3.2', + 'Framework :: Django :: 4.2', 'Topic :: Education', 'Topic :: Internet :: WWW/HTTP', ], diff --git a/tox.ini b/tox.ini index ee043c54..f5c865d5 100644 --- a/tox.ini +++ b/tox.ini @@ -1,10 +1,11 @@ [tox] -envlist = csslint,eslint,pycodestyle,pylint,py38-django{32}, translations_validate +envlist = csslint,eslint,pycodestyle,pylint,py38-django{32,42}, translations_validate [testenv] usedevelop = True deps = django32: Django>=3.2,<4.0 + django42: Django>=4.2,<4.3 -rrequirements/test.txt commands = coverage run manage.py test freetextresponse.tests @@ -43,7 +44,7 @@ commands = pylint freetextresponse/ [testenv:translations_validate] -commands = +commands = make translations_validate [testenv:translations_push] From 7c8b52af940c424e0d1dc418c361a3f9f4f195ff Mon Sep 17 00:00:00 2001 From: Salman Nawaz Date: Mon, 31 Jul 2023 16:38:58 +0500 Subject: [PATCH 2/6] fix: test cases for translation --- tox.ini | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tox.ini b/tox.ini index f5c865d5..86daffed 100644 --- a/tox.ini +++ b/tox.ini @@ -55,7 +55,7 @@ commands = [testenv:translations_pull] deps = - edx-i18n-tools==0.4.8 + edx-i18n-tools==1.0.0 transifex-client changedir = {toxinidir}/freetextresponse commands = @@ -63,21 +63,21 @@ commands = [testenv:translations_compile] deps = - edx-i18n-tools==0.4.8 + edx-i18n-tools==1.0.0 changedir = {toxinidir}/freetextresponse commands = i18n_tool generate [testenv:translations_dummy] deps = - edx-i18n-tools==0.4.8 + edx-i18n-tools==1.0.0 changedir = {toxinidir}/freetextresponse commands = i18n_tool dummy [testenv:translations_detect_changed] deps = - edx-i18n-tools==0.4.8 + edx-i18n-tools==1.0.0 changedir = {toxinidir}/freetextresponse commands = i18n_tool extract @@ -85,7 +85,7 @@ commands = [testenv:translations_extract] deps = - edx-i18n-tools==0.4.8 + edx-i18n-tools==1.0.0 changedir = {toxinidir}/freetextresponse commands = i18n_tool extract From dd1d57257e06e88a1aff4fdb6f7f77cbf1ebc9b1 Mon Sep 17 00:00:00 2001 From: Salman Nawaz Date: Mon, 31 Jul 2023 17:18:51 +0500 Subject: [PATCH 3/6] fix: test cases --- requirements/base.txt | 2 +- requirements/ci.txt | 2 +- requirements/pip_tools.txt | 1 + requirements/quality.txt | 14 +++++++------- requirements/test.txt | 6 +++--- requirements/tox.txt | 2 +- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 5ba928a8..aa2653df 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -51,7 +51,7 @@ xblock==1.6.2 # via # -r requirements/base.in # xblock-utils -xblock-utils==3.2.0 +xblock-utils==3.3.0 # via -r requirements/base.in # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/ci.txt b/requirements/ci.txt index 8f70d14e..94d27870 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -29,7 +29,7 @@ packaging==23.1 # via # -r requirements/tox.txt # tox -platformdirs==3.9.1 +platformdirs==3.10.0 # via # -r requirements/tox.txt # virtualenv diff --git a/requirements/pip_tools.txt b/requirements/pip_tools.txt index 7b5578e3..dcea863f 100644 --- a/requirements/pip_tools.txt +++ b/requirements/pip_tools.txt @@ -18,6 +18,7 @@ tomli==2.0.1 # via # build # pip-tools + # pyproject-hooks wheel==0.41.0 # via pip-tools diff --git a/requirements/quality.txt b/requirements/quality.txt index 294c00cf..ca0b9aff 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -24,11 +24,11 @@ binaryornot==0.4.4 # via # -r requirements/test.txt # cookiecutter -boto3==1.28.10 +boto3==1.28.15 # via # -r requirements/test.txt # fs-s3fs -botocore==1.31.10 +botocore==1.31.15 # via # -r requirements/test.txt # boto3 @@ -136,11 +136,11 @@ pbr==5.11.1 # via # -r requirements/test.txt # stevedore -platformdirs==3.9.1 +platformdirs==3.10.0 # via pylint -pycodestyle==2.10.0 +pycodestyle==2.11.0 # via -r requirements/quality.in -pylint==2.17.4 +pylint==2.17.5 # via -r requirements/quality.in pymongo==3.13.0 # via @@ -210,7 +210,7 @@ text-unidecode==1.3 # python-slugify tomli==2.0.1 # via pylint -tomlkit==0.11.8 +tomlkit==0.12.1 # via pylint typing-extensions==4.7.1 # via @@ -247,7 +247,7 @@ xblock[django]==1.6.2 # xblock-utils xblock-sdk==0.6.0 # via -r requirements/test.txt -xblock-utils==3.2.0 +xblock-utils==3.3.0 # via # -r requirements/base.txt # -r requirements/test.txt diff --git a/requirements/test.txt b/requirements/test.txt index a15c9c64..214829f7 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -12,9 +12,9 @@ asgiref==3.7.2 # via django binaryornot==0.4.4 # via cookiecutter -boto3==1.28.10 +boto3==1.28.15 # via fs-s3fs -botocore==1.31.10 +botocore==1.31.15 # via # boto3 # s3transfer @@ -142,7 +142,7 @@ xblock[django]==1.6.2 # xblock-utils xblock-sdk==0.6.0 # via -r requirements/test.in -xblock-utils==3.2.0 +xblock-utils==3.3.0 # via -r requirements/test.in # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/tox.txt b/requirements/tox.txt index 929b7daf..9985eeda 100644 --- a/requirements/tox.txt +++ b/requirements/tox.txt @@ -12,7 +12,7 @@ filelock==3.12.2 # virtualenv packaging==23.1 # via tox -platformdirs==3.9.1 +platformdirs==3.10.0 # via virtualenv pluggy==1.2.0 # via tox From 7e55b7da8e495af4b9d47d348dffb78b9fb9a8d2 Mon Sep 17 00:00:00 2001 From: Salman Nawaz Date: Wed, 2 Aug 2023 16:14:23 +0500 Subject: [PATCH 4/6] fix: test cases --- requirements/quality.txt | 21 ++++++--------------- requirements/test.txt | 19 ++++++------------- tox.ini | 10 +++++----- 3 files changed, 17 insertions(+), 33 deletions(-) diff --git a/requirements/quality.txt b/requirements/quality.txt index ca0b9aff..67555720 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -24,11 +24,11 @@ binaryornot==0.4.4 # via # -r requirements/test.txt # cookiecutter -boto3==1.28.15 +boto3==1.28.17 # via # -r requirements/test.txt # fs-s3fs -botocore==1.31.15 +botocore==1.31.17 # via # -r requirements/test.txt # boto3 @@ -37,7 +37,7 @@ certifi==2023.7.22 # via # -r requirements/test.txt # requests -chardet==5.1.0 +chardet==5.2.0 # via # -r requirements/test.txt # binaryornot @@ -65,7 +65,6 @@ django==3.2.20 # -r requirements/base.txt # -r requirements/test.txt # django-pyfs - # openedx-django-pyfs # xblock-sdk django-pyfs==3.2.0 # via -r requirements/test.txt @@ -77,13 +76,11 @@ fs==2.4.16 # -r requirements/test.txt # django-pyfs # fs-s3fs - # openedx-django-pyfs # xblock fs-s3fs==1.1.1 # via # -r requirements/test.txt # django-pyfs - # openedx-django-pyfs # xblock-sdk idna==3.4 # via @@ -101,9 +98,7 @@ jmespath==1.0.1 # boto3 # botocore lazy==1.5 - # via - # -r requirements/test.txt - # xblock + # via -r requirements/test.txt lazy-object-proxy==1.9.0 # via astroid lxml==4.9.3 @@ -128,10 +123,6 @@ mccabe==0.7.0 # via pylint mock==5.1.0 # via -r requirements/test.txt -openedx-django-pyfs==3.4.0 - # via - # -r requirements/test.txt - # xblock pbr==5.11.1 # via # -r requirements/test.txt @@ -239,13 +230,13 @@ webob==1.8.7 # xblock-sdk wrapt==1.15.0 # via astroid -xblock[django]==1.6.2 +xblock==1.6.2 # via # -r requirements/base.txt # -r requirements/test.txt # xblock-sdk # xblock-utils -xblock-sdk==0.6.0 +xblock-sdk==0.7.0 # via -r requirements/test.txt xblock-utils==3.3.0 # via diff --git a/requirements/test.txt b/requirements/test.txt index 214829f7..585798d5 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -12,15 +12,15 @@ asgiref==3.7.2 # via django binaryornot==0.4.4 # via cookiecutter -boto3==1.28.15 +boto3==1.28.17 # via fs-s3fs -botocore==1.31.15 +botocore==1.31.17 # via # boto3 # s3transfer certifi==2023.7.22 # via requests -chardet==5.1.0 +chardet==5.2.0 # via binaryornot charset-normalizer==3.2.0 # via requests @@ -35,7 +35,6 @@ ddt==1.6.0 # via # -c requirements/common_constraints.txt # django-pyfs - # openedx-django-pyfs # xblock-sdk django-pyfs==3.2.0 # via -r requirements/test.in @@ -45,12 +44,10 @@ fs==2.4.16 # via # django-pyfs # fs-s3fs - # openedx-django-pyfs # xblock fs-s3fs==1.1.1 # via # django-pyfs - # openedx-django-pyfs # xblock-sdk idna==3.4 # via requests @@ -61,9 +58,7 @@ jmespath==1.0.1 # boto3 # botocore lazy==1.5 - # via - # -r requirements/test.in - # xblock + # via -r requirements/test.in lxml==4.9.3 # via # xblock @@ -77,8 +72,6 @@ markupsafe==2.1.3 # xblock mock==5.1.0 # via -r requirements/test.in -openedx-django-pyfs==3.4.0 - # via xblock pbr==5.11.1 # via stevedore pymongo==3.13.0 @@ -136,11 +129,11 @@ webob==1.8.7 # via # xblock # xblock-sdk -xblock[django]==1.6.2 +xblock==1.6.2 # via # xblock-sdk # xblock-utils -xblock-sdk==0.6.0 +xblock-sdk==0.7.0 # via -r requirements/test.in xblock-utils==3.3.0 # via -r requirements/test.in diff --git a/tox.ini b/tox.ini index 86daffed..a3aebf4b 100644 --- a/tox.ini +++ b/tox.ini @@ -55,7 +55,7 @@ commands = [testenv:translations_pull] deps = - edx-i18n-tools==1.0.0 + edx-i18n-tools==0.4.8 transifex-client changedir = {toxinidir}/freetextresponse commands = @@ -63,21 +63,21 @@ commands = [testenv:translations_compile] deps = - edx-i18n-tools==1.0.0 + edx-i18n-tools==0.4.8 changedir = {toxinidir}/freetextresponse commands = i18n_tool generate [testenv:translations_dummy] deps = - edx-i18n-tools==1.0.0 + edx-i18n-tools==0.4.8 changedir = {toxinidir}/freetextresponse commands = i18n_tool dummy [testenv:translations_detect_changed] deps = - edx-i18n-tools==1.0.0 + edx-i18n-tools==0.4.8 changedir = {toxinidir}/freetextresponse commands = i18n_tool extract @@ -85,7 +85,7 @@ commands = [testenv:translations_extract] deps = - edx-i18n-tools==1.0.0 + edx-i18n-tools==0.4.8 changedir = {toxinidir}/freetextresponse commands = i18n_tool extract From e990378a76c101973e8d2ecbbf1ea07442ec8a4c Mon Sep 17 00:00:00 2001 From: Awais Qureshi Date: Wed, 2 Aug 2023 19:14:03 +0500 Subject: [PATCH 5/6] chore: fixing trans. --- .../locale/en/LC_MESSAGES/django-saved.po | 199 ------------------ 1 file changed, 199 deletions(-) delete mode 100644 freetextresponse/conf/locale/en/LC_MESSAGES/django-saved.po diff --git a/freetextresponse/conf/locale/en/LC_MESSAGES/django-saved.po b/freetextresponse/conf/locale/en/LC_MESSAGES/django-saved.po deleted file mode 100644 index 16ccb6aa..00000000 --- a/freetextresponse/conf/locale/en/LC_MESSAGES/django-saved.po +++ /dev/null @@ -1,199 +0,0 @@ -# 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-10-13 17:58+0500\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" - -#: models.py:39 -msgid "Display Correctness?" -msgstr "" - -#: models.py:41 -msgid "" -"This is a flag that indicates if the indicator icon should be displayed " -"after a student enters their response" -msgstr "" - -#: models.py:49 -msgid "Display Other Student Responses" -msgstr "" - -#: models.py:51 -msgid "" -"This will display other student responses to the student after they submit " -"their response." -msgstr "" - -#: models.py:60 -msgid "System selected answers to give to students" -msgstr "" - -#: models.py:63 -msgid "Display Name" -msgstr "" - -#: models.py:65 -msgid "This is the title for this question type" -msgstr "" - -#: models.py:71 -msgid "Full-Credit Key Phrases" -msgstr "" - -#: models.py:73 -msgid "" -"This is a list of words or phrases, one of which must be present in order " -"for the student's answer to receive full credit" -msgstr "" - -#: models.py:81 -msgid "Half-Credit Key Phrases" -msgstr "" - -#: models.py:83 -msgid "" -"This is a list of words or phrases, one of which must be present in order " -"for the student's answer to receive half credit" -msgstr "" - -#: models.py:91 -msgid "Maximum Number of Attempts" -msgstr "" - -#: models.py:93 -msgid "" -"This is the maximum number of times a student is allowed to attempt the " -"problem" -msgstr "" - -#: models.py:101 -msgid "Maximum Word Count" -msgstr "" - -#: models.py:103 -msgid "This is the maximum number of words allowed for this question" -msgstr "" - -#: models.py:111 -msgid "Minimum Word Count" -msgstr "" - -#: models.py:113 -msgid "This is the minimum number of words required for this question" -msgstr "" - -#: models.py:121 -msgid "Prompt" -msgstr "" - -#: models.py:123 -msgid "This is the prompt students will see when asked to enter their response" -msgstr "" - -#: models.py:131 -msgid "Submission Received Message" -msgstr "" - -#: models.py:133 -msgid "This is the message students will see upon submitting their response" -msgstr "" - -#: models.py:140 -msgid "Weight" -msgstr "" - -#: models.py:142 -msgid "This assigns an integer value representing the weight of this problem" -msgstr "" - -#: models.py:150 -msgid "Draft Received Message" -msgstr "" - -#: models.py:152 -msgid "This is the message students will see upon submitting a draft response" -msgstr "" - -#: templates/view.html:15 -msgid "" -"Allow my response to possibly be visible by other learners after submitting " -"their response" -msgstr "" - -#: templates/view.html:21 templates/view.html:24 -msgid "Checking..." -msgstr "" - -#: templates/view.html:21 templates/view.html:22 -msgid "Submit" -msgstr "" - -#: templates/view.html:24 templates/view.html:25 -msgid "Save" -msgstr "" - -#: templates/view.html:34 -msgid "Hide" -msgstr "" - -#: templates/view.html:35 -msgid "Show" -msgstr "" - -#: templates/view.html:36 -msgid "peer responses" -msgstr "" - -#: templates/view.html:38 -msgid "Submissions by others" -msgstr "" - -#: templates/view.html:39 templates/view.html:43 -msgid "No responses to show at this time" -msgstr "" - -#: views.py:121 -#, python-brace-format -msgid "{weight} point possible" -msgid_plural "{weight} points possible" -msgstr[0] "" -msgstr[1] "" - -#: views.py:129 -#, python-brace-format -msgid "{score_string}/{weight} point" -msgid_plural "{score_string}/{weight} points" -msgstr[0] "" -msgstr[1] "" - -#: views.py:142 -#, python-brace-format -msgid "You have used {count_attempts} of {max_attempts} submission" -msgid_plural "You have used {count_attempts} of {max_attempts} submissions" -msgstr[0] "" -msgstr[1] "" - -#: views.py:166 -#, python-brace-format -msgid "Your response must be between {min} and {max} word." -msgid_plural "Your response must be between {min} and {max} words." -msgstr[0] "" -msgstr[1] "" - -#: views.py:262 -#, python-brace-format -msgid "Invalid Word Count. {word_count_message}" -msgstr "" From eeb5dcaf0a9b670c94a362e643ce3a54ae2c27bc Mon Sep 17 00:00:00 2001 From: Awais Qureshi Date: Wed, 2 Aug 2023 19:29:13 +0500 Subject: [PATCH 6/6] chore: fixing trans. --- .../conf/locale/en/LC_MESSAGES/django.po | 199 ++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 freetextresponse/conf/locale/en/LC_MESSAGES/django.po diff --git a/freetextresponse/conf/locale/en/LC_MESSAGES/django.po b/freetextresponse/conf/locale/en/LC_MESSAGES/django.po new file mode 100644 index 00000000..16ccb6aa --- /dev/null +++ b/freetextresponse/conf/locale/en/LC_MESSAGES/django.po @@ -0,0 +1,199 @@ +# 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-10-13 17:58+0500\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" + +#: models.py:39 +msgid "Display Correctness?" +msgstr "" + +#: models.py:41 +msgid "" +"This is a flag that indicates if the indicator icon should be displayed " +"after a student enters their response" +msgstr "" + +#: models.py:49 +msgid "Display Other Student Responses" +msgstr "" + +#: models.py:51 +msgid "" +"This will display other student responses to the student after they submit " +"their response." +msgstr "" + +#: models.py:60 +msgid "System selected answers to give to students" +msgstr "" + +#: models.py:63 +msgid "Display Name" +msgstr "" + +#: models.py:65 +msgid "This is the title for this question type" +msgstr "" + +#: models.py:71 +msgid "Full-Credit Key Phrases" +msgstr "" + +#: models.py:73 +msgid "" +"This is a list of words or phrases, one of which must be present in order " +"for the student's answer to receive full credit" +msgstr "" + +#: models.py:81 +msgid "Half-Credit Key Phrases" +msgstr "" + +#: models.py:83 +msgid "" +"This is a list of words or phrases, one of which must be present in order " +"for the student's answer to receive half credit" +msgstr "" + +#: models.py:91 +msgid "Maximum Number of Attempts" +msgstr "" + +#: models.py:93 +msgid "" +"This is the maximum number of times a student is allowed to attempt the " +"problem" +msgstr "" + +#: models.py:101 +msgid "Maximum Word Count" +msgstr "" + +#: models.py:103 +msgid "This is the maximum number of words allowed for this question" +msgstr "" + +#: models.py:111 +msgid "Minimum Word Count" +msgstr "" + +#: models.py:113 +msgid "This is the minimum number of words required for this question" +msgstr "" + +#: models.py:121 +msgid "Prompt" +msgstr "" + +#: models.py:123 +msgid "This is the prompt students will see when asked to enter their response" +msgstr "" + +#: models.py:131 +msgid "Submission Received Message" +msgstr "" + +#: models.py:133 +msgid "This is the message students will see upon submitting their response" +msgstr "" + +#: models.py:140 +msgid "Weight" +msgstr "" + +#: models.py:142 +msgid "This assigns an integer value representing the weight of this problem" +msgstr "" + +#: models.py:150 +msgid "Draft Received Message" +msgstr "" + +#: models.py:152 +msgid "This is the message students will see upon submitting a draft response" +msgstr "" + +#: templates/view.html:15 +msgid "" +"Allow my response to possibly be visible by other learners after submitting " +"their response" +msgstr "" + +#: templates/view.html:21 templates/view.html:24 +msgid "Checking..." +msgstr "" + +#: templates/view.html:21 templates/view.html:22 +msgid "Submit" +msgstr "" + +#: templates/view.html:24 templates/view.html:25 +msgid "Save" +msgstr "" + +#: templates/view.html:34 +msgid "Hide" +msgstr "" + +#: templates/view.html:35 +msgid "Show" +msgstr "" + +#: templates/view.html:36 +msgid "peer responses" +msgstr "" + +#: templates/view.html:38 +msgid "Submissions by others" +msgstr "" + +#: templates/view.html:39 templates/view.html:43 +msgid "No responses to show at this time" +msgstr "" + +#: views.py:121 +#, python-brace-format +msgid "{weight} point possible" +msgid_plural "{weight} points possible" +msgstr[0] "" +msgstr[1] "" + +#: views.py:129 +#, python-brace-format +msgid "{score_string}/{weight} point" +msgid_plural "{score_string}/{weight} points" +msgstr[0] "" +msgstr[1] "" + +#: views.py:142 +#, python-brace-format +msgid "You have used {count_attempts} of {max_attempts} submission" +msgid_plural "You have used {count_attempts} of {max_attempts} submissions" +msgstr[0] "" +msgstr[1] "" + +#: views.py:166 +#, python-brace-format +msgid "Your response must be between {min} and {max} word." +msgid_plural "Your response must be between {min} and {max} words." +msgstr[0] "" +msgstr[1] "" + +#: views.py:262 +#, python-brace-format +msgid "Invalid Word Count. {word_count_message}" +msgstr ""