Metadata-Version: 2.1
Name: edx-bulk-grades
Version: 1.0.1
Summary: Support for bulk scoring and grading
Home-page: https://github.com/openedx/edx-bulk-grades
Author: edX
Author-email: oscm@edx.org
License: AGPL 3.0
Keywords: Django edx
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: Django
Classifier: Framework :: Django :: 3.2
Classifier: Framework :: Django :: 4.0
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
License-File: LICENSE.txt

edx-bulk-grades
=============================

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

Support for bulk scoring and grading. This adds models and an API for reading and modifying
scores and grades in bulk.

Overview
---------

The ``README.rst`` file should then provide an overview of the code in this
repository, including the main components and useful entry points for starting
to understand the code in more detail.
edx-bulk-grades is a library that runs under lms. It uses the configuration settings defined in lms as well.
In order to use, the library must be installed into edx-platform.

Using with Docker Devstack
--------------------------
Prerequisite: Have your Open edX https://github.com/openedx/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 bulk-grades and reinstall your local copy. You can just copy the following line::

    pip uninstall edx-bulk-grades -y; pip install -e /edx/src/edx-bulk-grades

   Or, you can run the following make command::

    make install-local

3. Now, get your bulk-grades development environment set up::

    cd /edx/src/edx-bulk-grades
    virtualenv edx-bulk-grades-env
    source edx-bulk-grades-env/bin/activate
    make requirements

Making Code Changes
-------------------

1. | After checking out a new branch, increment ``__version__`` by the smallest possible value located in ``bulk_grades/__init__.py``.
   | This will allow edx-platform to pick up the new version.

2. | Once a branch has been merged, it is necessary to make a release on github, specifying the new version from
   | ``__version__`` set above.

3. In order for platform to use the newest version of bulk-grades, it is necessary to run the::

    $ make upgrade

from docker shell of edx-platform. This will increment the version of edx-bulk-grades to the correct one.

4. Once the code from step 3 is merged, this will trigger deployment of the correct versions of edx platform and bulk-grades.

Unit Testing
------------
mock_apps folder: Since bulk_grades depends on platform during actual runtime, for unit tests, we need to mock various
endpoints and calls. To this end, they are mocked in the mock_apps folder.

Since edx-bulk grades runs under platform, it is necessary to connect to platform docker::

    $ make lms-shell

followed by::

    $ cd /edx/src/edx-bulk-grades
    make test

This will run the unit tests and code coverage numbers

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 <https://github.com/openedx/edx-platform/blob/master/CONTRIBUTING.rst>`_ for details.

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

The pull request description template should be automatically applied if you are creating a pull request from GitHub. Otherwise you
can find it at `PULL_REQUEST_TEMPLATE.md <https://github.com/openedx/edx-bulk-grades/blob/master/.github/PULL_REQUEST_TEMPLATE.md>`_.

The issue report template should be automatically applied if you are creating an issue on GitHub as well. Otherwise you
can find it at `ISSUE_TEMPLATE.md <https://github.com/openedx/edx-bulk-grades/blob/master/.github/ISSUE_TEMPLATE.md>`_.

Reporting Security Issues
-------------------------

Please do not report security issues in public. Please email security@edx.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.

.. _list of resources: https://open.edx.org/getting-help


.. |pypi-badge| image:: https://img.shields.io/pypi/v/edx-bulk-grades.svg
    :target: https://pypi.python.org/pypi/edx-bulk-grades/
    :alt: PyPI

.. |travis-badge| image:: https://travis-ci.com/edx/edx-bulk-grades.svg?branch=master
    :target: https://travis-ci.com/edx/edx-bulk-grades
    :alt: Travis

.. |codecov-badge| image:: http://codecov.io/github/edx/edx-bulk-grades/coverage.svg?branch=master
    :target: http://codecov.io/github/edx/edx-bulk-grades?branch=master
    :alt: Codecov

.. |doc-badge| image:: https://readthedocs.org/projects/edx-bulk-grades/badge/?version=latest
    :target: http://edx-bulk-grades.readthedocs.io/en/latest/
    :alt: Documentation

.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/edx-bulk-grades.svg
    :target: https://pypi.python.org/pypi/edx-bulk-grades/
    :alt: Supported Python versions

.. |license-badge| image:: https://img.shields.io/github/license/edx/edx-bulk-grades.svg
    :target: https://github.com/openedx/edx-bulk-grades/blob/master/LICENSE.txt
    :alt: License


Change Log
----------

..
   All enhancements and patches to bulk_grades will be documented
   in this file.  It adheres to the structure of http://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 (http://semver.org/).

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

Unreleased

[1.0.1] - 2022-12-21
* Fix a bug in building error response messaging.

[1.0.0] - 2022-02-16
* Dropped Support for Django22, 30 and 31
* Added Support for Django40
~~~~~~~~~~

