diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000..2f0189d --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,22 @@ +# .readthedocs.yml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required: the version of this file's schema. +version: 2 + +# Build documentation in the docs/ directory with Sphinx +sphinx: + configuration: docs/source/conf.py + fail_on_warning: true + +# Set the version of python needed to build these docs. +build: + os: "ubuntu-22.04" + tools: + python: "3.8" + +# Optionally install extra requirements required to build your docs +python: + install: + - requirements: requirements/docs.txt diff --git a/docs/source/conf.py b/docs/source/conf.py index 6de4a57..a4b4b2a 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -14,12 +14,14 @@ import os import sys +import django # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, os.path.abspath('../..')) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings") +django.setup() # -- General configuration ------------------------------------------------ @@ -102,7 +104,7 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -html_theme = 'default' +html_theme = 'sphinx_book_theme' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the @@ -260,3 +262,41 @@ # If true, do not generate a @detailmenu in the "Top" node's menu. #texinfo_no_detailmenu = False + +html_theme_options = { + + "repository_url": 'https://github.com/openedx/edx-submissions', + "repository_branch": 'master', + "path_to_docs": "docs/", + "use_repository_button": True, + "use_issues_button": True, + "use_edit_page_button": True, + "extra_footer": """ + + Creative Commons License + +
+ These works by + Axim Collaborative + are licensed under a + Creative Commons Attribution-ShareAlike 4.0 International License. + """ +} + +# Note the logo won't show up properly yet because there is an upstream +# bug in the theme that needs to be fixed first. +# If you'd like you can temporarily copy the logo file to your `_static` +# directory. +html_logo = "https://logos.openedx.org/open-edx-logo-color.png" +html_favicon = "https://logos.openedx.org/open-edx-favicon.ico" diff --git a/requirements/base.txt b/requirements/base.txt index 5caa26c..967b442 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -6,7 +6,7 @@ # asgiref==3.7.2 # via django -django==3.2.19 +django==3.2.20 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.in @@ -26,5 +26,5 @@ pytz==2023.3 # djangorestframework sqlparse==0.4.4 # via django -typing-extensions==4.6.3 +typing-extensions==4.7.1 # via asgiref diff --git a/requirements/ci.txt b/requirements/ci.txt index bf0a113..85ec9fc 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -4,15 +4,15 @@ # # make upgrade # -certifi==2023.5.7 +certifi==2023.7.22 # via requests -charset-normalizer==3.1.0 +charset-normalizer==3.2.0 # via requests coverage==6.5.0 # via coveralls coveralls==3.3.1 # via -r requirements/ci.in -distlib==0.3.6 +distlib==0.3.7 # via # -r requirements/tox.txt # virtualenv @@ -29,11 +29,11 @@ packaging==23.1 # via # -r requirements/tox.txt # tox -platformdirs==3.5.3 +platformdirs==3.10.0 # via # -r requirements/tox.txt # virtualenv -pluggy==1.0.0 +pluggy==1.2.0 # via # -r requirements/tox.txt # tox @@ -55,9 +55,9 @@ tox==3.28.0 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/tox.txt -urllib3==2.0.3 +urllib3==2.0.4 # via requests -virtualenv==20.23.0 +virtualenv==20.24.2 # via # -r requirements/tox.txt # tox diff --git a/requirements/dev.txt b/requirements/dev.txt index 4686427..688dc11 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -4,6 +4,11 @@ # # make upgrade # +accessible-pygments==0.0.4 + # via + # -r requirements/docs.txt + # -r requirements/test.txt + # pydata-sphinx-theme alabaster==0.7.13 # via # -r requirements/docs.txt @@ -12,9 +17,10 @@ alabaster==0.7.13 asgiref==3.7.2 # via # -r requirements/base.txt + # -r requirements/docs.txt # -r requirements/test.txt # django -astroid==2.15.5 +astroid==2.15.6 # via # -r requirements/test.txt # pylint @@ -23,18 +29,24 @@ babel==2.12.1 # via # -r requirements/docs.txt # -r requirements/test.txt + # pydata-sphinx-theme # sphinx -certifi==2023.5.7 +beautifulsoup4==4.12.2 + # via + # -r requirements/docs.txt + # -r requirements/test.txt + # pydata-sphinx-theme +certifi==2023.7.22 # via # -r requirements/docs.txt # -r requirements/test.txt # requests -charset-normalizer==3.1.0 +charset-normalizer==3.2.0 # via # -r requirements/docs.txt # -r requirements/test.txt # requests -click==8.1.3 +click==8.1.6 # via # -r requirements/test.txt # click-log @@ -44,7 +56,7 @@ click-log==0.4.0 # via # -r requirements/test.txt # edx-lint -code-annotations==1.3.0 +code-annotations==1.5.0 # via # -r requirements/test.txt # edx-lint @@ -54,14 +66,15 @@ coverage[toml]==7.2.7 # pytest-cov ddt==1.6.0 # via -r requirements/test.txt -dill==0.3.6 +dill==0.3.7 # via # -r requirements/test.txt # pylint -django==3.2.19 +django==3.2.20 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.txt + # -r requirements/docs.txt # -r requirements/test.txt # django-model-utils # djangorestframework @@ -69,26 +82,28 @@ django==3.2.19 django-model-utils==4.3.1 # via # -r requirements/base.txt + # -r requirements/docs.txt # -r requirements/test.txt djangorestframework==3.14.0 # via # -r requirements/base.txt + # -r requirements/docs.txt # -r requirements/test.txt -docutils==0.18.1 +docutils==0.19 # via # -r requirements/docs.txt # -r requirements/test.txt + # pydata-sphinx-theme # sphinx - # sphinx-rtd-theme edx-lint==5.3.4 # via -r requirements/test.txt -exceptiongroup==1.1.1 +exceptiongroup==1.1.2 # via # -r requirements/test.txt # pytest -factory-boy==3.2.1 +factory-boy==3.3.0 # via -r requirements/test.txt -faker==18.10.1 +faker==19.3.0 # via # -r requirements/test.txt # factory-boy @@ -104,7 +119,7 @@ imagesize==1.4.1 # -r requirements/docs.txt # -r requirements/test.txt # sphinx -importlib-metadata==6.6.0 +importlib-metadata==6.8.0 # via # -r requirements/docs.txt # -r requirements/test.txt @@ -126,6 +141,7 @@ jinja2==3.1.2 jsonfield==3.1.0 # via # -r requirements/base.txt + # -r requirements/docs.txt # -r requirements/test.txt lazy-object-proxy==1.9.0 # via @@ -140,23 +156,24 @@ mccabe==0.7.0 # via # -r requirements/test.txt # pylint -mock==5.0.2 +mock==5.1.0 # via -r requirements/test.txt packaging==23.1 # via # -r requirements/docs.txt # -r requirements/test.txt + # pydata-sphinx-theme # pytest # sphinx pbr==5.11.1 # via # -r requirements/test.txt # stevedore -platformdirs==3.5.3 +platformdirs==3.10.0 # via # -r requirements/test.txt # pylint -pluggy==1.0.0 +pluggy==1.2.0 # via # -r requirements/test.txt # pytest @@ -165,14 +182,21 @@ pockets==0.9.1 # -r requirements/docs.txt # -r requirements/test.txt # sphinxcontrib-napoleon -pycodestyle==2.10.0 +pycodestyle==2.11.0 # via -r requirements/test.txt -pygments==2.15.1 +pydata-sphinx-theme==0.13.3 + # via + # -r requirements/docs.txt + # -r requirements/test.txt + # sphinx-book-theme +pygments==2.16.1 # via # -r requirements/docs.txt # -r requirements/test.txt + # accessible-pygments + # pydata-sphinx-theme # sphinx -pylint==2.17.4 +pylint==2.17.5 # via # -r requirements/test.txt # edx-lint @@ -192,7 +216,7 @@ pylint-plugin-utils==0.8.2 # -r requirements/test.txt # pylint-celery # pylint-django -pytest==7.3.2 +pytest==7.4.0 # via # -r requirements/test.txt # pytest-cov @@ -218,7 +242,7 @@ pytz==2023.3 # babel # django # djangorestframework -pyyaml==6.0 +pyyaml==6.0.1 # via # -r requirements/test.txt # code-annotations @@ -240,14 +264,18 @@ snowballstemmer==2.2.0 # -r requirements/docs.txt # -r requirements/test.txt # sphinx -sphinx==5.3.0 +soupsieve==2.4.1 + # via + # -r requirements/docs.txt + # -r requirements/test.txt + # beautifulsoup4 +sphinx==6.2.1 # via - # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/docs.txt # -r requirements/test.txt - # sphinx-rtd-theme - # sphinxcontrib-jquery -sphinx-rtd-theme==1.2.2 + # pydata-sphinx-theme + # sphinx-book-theme +sphinx-book-theme==1.0.1 # via # -r requirements/docs.txt # -r requirements/test.txt @@ -266,11 +294,6 @@ sphinxcontrib-htmlhelp==2.0.1 # -r requirements/docs.txt # -r requirements/test.txt # sphinx -sphinxcontrib-jquery==4.1 - # via - # -r requirements/docs.txt - # -r requirements/test.txt - # sphinx-rtd-theme sphinxcontrib-jsmath==1.0.1 # via # -r requirements/docs.txt @@ -293,6 +316,7 @@ sphinxcontrib-serializinghtml==1.1.5 sqlparse==0.4.4 # via # -r requirements/base.txt + # -r requirements/docs.txt # -r requirements/test.txt # django stevedore==5.1.0 @@ -309,18 +333,21 @@ tomli==2.0.1 # coverage # pylint # pytest -tomlkit==0.11.8 +tomlkit==0.12.1 # via # -r requirements/test.txt # pylint -typing-extensions==4.6.3 +typing-extensions==4.7.1 # via # -r requirements/base.txt + # -r requirements/docs.txt # -r requirements/test.txt # asgiref # astroid + # faker + # pydata-sphinx-theme # pylint -urllib3==2.0.3 +urllib3==2.0.4 # via # -r requirements/docs.txt # -r requirements/test.txt @@ -329,7 +356,7 @@ wrapt==1.15.0 # via # -r requirements/test.txt # astroid -zipp==3.15.0 +zipp==3.16.2 # via # -r requirements/docs.txt # -r requirements/test.txt diff --git a/requirements/docs.in b/requirements/docs.in index e099d50..3b11a0c 100644 --- a/requirements/docs.in +++ b/requirements/docs.in @@ -1,6 +1,7 @@ # Requirements for docs -c constraints.txt +-r base.txt Sphinx -sphinx-rtd-theme +sphinx-book-theme sphinxcontrib-napoleon diff --git a/requirements/docs.txt b/requirements/docs.txt index 3d13f29..36694ac 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -4,36 +4,70 @@ # # make upgrade # +accessible-pygments==0.0.4 + # via pydata-sphinx-theme alabaster==0.7.13 # via sphinx +asgiref==3.7.2 + # via + # -r requirements/base.txt + # django babel==2.12.1 - # via sphinx -certifi==2023.5.7 + # via + # pydata-sphinx-theme + # sphinx +beautifulsoup4==4.12.2 + # via pydata-sphinx-theme +certifi==2023.7.22 # via requests -charset-normalizer==3.1.0 +charset-normalizer==3.2.0 # via requests -docutils==0.18.1 +django==3.2.20 # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt + # -r requirements/base.txt + # django-model-utils + # djangorestframework + # jsonfield +django-model-utils==4.3.1 + # via -r requirements/base.txt +djangorestframework==3.14.0 + # via -r requirements/base.txt +docutils==0.19 + # via + # pydata-sphinx-theme # sphinx - # sphinx-rtd-theme idna==3.4 # via requests imagesize==1.4.1 # via sphinx -importlib-metadata==6.6.0 +importlib-metadata==6.8.0 # via sphinx jinja2==3.1.2 # via sphinx +jsonfield==3.1.0 + # via -r requirements/base.txt markupsafe==2.1.3 # via jinja2 packaging==23.1 - # via sphinx + # via + # pydata-sphinx-theme + # sphinx pockets==0.9.1 # via sphinxcontrib-napoleon -pygments==2.15.1 - # via sphinx +pydata-sphinx-theme==0.13.3 + # via sphinx-book-theme +pygments==2.16.1 + # via + # accessible-pygments + # pydata-sphinx-theme + # sphinx pytz==2023.3 - # via babel + # via + # -r requirements/base.txt + # babel + # django + # djangorestframework requests==2.31.0 # via sphinx six==1.16.0 @@ -42,13 +76,14 @@ six==1.16.0 # sphinxcontrib-napoleon snowballstemmer==2.2.0 # via sphinx -sphinx==5.3.0 +soupsieve==2.4.1 + # via beautifulsoup4 +sphinx==6.2.1 # via - # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/docs.in - # sphinx-rtd-theme - # sphinxcontrib-jquery -sphinx-rtd-theme==1.2.2 + # pydata-sphinx-theme + # sphinx-book-theme +sphinx-book-theme==1.0.1 # via -r requirements/docs.in sphinxcontrib-applehelp==1.0.4 # via sphinx @@ -56,8 +91,6 @@ sphinxcontrib-devhelp==1.0.2 # via sphinx sphinxcontrib-htmlhelp==2.0.1 # via sphinx -sphinxcontrib-jquery==4.1 - # via sphinx-rtd-theme sphinxcontrib-jsmath==1.0.1 # via sphinx sphinxcontrib-napoleon==0.7 @@ -66,7 +99,16 @@ sphinxcontrib-qthelp==1.0.3 # via sphinx sphinxcontrib-serializinghtml==1.1.5 # via sphinx -urllib3==2.0.3 +sqlparse==0.4.4 + # via + # -r requirements/base.txt + # django +typing-extensions==4.7.1 + # via + # -r requirements/base.txt + # asgiref + # pydata-sphinx-theme +urllib3==2.0.4 # via requests -zipp==3.15.0 +zipp==3.16.2 # via importlib-metadata diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index fd0cc1c..ed274ee 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -6,17 +6,20 @@ # build==0.10.0 # via pip-tools -click==8.1.3 +click==8.1.6 # via pip-tools packaging==23.1 # via build -pip-tools==6.13.0 +pip-tools==7.2.0 # via -r requirements/pip-tools.in pyproject-hooks==1.0.0 # via build tomli==2.0.1 - # via build -wheel==0.40.0 + # via + # build + # pip-tools + # pyproject-hooks +wheel==0.41.1 # via pip-tools # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/pip.txt b/requirements/pip.txt index 5a5ce22..5e2f760 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -4,11 +4,11 @@ # # make upgrade # -wheel==0.40.0 +wheel==0.41.1 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: -pip==23.1.2 +pip==23.2.1 # via -r requirements/pip.in -setuptools==67.8.0 +setuptools==68.0.0 # via -r requirements/pip.in diff --git a/requirements/test.txt b/requirements/test.txt index cea36a4..3ea76e1 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -4,6 +4,10 @@ # # make upgrade # +accessible-pygments==0.0.4 + # via + # -r requirements/docs.txt + # pydata-sphinx-theme alabaster==0.7.13 # via # -r requirements/docs.txt @@ -11,59 +15,70 @@ alabaster==0.7.13 asgiref==3.7.2 # via # -r requirements/base.txt + # -r requirements/docs.txt # django -astroid==2.15.5 +astroid==2.15.6 # via # pylint # pylint-celery babel==2.12.1 # via # -r requirements/docs.txt + # pydata-sphinx-theme # sphinx -certifi==2023.5.7 +beautifulsoup4==4.12.2 + # via + # -r requirements/docs.txt + # pydata-sphinx-theme +certifi==2023.7.22 # via # -r requirements/docs.txt # requests -charset-normalizer==3.1.0 +charset-normalizer==3.2.0 # via # -r requirements/docs.txt # requests -click==8.1.3 +click==8.1.6 # via # click-log # code-annotations # edx-lint click-log==0.4.0 # via edx-lint -code-annotations==1.3.0 +code-annotations==1.5.0 # via edx-lint coverage[toml]==7.2.7 # via pytest-cov ddt==1.6.0 # via -r requirements/test.in -dill==0.3.6 +dill==0.3.7 # via pylint # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.txt + # -r requirements/docs.txt # django-model-utils # djangorestframework # jsonfield django-model-utils==4.3.1 - # via -r requirements/base.txt - # via -r requirements/base.txt -docutils==0.18.1 # via + # -r requirements/base.txt # -r requirements/docs.txt + # via + # -r requirements/base.txt + # -r requirements/docs.txt +docutils==0.19 + # via + # -r requirements/docs.txt + # pydata-sphinx-theme # sphinx - # sphinx-rtd-theme edx-lint==5.3.4 # via -r requirements/test.in -exceptiongroup==1.1.1 +exceptiongroup==1.1.2 # via pytest -factory-boy==3.2.1 +factory-boy==3.3.0 # via -r requirements/test.in -faker==18.10.1 +faker==19.3.0 # via factory-boy freezegun==1.2.2 # via -r requirements/test.in @@ -75,7 +90,7 @@ imagesize==1.4.1 # via # -r requirements/docs.txt # sphinx -importlib-metadata==6.6.0 +importlib-metadata==6.8.0 # via # -r requirements/docs.txt # sphinx @@ -91,7 +106,9 @@ jinja2==3.1.2 # code-annotations # sphinx jsonfield==3.1.0 - # via -r requirements/base.txt + # via + # -r requirements/base.txt + # -r requirements/docs.txt lazy-object-proxy==1.9.0 # via astroid markupsafe==2.1.3 @@ -100,30 +117,37 @@ markupsafe==2.1.3 # jinja2 mccabe==0.7.0 # via pylint -mock==5.0.2 +mock==5.1.0 # via -r requirements/test.in packaging==23.1 # via # -r requirements/docs.txt + # pydata-sphinx-theme # pytest # sphinx pbr==5.11.1 # via stevedore -platformdirs==3.5.3 +platformdirs==3.10.0 # via pylint -pluggy==1.0.0 +pluggy==1.2.0 # via pytest pockets==0.9.1 # via # -r requirements/docs.txt # sphinxcontrib-napoleon -pycodestyle==2.10.0 +pycodestyle==2.11.0 # via -r requirements/test.in -pygments==2.15.1 +pydata-sphinx-theme==0.13.3 + # via + # -r requirements/docs.txt + # sphinx-book-theme +pygments==2.16.1 # via # -r requirements/docs.txt + # accessible-pygments + # pydata-sphinx-theme # sphinx -pylint==2.17.4 +pylint==2.17.5 # via # edx-lint # pylint-celery @@ -137,7 +161,7 @@ pylint-plugin-utils==0.8.2 # via # pylint-celery # pylint-django -pytest==7.3.2 +pytest==7.4.0 # via # pytest-cov # pytest-django @@ -159,7 +183,7 @@ pytz==2023.3 # babel # django # djangorestframework -pyyaml==6.0 +pyyaml==6.0.1 # via code-annotations requests==2.31.0 # via @@ -176,13 +200,16 @@ snowballstemmer==2.2.0 # via # -r requirements/docs.txt # sphinx -sphinx==5.3.0 +soupsieve==2.4.1 + # via + # -r requirements/docs.txt + # beautifulsoup4 +sphinx==6.2.1 # via - # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/docs.txt - # sphinx-rtd-theme - # sphinxcontrib-jquery -sphinx-rtd-theme==1.2.2 + # pydata-sphinx-theme + # sphinx-book-theme +sphinx-book-theme==1.0.1 # via -r requirements/docs.txt sphinxcontrib-applehelp==1.0.4 # via @@ -196,10 +223,6 @@ sphinxcontrib-htmlhelp==2.0.1 # via # -r requirements/docs.txt # sphinx -sphinxcontrib-jquery==4.1 - # via - # -r requirements/docs.txt - # sphinx-rtd-theme sphinxcontrib-jsmath==1.0.1 # via # -r requirements/docs.txt @@ -217,6 +240,7 @@ sphinxcontrib-serializinghtml==1.1.5 sqlparse==0.4.4 # via # -r requirements/base.txt + # -r requirements/docs.txt # django stevedore==5.1.0 # via code-annotations @@ -227,21 +251,24 @@ tomli==2.0.1 # coverage # pylint # pytest -tomlkit==0.11.8 +tomlkit==0.12.1 # via pylint -typing-extensions==4.6.3 +typing-extensions==4.7.1 # via # -r requirements/base.txt + # -r requirements/docs.txt # asgiref # astroid + # faker + # pydata-sphinx-theme # pylint -urllib3==2.0.3 +urllib3==2.0.4 # via # -r requirements/docs.txt # requests wrapt==1.15.0 # via astroid -zipp==3.15.0 +zipp==3.16.2 # via # -r requirements/docs.txt # importlib-metadata diff --git a/requirements/tox.txt b/requirements/tox.txt index fab4837..b6b398f 100644 --- a/requirements/tox.txt +++ b/requirements/tox.txt @@ -4,7 +4,7 @@ # # make upgrade # -distlib==0.3.6 +distlib==0.3.7 # via virtualenv filelock==3.12.2 # via @@ -12,9 +12,9 @@ filelock==3.12.2 # virtualenv packaging==23.1 # via tox -platformdirs==3.5.3 +platformdirs==3.10.0 # via virtualenv -pluggy==1.0.0 +pluggy==1.2.0 # via tox py==1.11.0 # via tox @@ -26,5 +26,5 @@ tox==3.28.0 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/tox.in -virtualenv==20.23.0 +virtualenv==20.24.2 # via tox diff --git a/submissions/api.py b/submissions/api.py index 0f89a34..1be2a84 100644 --- a/submissions/api.py +++ b/submissions/api.py @@ -426,7 +426,8 @@ def get_all_submissions(course_id, item_id, item_type, read_replica=True): def get_all_course_submission_information(course_id, item_type, read_replica=True): - """ For the given course, get all student items of the given item type, all the submissions for those itemes, + """ + For the given course, get all student items of the given item type, all the submissions for those itemes, and the latest scores for each item. If a submission was given a score that is not the latest score for the relevant student item, it will still be included but without score. @@ -437,6 +438,7 @@ def get_all_course_submission_information(course_id, item_type, read_replica=Tru Yields: A tuple of three dictionaries representing: + (1) a student item with the following fields: student_id course_id @@ -485,7 +487,8 @@ def get_all_course_submission_information(course_id, item_type, read_replica=Tru def get_top_submissions(course_id, item_id, item_type, number_of_top_scores, use_cache=True, read_replica=True): - """Get a number of top scores for an assessment based on a particular student item + """ + Get a number of top scores for an assessment based on a particular student item This function will return top scores for the piece of assessment. It will consider only the latest and greater than 0 score for a piece of assessment. @@ -506,7 +509,7 @@ def get_top_submissions(course_id, item_id, item_type, number_of_top_scores, use Kwargs: use_cache (bool): If true, check the cache before retrieving querying the database. read_replica (bool): If true, attempt to use the read replica database. - If no read replica is available, use the default database. + If no read replica is available, use the default database. Returns: topscores (dict): The top scores for the assessment for the student item. @@ -806,7 +809,8 @@ def reset_score(student_id, course_id, item_id, clear_state=False, emit_signal=T def set_score(submission_uuid, points_earned, points_possible, annotation_creator=None, annotation_type=None, annotation_reason=None): - """Set a score for a particular submission. + """ + Set a score for a particular submission. Sets the score for a particular submission. This score is calculated externally to the API. @@ -817,8 +821,8 @@ def set_score(submission_uuid, points_earned, points_possible, points_possible (int): The total points possible for this particular student item. annotation_creator (str): An optional field for recording who gave this particular score - annotation_type (str): An optional field for recording what type of annotation should be created, - e.g. "staff_override". + annotation_type (str): An optional field for recording what type of + annotation should be created, e.g. "staff_override". annotation_reason (str): An optional field for recording why this score was set to its value. Returns: