Skip to main content

A library for tracking completion of blocks by learners in edX courses.

Project description

PyPI Travis Codecov Documentation Supported Python versions License

A library for tracking completion of blocks by learners in edX courses.

Overview

This repository provides a Django model BlockCompletion that is intended to be plugged into edx-platform. It provides various handlers and services for the recording of completion data. It also provides a DRF API for submitting completion data in batches.

Enabling in the LMS

By default, the Open edX LMS does not use this library. To turn it on, go to http://localhost:18000/admin/waffle/switch/ (substitute your LMS URL for http://localhost:18000/), and add a new switch with Name completion.enable_completion_tracking and Active selected.

See Completion Tool in the Open edX documentation for details on what will happen once enabled.

License

The code in this repository is licensed under the AGPL 3.0 unless otherwise noted.

Please see LICENSE.txt for details.

How To Contribute

Contributions are very welcome.

Please read How To Contribute for details.

Even though they were written with edx-platform in mind, the guidelines should be followed for Open edX code in general.

PR description template should be automatically applied if you are sending PR from github interface; otherwise you can find it it at PULL_REQUEST_TEMPLATE.md

Issue report template should be automatically applied if you are sending it from github UI as well; otherwise you can find it at ISSUE_TEMPLATE.md

Reporting Security Issues

Please do not report security issues in public. Please email security@edx.org.

Using with Docker Devstack

Prerequisite: Have your Open edX Devstack properly installed.

Note: When you see “from inside the lms” below, it means that you’ve run make lms-shell from your devstack directory and are on a command prompt inside the LMS container.

  1. Clone this repo into ../src/ directory (relative to your “devstack” repo location). This will mount the directory in a way that is accessible to the lms container.

  2. From inside the lms, uninstall completion and reinstall your local copy. You can just copy the following line:

    pip uninstall completion -y; pip install -e /edx/src/completion/
  3. Now, get your completion development environment set up:

    cd /edx/src/completion
    virtualenv completion-env
    source completion-env/bin/activate
    make install
  4. Don’t forget to enable the waffle switch as described above in “Enabling in the LMS”

  5. That’s it! In order to simulate a given tox environment (django18, django111, quality), run tox -e <env> for the env in question. If you want to run pytest directly:

    pytest completion/tests/test_models.py

Getting Help

Have a question about this repository, or about Open edX in general? Please refer to this list of resources if you need any assistance.

Change Log

Unreleased

[4.0.4]- 2021-02-04

  • Update get_key_to_last_completed_block to return full_block_key instead of block_key

[4.0.2] - 2021-02-04

  • Future-proof usage of edx_toggles.toggles

[4.0.1] - 2021-01-05

  • Replace reference to deprecated import path student.models with common.djangoapps.student.models.

  • Updated the build status badge in README.rst to point to travis-ci.com instead of travis-ci.org

[4.0.0] - 2020-11-05

  • Remove soon-to-be-deprecated WaffleSwitchNamespace class instances

  • BACKWARD INCOMPATIBLE: Removes waffle(), which returned a (now deprecated) WaffleSwitchNamespace. This should only affect tests in edx-platform.

  • Requires edx-toggles>=1.2.0, which introduces a new API to waffle objects.

  • Refactors ENABLE_COMPLETION_TRACKING_SWITCH from a LegacyWaffleSwitch to the updated WaffleSwitch. We don’t expect uses of this updated switch to require changes, unless there are surprise uses of deprecated methods from LegacyWaffleSwitch.

[3.2.5] - 2020-10-23

  • Fix waffle switch override in tests by relying on newest edx_toggles API

[3.2.4] - 2020-07-21

  • Fix AttributeError raised by vertical_is_complete. * by ensuring get_completable_children doesn’t return null

[3.2.3] - 2020-07-01

  • Updated the children lookup for vertical_is_complete to utilize the XBlockCompletion model. There are three completion modes to consider: EXCLUDED, AGGREGATOR, COMPLETABLE.

    • This method will now ignore any block with XBlockCompletion.EXCLUDED.

    • This method will now recurse down any child of a vertical if that child has XBlockCompletion.AGGREGATOR.

    • This method will consider all children blocks with XBlockCompletion.COMPLETABLE as candidates to determine if the vertical is complete.

[3.2.2] - 2020-06-30

  • Adding recursive lookup for children of a vertical to the vertical_is_complete method in services.py.

    • This was added because verticals containing children that had their own children were not being properly marked as complete. Since the vertical was only looking one layer deep, it was possible to have children lower in the tree incomplete, but the vertical would still be marked as complete. Now it looks at all leaves under the vertical.

[3.1.1] - 2020-02-24

  • Remove unnecessary constraint for edx-drf-extensions<3.0.0

