section-to-course


Namesection-to-course JSON
Version 0.4.3 PyPI version JSON
download
home_pagehttps://github.com/open-craft/section-to-course
SummaryFactors sections from Open edX courses into their own new course.
upload_time2024-02-21 14:17:34
maintainer
docs_urlNone
authorOpenCraft
requires_python>=3.8
licenseAGPL 3.0
keywords python edx
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            section-to-course
#################

|pypi-badge| |ci-badge| |codecov-badge| |pyversions-badge|
|license-badge| |status-badge|

Purpose
*******

Allows course authors to factor sections from Open edX courses into their own new course.

Installation
************

This application is not yet available on PyPI, so you will need to install it from source. You can install it from source on the current ``main`` branch by adding:

.. code-block:: bash

    git+https://github.com/open-craft/section-to-course.git


...to the ``requirements/private.txt`` file of your Open edX installation, and then run ``pip install -r requirements/private.txt``. If you're developing locally without the platform, create a virtualenv using the latest Python 3.8 release, and then run ``pip install -e .`` from the root of this repository.

Development
===========

If developing on this application, you will need to install it as an editable package. To do so, follow these steps:

1. Set up the Open edX `devstack <https://github.com/openedx/devstack>`_ using the ``nutmeg.master`` version as explained in `this guide <https://edx.readthedocs.io/projects/open-edx-devstack/en/latest/developing_on_named_release_branches.html>`_.

Then, in the ``edx-platform`` repository root, run:

.. code-block:: bash

    git remote add open-craft git@github.com:open-craft/edx-platform.git
    git fetch open-craft
    git checkout open-craft/opencraft-release/nutmeg.2

2. Then, in the ``src`` directory of your devstack, run:

.. code-block:: bash

    git clone git@github.com:open-craft/section-to-course.git

Then, in your ``devstack`` directory, run:

.. code-block:: bash

    make dev.shell.studio
    cd /edx/src/section-to-course
    pip install -e .

Configuration (optional)
************************

New courses are self-paced. If you want to set relative deadlines in them, follow the next steps:

#. Add the following `Waffle Flags`_ (with ``Everyone: Yes``) in Django admin:

    #. `studio.custom_relative_dates`_
    #. `course_experience.relative_dates`_
    #. `course_experience.relative_dates_disable_reset`_
#. Go to `Django admin -> Course_Date_Signals -> Self paced relative dates`_ configs and add a config with ``Enabled: Yes``.

.. _Waffle Flags: http://localhost:18000/admin/waffle/flag/
.. _studio.custom_relative_dates: https://edx.readthedocs.io/projects/edx-platform-technical/en/latest/featuretoggles.html#featuretoggle-studio.custom_relative_dates
.. _course_experience.relative_dates: https://edx.readthedocs.io/projects/edx-platform-technical/en/latest/featuretoggles.html#featuretoggle-course_experience.relative_dates
.. _course_experience.relative_dates_disable_reset: https://edx.readthedocs.io/projects/edx-platform-technical/en/latest/featuretoggles.html#featuretoggle-course_experience.relative_dates_disable_reset
.. _Django admin -> Course_Date_Signals -> Self paced relative dates: http://localhost:18000/admin/course_date_signals/selfpacedrelativedatesconfig/


Usage
*****

Once installed, the plugin should automatically register itself within Django. Be sure to run database migrations.

The admin views are in the Django admin, under the "Section to Course" section. From there, you can create a new section to course link, which will create a new course with the same content as the section you selected. You can also view the list of existing section to course links, refresh them, and delete them.

**Note:** The start date of a newly created course is in the future, so you will likely want to modify it in the "Schedule & Details" section in Studio.

Relative due dates (optional)
=============================

If you want to configure relative deadlines in your course, follow these steps:

#. Mark a subsection in the newly created course as graded (otherwise, deadlines will be enforced but learners will not see these dates in the LMS).
#. Enter the number of weeks in the subsection's "Due in" field.
#. You may also want to adjust the new course's grading policy to change the weight of the section.

Refreshing a Course
===================

There are two ways to refresh a course:

1. Use the admin action from the changelist view. This will allow you to refresh several courses at once.
2. Use the refresh button on the detail view for a single course, shown here:

.. image:: assets/admin_screenshot.png
   :alt: A screenshot of the admin page showing the refresh button in the upper left

License
*******

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

Please see `LICENSE.txt <LICENSE.txt>`_ for details.

Contributing
************

Contributions are very welcome.

This project is currently accepting all types of contributions, bug fixes,
security fixes, maintenance work, or new features.  However, please make sure
to have a discussion about your new feature idea with the maintainers prior to
beginning development to maximize the chances of your change being accepted.
You can start a conversation by creating a new issue on this repo summarizing
your idea.

Reporting Security Issues
*************************

Please do not report security issues in public. Please email help@opencraft.com.

.. |pypi-badge| image:: https://img.shields.io/pypi/v/section-to-course.svg
    :target: https://pypi.python.org/pypi/section-to-course/
    :alt: PyPI

.. |ci-badge| image:: https://github.com/open-craft/section-to-course/workflows/Python%20CI/badge.svg?branch=main
    :target: https://github.com/open-craft/section-to-course/actions
    :alt: CI

.. |codecov-badge| image:: https://codecov.io/github/open-craft/section-to-course/coverage.svg?branch=main
    :target: https://codecov.io/github/open-craft/section-to-course?branch=main
    :alt: Codecov

.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/section-to-course.svg
    :target: https://pypi.python.org/pypi/section-to-course/
    :alt: Supported Python versions

.. |license-badge| image:: https://img.shields.io/github/license/open-craft/section-to-course.svg
    :target: https://github.com/open-craft/section-to-course/blob/main/LICENSE.txt
    :alt: License

.. |status-badge| image:: https://img.shields.io/badge/Status-Experimental-yellow
    :alt: Project status