[0.9.12 - 2021-09-02
* Fix grade history not rendering on error
~~~~~~~~~~

[0.9.1] - 2021-08-02
* Feat repeat user error should also show the first occurence
~~~~~~~~~~

[0.9.0] - 2021-07-20
~~~~~~~~~~~~~~~~~~~~
* Added support for django 3.2

[0.8.14] - 2021-07-12
* Update csv import error message
=======

[0.8.13] - 2021-07-12
~~~~~~~~~~~~~~~~~~~~~
* Fix bug where we ignore repeat user in the csv import

[0.8.12] - 2021-06-21
~~~~~~~~~~~~~~~~~~~~~
* Fixed import csv to not working with multiple sections per-user override

[0.8.11] - 2021-07-09
~~~~~~~~~~~~~~~~~~~~~
* Fixed a bug causing bulk management import history to break when import had pre-filtered columns

[0.8.10] - 2021-05-14
~~~~~~~~~~~~~~~~~~~~~
* Updated dependencies

[0.8.9] - 2021-04-09
~~~~~~~~~~~~~~~~~~~~~
* Updated dependencies

[0.8.8] - 2021-04-08
~~~~~~~~~~~~~~~~~~~~~
* Added excludedCourseRoles to grade export endpoint

[0.8.7] - 2021-03-15
~~~~~~~~~~~~~~~~~~~~~
* Upgrade super-csv to 2.0.1
* Only show modified subsections in the Bulk Grade Override Report.

[0.8.6] - 2021-01-22
~~~~~~~~~~~~~~~~~~~~~
* Added a management command ``install-local`` that will install your local code into devstack LMS
* GradeCSVProcessor export now includes an additional column per subsection, ``grade-{subsection_id}``. 
  This column is equal to the ``original_grade`` column for that subsection if there is no override, or equal to ``previous_override`` if there is an override.

[0.8.5] - 2020-12-24
~~~~~~~~~~~~~~~~~~~~~
* Upgrading celery to 5.0
* Removed python 3.5 classifier as its support is dropped earlier

[0.8.4] - 2020-12-24
~~~~~~~~~~~~~~~~~~~~~
* Adding celery5.0 testing using tox.

[0.8.3] - 2020-11-19
~~~~~~~~~~~~~~~~~~~~~
* Updated the build status badge in README.rst to point to travis-ci.com instead of travis-ci.org

[0.8.2] - 2020-11-02
~~~~~~~~~~~~~~~~~~~~~
* Added ``active_only`` field to ``GradeCSVProcessor``
* For Grade CSV bulk download, only include active enrollments

[0.8.0] - 2020-09-03
~~~~~~~~~~~~~~~~~~~~~
* Upgraded to celery 4.2.2
* Removed django-celery

[0.6.6] - 2019-12-13
~~~~~~~~~~~~~~~~~~~~~
* Added Support for Django22.

[0.6.5] - 2019-12-05
~~~~~~~~~~~~~~~~~~~~~
* In ``get_scores()``, account for case where no ``ScoreOverrider`` exists.

[0.6.4] - 2019-09-24
~~~~~~~~~~~~~~~~~~~~~
* ``GradeCSVProcessor.save()`` should return something.

[0.6.3] - 2019-09-24
~~~~~~~~~~~~~~~~~~~~~
* Upgrade super-csv to 0.9.4, make sure to pass ``user_id`` to GradeCSVProcessor.__init__().

[0.6.2] - 2019-09-23
~~~~~~~~~~~~~~~~~~~~~
* Upgrade super-csv to 0.9.3

[0.6.1] - 2019-09-17
~~~~~~~~~~~~~~~~~~~~~
* Call grades api with `comment` when doing bulk upload
* Add `user_id` field to GradeCSVProcessor to fix bulk_upload history entries

[0.6.0] - 2019-09-10
~~~~~~~~~~~~~~~~~~~~~
* Prevent Grade and Intervention CSV processors from producing duplicate columns.

[0.5.10] - 2019-09-06
~~~~~~~~~~~~~~~~~~~~~
* Prevent user from setting negative grades

[0.5.9] - 2019-08-28
~~~~~~~~~~~~~~~~~~~~
* Make intervention report display either grade override if exists or original grade.

[0.5.8] - 2019-08-26
~~~~~~~~~~~~~~~~~~~~
* Make intervention masters track nly. Some clan up.

[0.5.3] - 2019-08-16
~~~~~~~~~~~~~~~~~~~~
* Add support for filters to Interventions CSV report endpoint, mirroring bulk management filters

[0.5.2] - 2019-08-15
~~~~~~~~~~~~~~~~~~~~
* Bring datasource for grade information inline with what the rest of gradebook uses

[0.4.4] - 2019-08-13
~~~~~~~~~~~~~~~~~~~~
Add ability to filter by course grade, provided as a percentage to the endpoint.

[0.4.3] - 2019-08-12
~~~~~~~~~~~~~~~~~~~~
Add ability to filter by subsection grade, provided as a percentage to the endpoint

[0.4.1] - 2019-08-01
~~~~~~~~~~~~~~~~~~~~
Added ability to filter by subsection & assignment grading type for bulk management CSV downloads.

[0.1.4] - 2019-07-02
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Added an endpoint for this history of bulk management operations on grade overrides.

[0.1.0] - 2019-05-24
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Added
_____

* First release on PyPI.


