Skip to main content

PyPI CI Codecov Documentation Supported Python versions License

Overview

edx-when is designed to be the central source of dates for the LMS. This repository is deployed to PyPI and designed to be installed and imported by an installation of edx-platform. As part of being integrated into edx-platform, edx-when shares the same database as the rest of the platform. It is written to by Studio when a Course is published (via https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/course_date_signals/handlers.py) and then the LMS reads from it in several locations. This repo contains start, end, and due dates for Courses and offers the functionality to have both absolute and relative dates.

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.

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@openedx.org.

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.1.0] - 2026-08-13

  • Add update_or_create_assignments_due_dates API to bulk upsert assignment due dates into ContentDate inside a single transaction.

  • Add the Assignment dataclass used as the input type of that API.

  • Extract _set_content_date_policy out of set_date_for_block so both write paths reuse an existing DatePolicy instead of creating duplicates.

[3.2.1] - 2026-02-20

  • Add distinct query by block and user in get_overrides_for_course to prevent duplicate overrides when a user has multiple overrides for the same block.

[3.2.0] - 2026-01-12

  • Extend ContentDate/UserDate models to support enhanced assignment metadata and future scheduling use cases.

[3.1.0] - 2026-01-09

  • Add get_overrides_for_course API to retrieve all overrides for a course.

  • Update get_overrides_for_block to also return email and location.

[3.0.0] - 2025-05-15

  • Dropped support for Python 3.8.

  • Added support for Python 3.12.

[2.5.1] - 2024-08-06

  • Reduce schedule queries by using a request cache for get_schedule_for_user.

[2.5.0] - 2024-04-02

  • Add support for Python 3.11. Dropped django32 support.

  • Switch from edx-sphinx-theme to sphinx-book-theme since the former is deprecated

[2.4.0] - 2023-06-21

  • Support added for Django 4.2

[2.3.0] - 2022-02-15

  • Added Django40 support

  • Dropped Django22, 30 and 31 support

[2.2.2] - 2021-10-21

  • Bug fix to bust cache when Personalized Learner Schedules are updated.

[2.2.1] - 2021-09-15

  • Bug fix for optimization in 2.2.0, to account for missing block_type data.

[2.2.0] - 2021-08-27

  • Added optimization when requesting course block dates for an outline, where block dates below subsections are unneeded.

  • Use current version of the course to improve the cache key, along with using the TieredCache to cache date data.

[2.1.0] - 2021-07-23

Added Django 3.2 Support

[2.0.0] - 2021-01-19

Dropped python3.5 support.

[1.3.2] - 2021-01-15

Don’t warn about missing schedules for relative dates. It happens for legitimate reasons, and the layer above can check instead.

[1.3.1] - 2020-11-19

Updated travis badge in README.rst to point to travis-ci.com instead of travis-ci.org

[1.3.0] - 2020-07-16

Django 3.x deprecation warnings are fixed

[1.2.9] - 2020-06-30

Don’t return due dates for enrollments originally created too close to the course end to allow for finishing the course in time.

[1.2.8] - 2020-06-17

Don’t return due dates for enrollments created after course end

[1.2.4] - 2020-06-01

Updates function in API for finding learners with a specific Schedule that has an assignment on a given day, to also be inclusive of absolute date schedules (everyone active in the course without an override).

[1.2.3] - 2020-04-30

  • Dropped support for Django versions below 2.2

  • Added support for python 3.8

[1.1.4] - 2019-03-30

  • Drop the active index from ContentDate. It has low cardinality and Aurora was doing a lot of extra work to try to do an intersect query with that and the course_id index, when using the latter by itself would be far more efficient.

[1.1.3] - 2019-03-25

  • Use memcache to cache ContentDate information in get_dates_for_course

[0.1.0] - 2019-03-04

Added

  • First release on PyPI.

Metadata

Release files for edx-when 4.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for edx-when 4.1.0
File Size Uploaded
edx_when-4.1.0.tar.gz 46.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for edx-when 4.1.0
File Interpreter ABI Platform
edx_when-4.1.0-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 83.4 kB

Release files / edx_when-4.1.0.tar.gz

Download URL edx_when-4.1.0.tar.gz
Size 46.7 kB
Tags Source
SHA-256 checksum
How to use checksums
72a7eb7ae2ceedbe688be6ca916e518270f42f3b2d5131ff259aeb5953877ddf
BLAKE2b-256 checksum
How to use checksums
37078520e1dd2f6f3a46716dba18d31cdb3805d54ccdb3f22f3cbcb1c87f2230
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / edx_when-4.1.0-py2.py3-none-any.whl

Download URL edx_when-4.1.0-py2.py3-none-any.whl
Size 36.8 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
e40d9093233beea00b717d38ac70a974b6d7b443e8dc5847579da144387f06ee
BLAKE2b-256 checksum
How to use checksums
cffae6adfe0253a9ac7ebcf4892997104fa9c2823409317e7f4007c3b9fb07bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

4.1.0 This release

2 release files

4.0.0

2 release files

3.2.1

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.6.0

2 release files

2.5.2

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.3.2

2 release files

1.3.0

2 release files

1.2.9

2 release files

1.2.8

2 release files

1.2.7

2 release files

1.2.6

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5

2 release files

0.4

2 release files

0.3

2 release files

0.2

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page