Change Log
##########

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

   This project adheres to Semantic Versioning (https://semver.org/).

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

Unreleased
**********

[0.4.3] - 2024-02-21
********************
Fixed
=======
* Compatibility of ``compat`` imports with post Quince releases.

[0.4.2] - 2023-11-15
********************

Changed
=======

* Upgraded tox from ``v3`` to ``v4`` and removed ``tox-battery``.

Added
=====

* Created a new test for missing migrations and added it to the CI.

Fixed
=====

* Added a missing Django migration.
* Replaced the invalid ``ROOT_URLCONF`` in ``test_settings.py``.
* Made ``./manage.py`` executable.

[0.4.1] - 2023-11-07
********************

Fixed
=====

* Compatibility of ``compat`` imports with Palm.

[0.4.0] - 2023-05-18
********************

Changed
=======

* Removed course autocomplete for performance reasons. Source courses must now be specified by course key pasted into the source course ID field.

Added
=====

* Github integration-tests action.

[0.3.0] - 2023-05-12
********************

Changed
=======

* New section-based courses are self-paced.

[0.2.0] - 2023-05-10
********************

Added
=====

* Admin views for creating new section-based courses.
* First release on PyPI.

[0.1.0] - 2023-04-03
********************

Added
=====

* Initial section-derived course creation code.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/open-craft/section-to-course",
    "name": "section-to-course",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "Python edx",
    "author": "OpenCraft",
    "author_email": "help@opencraft.com",
    "download_url": "https://files.pythonhosted.org/packages/9e/7f/a26bac5087ccb5bcc24d36a2a0c35aca4cc35645af97412eb687255741ff/section-to-course-0.4.3.tar.gz",
    "platform": null,
    "description": "section-to-course\n#################\n\n|pypi-badge| |ci-badge| |codecov-badge| |pyversions-badge|\n|license-badge| |status-badge|\n\nPurpose\n*******\n\nAllows course authors to factor sections from Open edX courses into their own new course.\n\nInstallation\n************\n\nThis application is not yet available on PyPI, so you will need to install it from source. You can install it from source on the current ``main`` branch by adding:\n\n.. code-block:: bash\n\n    git+https://github.com/open-craft/section-to-course.git\n\n\n...to the ``requirements/private.txt`` file of your Open edX installation, and then run ``pip install -r requirements/private.txt``. If you're developing locally without the platform, create a virtualenv using the latest Python 3.8 release, and then run ``pip install -e .`` from the root of this repository.\n\nDevelopment\n===========\n\nIf developing on this application, you will need to install it as an editable package. To do so, follow these steps:\n\n1. Set up the Open edX `devstack <https://github.com/openedx/devstack>`_ using the ``nutmeg.master`` version as explained in `this guide <https://edx.readthedocs.io/projects/open-edx-devstack/en/latest/developing_on_named_release_branches.html>`_.\n\nThen, in the ``edx-platform`` repository root, run:\n\n.. code-block:: bash\n\n    git remote add open-craft git@github.com:open-craft/edx-platform.git\n    git fetch open-craft\n    git checkout open-craft/opencraft-release/nutmeg.2\n\n2. Then, in the ``src`` directory of your devstack, run:\n\n.. code-block:: bash\n\n    git clone git@github.com:open-craft/section-to-course.git\n\nThen, in your ``devstack`` directory, run:\n\n.. code-block:: bash\n\n    make dev.shell.studio\n    cd /edx/src/section-to-course\n    pip install -e .\n\nConfiguration (optional)\n************************\n\nNew courses are self-paced. If you want to set relative deadlines in them, follow the next steps:\n\n#. Add the following `Waffle Flags`_ (with ``Everyone: Yes``) in Django admin:\n\n    #. `studio.custom_relative_dates`_\n    #. `course_experience.relative_dates`_\n    #. `course_experience.relative_dates_disable_reset`_\n#. Go to `Django admin -> Course_Date_Signals -> Self paced relative dates`_ configs and add a config with ``Enabled: Yes``.\n\n.. _Waffle Flags: http://localhost:18000/admin/waffle/flag/\n.. _studio.custom_relative_dates: https://edx.readthedocs.io/projects/edx-platform-technical/en/latest/featuretoggles.html#featuretoggle-studio.custom_relative_dates\n.. _course_experience.relative_dates: https://edx.readthedocs.io/projects/edx-platform-technical/en/latest/featuretoggles.html#featuretoggle-course_experience.relative_dates\n.. _course_experience.relative_dates_disable_reset: https://edx.readthedocs.io/projects/edx-platform-technical/en/latest/featuretoggles.html#featuretoggle-course_experience.relative_dates_disable_reset\n.. _Django admin -> Course_Date_Signals -> Self paced relative dates: http://localhost:18000/admin/course_date_signals/selfpacedrelativedatesconfig/\n\n\nUsage\n*****\n\nOnce installed, the plugin should automatically register itself within Django. Be sure to run database migrations.\n\nThe admin views are in the Django admin, under the \"Section to Course\" section. From there, you can create a new section to course link, which will create a new course with the same content as the section you selected. You can also view the list of existing section to course links, refresh them, and delete them.\n\n**Note:** The start date of a newly created course is in the future, so you will likely want to modify it in the \"Schedule & Details\" section in Studio.\n\nRelative due dates (optional)\n=============================\n\nIf you want to configure relative deadlines in your course, follow these steps:\n\n#. Mark a subsection in the newly created course as graded (otherwise, deadlines will be enforced but learners will not see these dates in the LMS).\n#. Enter the number of weeks in the subsection's \"Due in\" field.\n#. You may also want to adjust the new course's grading policy to change the weight of the section.\n\nRefreshing a Course\n===================\n\nThere are two ways to refresh a course:\n\n1. Use the admin action from the changelist view. This will allow you to refresh several courses at once.\n2. Use the refresh button on the detail view for a single course, shown here:\n\n.. image:: assets/admin_screenshot.png\n   :alt: A screenshot of the admin page showing the refresh button in the upper left\n\nLicense\n*******\n\nThe code in this repository is licensed under the AGPL 3.0.\n\nPlease see `LICENSE.txt <LICENSE.txt>`_ for details.\n\nContributing\n************\n\nContributions are very welcome.\n\nThis project is currently accepting all types of contributions, bug fixes,\nsecurity fixes, maintenance work, or new features.  However, please make sure\nto have a discussion about your new feature idea with the maintainers prior to\nbeginning development to maximize the chances of your change being accepted.\nYou can start a conversation by creating a new issue on this repo summarizing\nyour idea.\n\nReporting Security Issues\n*************************\n\nPlease do not report security issues in public. Please email help@opencraft.com.\n\n.. |pypi-badge| image:: https://img.shields.io/pypi/v/section-to-course.svg\n    :target: https://pypi.python.org/pypi/section-to-course/\n    :alt: PyPI\n\n.. |ci-badge| image:: https://github.com/open-craft/section-to-course/workflows/Python%20CI/badge.svg?branch=main\n    :target: https://github.com/open-craft/section-to-course/actions\n    :alt: CI\n\n.. |codecov-badge| image:: https://codecov.io/github/open-craft/section-to-course/coverage.svg?branch=main\n    :target: https://codecov.io/github/open-craft/section-to-course?branch=main\n    :alt: Codecov\n\n.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/section-to-course.svg\n    :target: https://pypi.python.org/pypi/section-to-course/\n    :alt: Supported Python versions\n\n.. |license-badge| image:: https://img.shields.io/github/license/open-craft/section-to-course.svg\n    :target: https://github.com/open-craft/section-to-course/blob/main/LICENSE.txt\n    :alt: License\n\n.. |status-badge| image:: https://img.shields.io/badge/Status-Experimental-yellow\n    :alt: Project status\n\n\nChange Log\n##########\n\n..\n   All enhancements and patches to section_to_course will be documented\n   in this file. It adheres to the structure of https://keepachangelog.com/ ,\n   but in reStructuredText instead of Markdown (for ease of incorporation into\n   Sphinx documentation and the PyPI description).\n\n   This project adheres to Semantic Versioning (https://semver.org/).\n\n.. There should always be an \"Unreleased\" section for changes pending release.\n\nUnreleased\n**********\n\n[0.4.3] - 2024-02-21\n********************\nFixed\n=======\n* Compatibility of ``compat`` imports with post Quince releases.\n\n[0.4.2] - 2023-11-15\n********************\n\nChanged\n=======\n\n* Upgraded tox from ``v3`` to ``v4`` and removed ``tox-battery``.\n\nAdded\n=====\n\n* Created a new test for missing migrations and added it to the CI.\n\nFixed\n=====\n\n* Added a missing Django migration.\n* Replaced the invalid ``ROOT_URLCONF`` in ``test_settings.py``.\n* Made ``./manage.py`` executable.\n\n[0.4.1] - 2023-11-07\n********************\n\nFixed\n=====\n\n* Compatibility of ``compat`` imports with Palm.\n\n[0.4.0] - 2023-05-18\n********************\n\nChanged\n=======\n\n* Removed course autocomplete for performance reasons. Source courses must now be specified by course key pasted into the source course ID field.\n\nAdded\n=====\n\n* Github integration-tests action.\n\n[0.3.0] - 2023-05-12\n********************\n\nChanged\n=======\n\n* New section-based courses are self-paced.\n\n[0.2.0] - 2023-05-10\n********************\n\nAdded\n=====\n\n* Admin views for creating new section-based courses.\n* First release on PyPI.\n\n[0.1.0] - 2023-04-03\n********************\n\nAdded\n=====\n\n* Initial section-derived course creation code.\n",
    "bugtrack_url": null,
    "license": "AGPL 3.0",
    "summary": "Factors sections from Open edX courses into their own new course.",
    "version": "0.4.3",
    "project_urls": {
        "Homepage": "https://github.com/open-craft/section-to-course"
    },
    "split_keywords": [
        "python",
        "edx"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7e6ab7a13de88518604e84342d8fb097c0d759279a5d9a8f7f2494e77768ac83",
                "md5": "87b6bad8706b00bd1521ac01507448e0",
                "sha256": "a9dcb6e05430cb93157da25d37352a3c338af4d8e33c3388e52568b8fd278849"
            },
            "downloads": -1,
            "filename": "section_to_course-0.4.3-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "87b6bad8706b00bd1521ac01507448e0",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": ">=3.8",
            "size": 31173,
            "upload_time": "2024-02-21T14:17:32",
            "upload_time_iso_8601": "2024-02-21T14:17:32.968812Z",
            "url": "https://files.pythonhosted.org/packages/7e/6a/b7a13de88518604e84342d8fb097c0d759279a5d9a8f7f2494e77768ac83/section_to_course-0.4.3-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9e7fa26bac5087ccb5bcc24d36a2a0c35aca4cc35645af97412eb687255741ff",
                "md5": "f4f21b13b61e9ab5df134b5690894db0",
                "sha256": "ee7c9ac7f65faa9264485a0544e1b4f98b1b877f3e4f84647601cc078f44fdce"
            },
            "downloads": -1,
            "filename": "section-to-course-0.4.3.tar.gz",
            "has_sig": false,
            "md5_digest": "f4f21b13b61e9ab5df134b5690894db0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 32530,
            "upload_time": "2024-02-21T14:17:34",
            "upload_time_iso_8601": "2024-02-21T14:17:34.726503Z",
            "url": "https://files.pythonhosted.org/packages/9e/7f/a26bac5087ccb5bcc24d36a2a0c35aca4cc35645af97412eb687255741ff/section-to-course-0.4.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-21 14:17:34",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "open-craft",
    "github_project": "section-to-course",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "tox": true,
    "lcname": "section-to-course"
}
        
Elapsed time: 0.21227s