[3.1.0] - 2020-02-18

  • Upgrades packages, drops support for Python 2.

[3.0.1] - 2019-10-22

  • Fix the package long description to be valid rST, check this in CI.

[3.0.0] - 2019-10-22

  • Support tracking completion of XBlocks in any “learning context”, such as in a content library, and not just in courses. To keep the code clean, this has been done as a breaking change to the python API. (The API has been simplified so that it’s generally only necessary to pass in a block key / usage key rather than block key + course key.) The REST API is unchanged.

[2.1.1] - 2019-10-21

  • Updated credentials for PyPI deployment via token.

[2.1.0] - 2019-10-18

  • Switch blocks_to_mark_complete_on_view() to return a list of XBlocks instead of a set. Many XBlocks aren’t hashable; the old implementation allowed subtle bugs under Python 2.7 but triggers an immediate error under 3.5.

[2.0.0] - 2019-04-23

  • Unpin django-rest-framework requirements. This is a potentially breaking change if people were relying on this package to ensure the correct version of djangorestframework was being installed.

  • Remove the AUTHORS file and references to it.

[1.0.2] - 2019-03-11

  • Fix the 403 error occurring for completion-batch API for requests coming from the iOS devices

[1.0.0] - 2018-10-16

  • Updated edx-drf-extensions imports. Completion will no longer work with outdated versions of edx-drf-extensions.

[0.1.14] - 2018-10-04

  • Added submit_completion and submit_group_completion methods on CompletionService.

[0.1.7] - 2018-06-18

  • Added can_mark_block_complete_on_view() and blocks_to_mark_complete_on_view() methods on CompletionService and renamed get_completion_by_viewing_delay_ms() to get_complete_on_view_delay_ms().

[0.1.6] - 2018-04-13

  • Remove usage of deprecated CourseStructure api.

[0.1.5] - 2018-04-03

  • Delete enable_visual_progress methods and checks. Deprecate ENABLE_VISUAL_PROGRESS, ENABLE_COURSE_VISUAL_PROGRESS, and ENABLE_SITE_VISUAL_PROGRESS waffle flags

[0.1.4] - 2018-03-28

  • Site configurations must now explicitly disable visual progress for the enable_visual_progress() feature gating function to return False early.

[0.1.3] - 2018-03-26

  • Added some documentation.

[0.1.2] - 2018-03-23

  • Fix management of dependency versions

[0.1.1] - 2018-03-23

  • Fixes wildly inefficient raw query in BlockCompletion.latest_blocks_completed_all_courses()

  • Updates freezegun version, makes tests that use it somewhat faster.

[0.1.0] - 2018-03-20

[0.0.11] - 2018-03-20

  • Added “subsection-completion/{username}/{course_key}/{subsection_id}” API endpoint, to be used with the completion milestones experiment.

[0.0.9] - 2018-02-27

  • Added “utilities.py”, which houses methods for working with BlockCompletion data.

[0.0.8] - 2018-03-01

  • Add model method for superlative “last completed block” - for site awareness include every last completed block by course, for later sorting in business layer.

[0.0.7] - 2018-02-15

  • Add settings and service method for determining completion-by-viewing delay.

[0.0.6] - 2018-02-13

  • Add the additional completion logic into the service and models from edx-platform

[0.0.2] - 2018-01-31

  • Fix up edx-lint requirements shenanigans.

[0.0.1] - 2018-01-31

  • Initial release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

edx-completion-4.0.4.tar.gz (44.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

edx_completion-4.0.4-py2.py3-none-any.whl (44.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file edx-completion-4.0.4.tar.gz.

File metadata

  • Download URL: edx-completion-4.0.4.tar.gz
  • Upload date:
  • Size: 44.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.3.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.7

File hashes

Hashes for edx-completion-4.0.4.tar.gz
Algorithm Hash digest
SHA256 5735d92cad2b996057031e89ca55c34cc5bc2ca542c98a6fbb88edffc14f1d06
MD5 a43eb7017bb55157151c32a42dc7339a
BLAKE2b-256 3b4ca0d6ce2d92acf1d79aa41c1f8e4bfd0a418f94af9451407112bbe0fa3d62

See more details on using hashes here.

File details

Details for the file edx_completion-4.0.4-py2.py3-none-any.whl.

File metadata

  • Download URL: edx_completion-4.0.4-py2.py3-none-any.whl
  • Upload date:
  • Size: 44.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.3.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.7

File hashes

Hashes for edx_completion-4.0.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 52c4b8a4ed683de6a4ed39a602268dab2a9aeb5136615d2ac4c89c377bde6141
MD5 07a5f0082eb8e6d92d2b0059b6e1196e
BLAKE2b-256 b6f23a022d33d1a06f444252b41b498028081431d299df46bb0dcc23848b377f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page