Skip to main content
Join the official Python Developers Survey 2018 and win valuable prizes: Start the survey!

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

Project description


|pypi-badge| |travis-badge| |codecov-badge| |doc-badge| |pyversions-badge|

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


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.


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 ` <>`_

Issue report template should be automatically applied if you are sending it from github UI as well; otherwise you
can find it at ` <>`_

Reporting Security Issues

Please do not report security issues in public. Please email

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.

#. 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.

#. 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/

#. Now, get your completion development environment set up::

cd /edx/src/completion
virtualenv completion-env
source completion-env/bin/activate
make install

#. 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/

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.

.. _list of resources:

.. |pypi-badge| image::
:alt: PyPI

.. |travis-badge| image::
:alt: Travis

.. |codecov-badge| image::
:alt: Codecov

.. |doc-badge| image::
:alt: Documentation

.. |pyversions-badge| image::
:alt: Supported Python versions

.. |license-badge| image::
:alt: License

Change Log

All enhancements and patches to completion will be documented
in this file. It adheres to the structure of ,
but in reStructuredText instead of Markdown (for ease of incorporation into
Sphinx documentation and the PyPI description).

This project adheres to Semantic Versioning (

.. There should always be an "Unreleased" section for changes pending release.


[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

[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,

[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
* Fixes

[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 "", which houses methods for working with BlockCompletion

[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

[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.

Filename, size & hash SHA256 hash help File type Python version Upload date
edx_completion-1.0.0-py2.py3-none-any.whl (41.8 kB) Copy SHA256 hash SHA256 Wheel py2.py3 Oct 16, 2018
edx-completion-1.0.0.tar.gz (23.6 kB) Copy SHA256 hash SHA256 Source None Oct 16, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page