refactor: Move CourseEditLTIFieldsEnabledFlag to xblock-lti-consumer (#27529)

This commit is contained in:
Kshitij Sobti
2021-06-24 15:01:50 +05:30
committed by GitHub
parent 94b97c1f8f
commit b083ad13d6
18 changed files with 430 additions and 611 deletions

View File

@@ -20,6 +20,7 @@ from edx_proctoring.api import (
)
from edx_proctoring.exceptions import ProctoredExamNotFoundException
from help_tokens.core import HelpUrlExpert
from lti_consumer.models import CourseEditLTIFieldsEnabledFlag
from opaque_keys.edx.keys import CourseKey
from opaque_keys.edx.locator import LibraryUsageLocator
from pytz import UTC
@@ -29,7 +30,6 @@ from xblock.fields import Scope
from cms.djangoapps.contentstore.config.waffle import SHOW_REVIEW_RULES_FLAG
from cms.djangoapps.models.settings.course_grading import CourseGradingModel
from cms.djangoapps.xblock_config.models import CourseEditLTIFieldsEnabledFlag
from cms.lib.xblock.authoring_mixin import VISIBILITY_VIEW
from common.djangoapps.edxmako.shortcuts import render_to_string
from common.djangoapps.static_replace import replace_static_urls

View File

@@ -3,26 +3,10 @@ Django admin dashboard configuration for LMS XBlock infrastructure.
"""
from config_models.admin import ConfigurationModelAdmin, KeyedConfigurationModelAdmin
from config_models.admin import ConfigurationModelAdmin
from django.contrib import admin
from cms.djangoapps.xblock_config.forms import CourseEditLTIFieldsEnabledAdminForm
from cms.djangoapps.xblock_config.models import CourseEditLTIFieldsEnabledFlag, StudioConfig
from cms.djangoapps.xblock_config.models import StudioConfig
class CourseEditLTIFieldsEnabledFlagAdmin(KeyedConfigurationModelAdmin):
"""
Admin for LTI Fields Editing feature on course-by-course basis.
Allows searching by course id.
"""
form = CourseEditLTIFieldsEnabledAdminForm
search_fields = ['course_id']
fieldsets = (
(None, {
'fields': ('course_id', 'enabled'),
'description': 'Enter a valid course id. If it is invalid, an error message will be displayed.'
}),
)
admin.site.register(StudioConfig, ConfigurationModelAdmin)
admin.site.register(CourseEditLTIFieldsEnabledFlag, CourseEditLTIFieldsEnabledFlagAdmin)

View File

@@ -1,29 +0,0 @@
"""
Defines a form for providing validation of LTI consumer course-specific configuration.
"""
import logging
from django import forms
from cms.djangoapps.xblock_config.models import CourseEditLTIFieldsEnabledFlag
from openedx.core.lib.courses import clean_course_id
log = logging.getLogger(__name__)
class CourseEditLTIFieldsEnabledAdminForm(forms.ModelForm):
"""
Form for LTI consumer course-specific configuration to verify the course id.
"""
class Meta:
model = CourseEditLTIFieldsEnabledFlag
fields = '__all__'
def clean_course_id(self):
"""
Validate the course id
"""
return clean_course_id(self)

View File

@@ -0,0 +1,22 @@
# Generated by Django 2.2.20 on 2021-05-05 12:03
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('xblock_config', '0002_courseeditltifieldsenabledflag'),
]
operations = [
# Since this model only needs to be moved, we just want to
# indicate to Django that the model is no longer here without
# actually deleting any data from the database.
migrations.SeparateDatabaseAndState(
database_operations=[],
state_operations=[
migrations.DeleteModel('CourseEditLTIFieldsEnabledFlag')
],
)
]

View File

@@ -6,10 +6,6 @@ Includes:
"""
from config_models.models import ConfigurationModel
from django.db.models import TextField
from django.utils.encoding import python_2_unicode_compatible
from opaque_keys.edx.django.models import CourseKeyField
from openedx.core.lib.cache_utils import request_cached
class StudioConfig(ConfigurationModel):
@@ -30,57 +26,3 @@ class StudioConfig(ConfigurationModel):
"""
studio_config = cls.current()
return studio_config.enabled and block_type not in studio_config.disabled_blocks.split()
# TODO: Move CourseEditLTIFieldsEnabledFlag to LTI XBlock as a part of EDUCATOR-121
# reference: https://openedx.atlassian.net/browse/EDUCATOR-121
@python_2_unicode_compatible
class CourseEditLTIFieldsEnabledFlag(ConfigurationModel):
"""
Enables the editing of "request username" and "request email" fields
of LTI consumer for a specific course.
.. no_pii:
"""
KEY_FIELDS = ('course_id',)
course_id = CourseKeyField(max_length=255, db_index=True)
@classmethod
@request_cached()
def lti_access_to_learners_editable(cls, course_id, is_already_sharing_learner_info):
"""
Looks at the currently active configuration model to determine whether
the feature that enables editing of "request username" and "request email"
fields of LTI consumer is available or not.
Backwards Compatibility:
Enable this feature for a course run who was sharing learner username/email
in the past.
Arguments:
course_id (CourseKey): course id for which we need to check this configuration
is_already_sharing_learner_info (bool): indicates whether LTI consumer is
already sharing edX learner username/email.
"""
course_specific_config = (CourseEditLTIFieldsEnabledFlag.objects
.filter(course_id=course_id)
.order_by('-change_date')
.first())
if is_already_sharing_learner_info:
if not course_specific_config:
CourseEditLTIFieldsEnabledFlag.objects.create(course_id=course_id, enabled=True)
return True
return course_specific_config.enabled if course_specific_config else False
def __str__(self):
en = "Not "
if self.enabled:
en = ""
return "Course '{course_id}': Edit LTI access to Learner information {en}Enabled".format(
course_id=str(self.course_id),
en=en,
)

View File

@@ -1,93 +0,0 @@
"""
Tests for the models that configures Edit LTI fields feature.
"""
from contextlib import contextmanager
import ddt
from django.test import TestCase
from edx_django_utils.cache import RequestCache
from opaque_keys.edx.locator import CourseLocator
from cms.djangoapps.xblock_config.models import CourseEditLTIFieldsEnabledFlag
@contextmanager
def lti_consumer_fields_editing_flag(course_id, enabled_for_course=False):
"""
Yields CourseEditLTIFieldsEnabledFlag record for unit tests
Arguments:
course_id (CourseLocator): course locator to control this feature for.
enabled_for_course (bool): whether feature is enabled for 'course_id'
"""
RequestCache.clear_all_namespaces()
CourseEditLTIFieldsEnabledFlag.objects.create(course_id=course_id, enabled=enabled_for_course)
yield
@ddt.ddt
class TestLTIConsumerHideFieldsFlag(TestCase):
"""
Tests the behavior of the flags for lti consumer fields' editing feature.
These are set via Django admin settings.
"""
def setUp(self):
super().setUp()
self.course_id = CourseLocator(org="edx", course="course", run="run")
@ddt.data(
(True, True),
(True, False),
(False, True),
(False, False),
)
@ddt.unpack
def test_lti_fields_editing_feature_flags(self, enabled_for_course, is_already_sharing_learner_info):
"""
Test that feature flag works correctly with course-specific configuration in combination with
a boolean which indicates whether a course-run already sharing learner username/email - given
the course-specific configuration record is present.
"""
with lti_consumer_fields_editing_flag(
course_id=self.course_id,
enabled_for_course=enabled_for_course
):
feature_enabled = CourseEditLTIFieldsEnabledFlag.lti_access_to_learners_editable(
self.course_id,
is_already_sharing_learner_info,
)
self.assertEqual(feature_enabled, enabled_for_course)
@ddt.data(True, False)
def test_lti_fields_editing_is_backwards_compatible(self, is_already_sharing_learner_info):
"""
Test that feature flag works correctly with a boolean which indicates whether a course-run already
sharing learner username/email - given the course-specific configuration record is not set previously.
This tests the backward compatibility which currently is: if an existing course run is already
sharing learner information then this feature should be enabled for that course run by default.
"""
feature_enabled = CourseEditLTIFieldsEnabledFlag.lti_access_to_learners_editable(
self.course_id,
is_already_sharing_learner_info,
)
feature_flag_created = CourseEditLTIFieldsEnabledFlag.objects.filter(course_id=self.course_id).exists()
self.assertEqual(feature_flag_created, is_already_sharing_learner_info)
self.assertEqual(feature_enabled, is_already_sharing_learner_info)
def test_enable_disable_course_flag(self):
"""
Ensures that the flag, once enabled for a course, can also be disabled.
"""
with lti_consumer_fields_editing_flag(
course_id=self.course_id,
enabled_for_course=True
):
self.assertTrue(CourseEditLTIFieldsEnabledFlag.lti_access_to_learners_editable(self.course_id, False))
with lti_consumer_fields_editing_flag(
course_id=self.course_id,
enabled_for_course=False
):
self.assertFalse(CourseEditLTIFieldsEnabledFlag.lti_access_to_learners_editable(self.course_id, False))

View File

@@ -102,6 +102,3 @@ maxminddb<2.0.0 # maxminddb 2.0.0 has dropped support for Python 3.5
path<13.2.0 # path 13.2.0 drops support for Python 3.5
zipp==1.0.0 # zipp 2.0.0 requires Python >= 3.6
geoip2<4.0.1 # geoip2 requires Python 3.6
# There are corresponding changes in edx-platform that need to be made before we can update.
lti-consumer-xblock<2.11.0

View File

@@ -1,5 +1,5 @@
#
# This file is autogenerated by pip-compile
# This file is autogenerated by pip-compile with python 3.8
# To update, run:
#
# make upgrade
@@ -62,7 +62,6 @@ numpy==1.16.5
# chem
# matplotlib
# openedx-calc
# scipy
openedx-calc==1.0.9
# via -r requirements/edx-sandbox/py35.in
pycparser==2.20

View File

@@ -1,5 +1,5 @@
#
# This file is autogenerated by pip-compile
# This file is autogenerated by pip-compile with python 3.8
# To update, run:
#
# make upgrade

View File

@@ -1,5 +1,5 @@
#
# This file is autogenerated by pip-compile
# This file is autogenerated by pip-compile with python 3.8
# To update, run:
#
# make upgrade
@@ -70,16 +70,16 @@ bleach==3.3.0
# ora2
# xblock-drag-and-drop-v2
# xblock-poll
boto==2.39.0
# via
# -r requirements/edx/base.in
# edxval
boto3==1.4.8
# via
# -r requirements/edx/base.in
# django-ses
# fs-s3fs
# ora2
boto==2.39.0
# via
# -r requirements/edx/base.in
# edxval
botocore==1.8.17
# via
# -r requirements/edx/base.in
@@ -152,6 +152,68 @@ defusedxml==0.7.1
# python3-saml
# safe-lxml
# social-auth-core
django==2.2.24
# via
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.in
# django-appconf
# django-classy-tags
# django-config-models
# django-cors-headers
# django-crum
# django-fernet-fields
# django-filter
# django-method-override
# django-model-utils
# django-mptt
# django-multi-email-field
# django-mysql
# django-oauth-toolkit
# django-pyfs
# django-ratelimit-backend
# django-sekizai
# django-ses
# django-splash
# django-statici18n
# django-storages
# django-user-tasks
# django-wiki
# djangorestframework
# drf-jwt
# drf-yasg
# edx-ace
# edx-api-doc-tools
# edx-bulk-grades
# edx-celeryutils
# edx-completion
# edx-django-release-util
# edx-django-sites-extensions
# edx-django-utils
# edx-drf-extensions
# edx-enterprise
# edx-event-routing-backends
# edx-i18n-tools
# edx-milestones
# edx-opaque-keys
# edx-organizations
# edx-proctoring
# edx-rbac
# edx-search
# edx-submissions
# edx-toggles
# edx-when
# edxval
# enmerkar
# enmerkar-underscore
# event-tracking
# help-tokens
# jsonfield2
# lti-consumer-xblock
# ora2
# rest-condition
# super-csv
# xss-utils
django-appconf==1.0.4
# via
# -r requirements/edx/base.in
@@ -170,6 +232,7 @@ django-config-models==2.1.1
# -r requirements/edx/base.in
# edx-enterprise
# edx-event-routing-backends
# lti-consumer-xblock
django-cookies-samesite==0.9.0
# via -r requirements/edx/base.in
django-cors-headers==2.5.3
@@ -245,10 +308,10 @@ django-pipeline==2.0.6
# via -r requirements/edx/base.in
django-pyfs==3.0
# via -r requirements/edx/base.in
git+https://github.com/edx/django-ratelimit-backend.git@v2.0.1a5#egg=django-ratelimit-backend==2.0.1a5
# via -r requirements/edx/github.in
django-ratelimit==3.0.1
# via -r requirements/edx/base.in
git+https://github.com/edx/django-ratelimit-backend.git@v2.0.1a5#egg=django-ratelimit-backend==2.0.1a5
# via -r requirements/edx/github.in
django-require==1.0.11
# via -r requirements/edx/base.in
django-sekizai==2.0.0
@@ -287,70 +350,6 @@ django-webpack-loader==0.7.0
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.in
# edx-proctoring
django==2.2.24
# via
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.in
# django-appconf
# django-classy-tags
# django-config-models
# django-cors-headers
# django-crum
# django-fernet-fields
# django-filter
# django-method-override
# django-model-utils
# django-mptt
# django-multi-email-field
# django-mysql
# django-oauth-toolkit
# django-pyfs
# django-ratelimit-backend
# django-sekizai
# django-ses
# django-splash
# django-statici18n
# django-storages
# django-user-tasks
# django-wiki
# djangorestframework
# drf-jwt
# drf-yasg
# edx-ace
# edx-api-doc-tools
# edx-bulk-grades
# edx-celeryutils
# edx-completion
# edx-django-release-util
# edx-django-sites-extensions
# edx-django-utils
# edx-drf-extensions
# edx-enterprise
# edx-event-routing-backends
# edx-i18n-tools
# edx-milestones
# edx-opaque-keys
# edx-organizations
# edx-proctoring
# edx-rbac
# edx-search
# edx-submissions
# edx-toggles
# edx-when
# edxval
# enmerkar
# enmerkar-underscore
# event-tracking
# help-tokens
# jsonfield2
# lti-consumer-xblock
# ora2
# rest-condition
# super-csv
# xss-utils
djangorestframework-xml==2.0.0
# via edx-enterprise
djangorestframework==3.12.4
# via
# -r requirements/edx/base.in
@@ -368,6 +367,8 @@ djangorestframework==3.12.4
# ora2
# rest-condition
# super-csv
djangorestframework-xml==2.0.0
# via edx-enterprise
docopt==0.6.2
# via xmodule
docutils==0.16
@@ -453,13 +454,13 @@ edx-opaque-keys[django]==2.2.1
# xmodule
edx-organizations==6.9.0
# via -r requirements/edx/base.in
edx-proctoring-proctortrack==1.0.5
# via -r requirements/edx/base.in
edx-proctoring==3.13.2
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.in
# edx-proctoring-proctortrack
edx-proctoring-proctortrack==1.0.5
# via -r requirements/edx/base.in
edx-rbac==1.4.2
# via edx-enterprise
edx-rest-api-client==5.3.0
@@ -492,28 +493,28 @@ edx-when==2.0.0
# edx-proctoring
edxval==2.0.3
# via -r requirements/edx/base.in
elasticsearch==7.13.1
elasticsearch==7.13.2
# via edx-search
enmerkar-underscore==2.0.0
# via -r requirements/edx/base.in
enmerkar==0.7.1
# via enmerkar-underscore
enmerkar-underscore==2.0.0
# via -r requirements/edx/base.in
event-tracking==1.0.4
# via
# -r requirements/edx/base.in
# edx-event-routing-backends
# edx-proctoring
# edx-search
fs-s3fs==0.1.8
# via
# -r requirements/edx/base.in
# django-pyfs
fs==2.0.18
# via
# -r requirements/edx/base.in
# django-pyfs
# fs-s3fs
# xblock
fs-s3fs==0.1.8
# via
# -r requirements/edx/base.in
# django-pyfs
future==0.18.2
# via
# django-ses
@@ -591,10 +592,8 @@ libsass==0.10.0
# ora2
loremipsum==1.0.5
# via ora2
lti-consumer-xblock==2.10.1
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.in
lti-consumer-xblock==2.11.0
# via -r requirements/edx/base.in
lxml==4.5.0
# via
# -c requirements/edx/../constraints.txt
@@ -650,7 +649,7 @@ mpmath==1.2.1
# via sympy
mysqlclient==2.0.3
# via -r requirements/edx/base.in
newrelic==6.4.2.159
newrelic==6.4.3.160
# via
# -r requirements/edx/base.in
# edx-django-utils
@@ -681,6 +680,11 @@ packaging==20.9
# via
# bleach
# drf-yasg
path==13.1.0
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/paver.txt
# path.py
path.py==12.5.0
# via
# edx-enterprise
@@ -688,11 +692,6 @@ path.py==12.5.0
# ora2
# staff-graded-xblock
# xmodule
path==13.1.0
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/paver.txt
# path.py
paver==1.3.4
# via -r requirements/edx/paver.txt
pbr==5.6.0
@@ -831,10 +830,6 @@ redis==3.5.3
# via -r requirements/edx/base.in
regex==2021.4.4
# via nltk
requests-oauthlib==1.3.0
# via
# -r requirements/edx/base.in
# social-auth-core
requests==2.25.1
# via
# -r requirements/edx/paver.txt
@@ -856,14 +851,18 @@ requests==2.25.1
# slumber
# social-auth-core
# tableauserverclient
requests-oauthlib==1.3.0
# via
# -r requirements/edx/base.in
# social-auth-core
rest-condition==1.0.3
# via
# -r requirements/edx/base.in
# edx-drf-extensions
ruamel.yaml.clib==0.2.2
# via ruamel.yaml
ruamel.yaml==0.17.9
# via drf-yasg
ruamel.yaml.clib==0.2.2
# via ruamel.yaml
rules==3.0
# via
# -r requirements/edx/base.in
@@ -1018,18 +1017,6 @@ wrapt==1.11.2
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/paver.txt
git+https://github.com/edx-solutions/xblock-drag-and-drop-v2@v2.3.5#egg=xblock-drag-and-drop-v2==2.3.5
# via -r requirements/edx/github.in
git+https://github.com/open-craft/xblock-poll@922cd36fb1c3cfe00b4ce03b19a13185d136447d#egg=xblock-poll==1.10.2
# via -r requirements/edx/github.in
xblock-utils==2.1.3
# via
# -r requirements/edx/base.in
# edx-sga
# lti-consumer-xblock
# staff-graded-xblock
# xblock-drag-and-drop-v2
# xblock-google-drive
xblock==1.4.2
# via
# -r requirements/edx/base.in
@@ -1049,6 +1036,18 @@ xblock==1.4.2
# xblock-google-drive
# xblock-poll
# xblock-utils
git+https://github.com/edx-solutions/xblock-drag-and-drop-v2@v2.3.5#egg=xblock-drag-and-drop-v2==2.3.5
# via -r requirements/edx/github.in
git+https://github.com/open-craft/xblock-poll@922cd36fb1c3cfe00b4ce03b19a13185d136447d#egg=xblock-poll==1.10.2
# via -r requirements/edx/github.in
xblock-utils==2.1.3
# via
# -r requirements/edx/base.in
# edx-sga
# lti-consumer-xblock
# staff-graded-xblock
# xblock-drag-and-drop-v2
# xblock-google-drive
xmlsec==1.3.11
# via python3-saml
xss-utils==0.2.0

View File

@@ -1,5 +1,5 @@
#
# This file is autogenerated by pip-compile
# This file is autogenerated by pip-compile with python 3.8
# To update, run:
#
# make upgrade
@@ -16,12 +16,12 @@ inflect==3.0.2
# via
# -c requirements/edx/../constraints.txt
# jinja2-pluralize
jinja2-pluralize==0.3.0
# via diff-cover
jinja2==3.0.1
# via
# diff-cover
# jinja2-pluralize
jinja2-pluralize==0.3.0
# via diff-cover
markupsafe==2.0.1
# via jinja2
more-itertools==8.8.0

View File

@@ -1,5 +1,5 @@
#
# This file is autogenerated by pip-compile
# This file is autogenerated by pip-compile with python 3.8
# To update, run:
#
# make upgrade
@@ -94,16 +94,16 @@ bleach==3.3.0
# xblock-poll
bok-choy==1.1.1
# via -r requirements/edx/testing.txt
boto==2.39.0
# via
# -r requirements/edx/testing.txt
# edxval
boto3==1.4.8
# via
# -r requirements/edx/testing.txt
# django-ses
# fs-s3fs
# ora2
boto==2.39.0
# via
# -r requirements/edx/testing.txt
# edxval
botocore==1.8.17
# via
# -r requirements/edx/testing.txt
@@ -136,10 +136,6 @@ chardet==4.0.0
# requests
chem==1.2.0
# via -r requirements/edx/testing.txt
click-log==0.3.2
# via
# -r requirements/edx/testing.txt
# edx-lint
click==7.1.2
# via
# -c requirements/edx/../constraints.txt
@@ -152,6 +148,10 @@ click==7.1.2
# nltk
# pip-tools
# user-util
click-log==0.3.2
# via
# -r requirements/edx/testing.txt
# edx-lint
code-annotations==1.1.2
# via
# -r requirements/edx/testing.txt
@@ -212,6 +212,70 @@ distlib==0.3.2
# via
# -r requirements/edx/testing.txt
# virtualenv
django==2.2.24
# via
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
# -c requirements/edx/../constraints.txt
# -r requirements/edx/testing.txt
# django-appconf
# django-classy-tags
# django-config-models
# django-cors-headers
# django-crum
# django-debug-toolbar
# django-fernet-fields
# django-filter
# django-method-override
# django-model-utils
# django-mptt
# django-multi-email-field
# django-mysql
# django-oauth-toolkit
# django-pyfs
# django-ratelimit-backend
# django-sekizai
# django-ses
# django-splash
# django-statici18n
# django-storages
# django-user-tasks
# django-wiki
# djangorestframework
# drf-jwt
# drf-yasg
# edx-ace
# edx-api-doc-tools
# edx-bulk-grades
# edx-celeryutils
# edx-completion
# edx-django-release-util
# edx-django-sites-extensions
# edx-django-utils
# edx-drf-extensions
# edx-enterprise
# edx-event-routing-backends
# edx-i18n-tools
# edx-lint
# edx-milestones
# edx-opaque-keys
# edx-organizations
# edx-proctoring
# edx-rbac
# edx-search
# edx-submissions
# edx-toggles
# edx-when
# edxval
# enmerkar
# enmerkar-underscore
# event-tracking
# help-tokens
# jsonfield2
# lti-consumer-xblock
# ora2
# rest-condition
# super-csv
# xss-utils
django-appconf==1.0.4
# via
# -r requirements/edx/testing.txt
@@ -234,6 +298,7 @@ django-config-models==2.1.1
# -r requirements/edx/testing.txt
# edx-enterprise
# edx-event-routing-backends
# lti-consumer-xblock
django-cookies-samesite==0.9.0
# via -r requirements/edx/testing.txt
django-cors-headers==2.5.3
@@ -317,10 +382,10 @@ django-pipeline==2.0.6
# via -r requirements/edx/testing.txt
django-pyfs==3.0
# via -r requirements/edx/testing.txt
git+https://github.com/edx/django-ratelimit-backend.git@v2.0.1a5#egg=django-ratelimit-backend==2.0.1a5
# via -r requirements/edx/testing.txt
django-ratelimit==3.0.1
# via -r requirements/edx/testing.txt
git+https://github.com/edx/django-ratelimit-backend.git@v2.0.1a5#egg=django-ratelimit-backend==2.0.1a5
# via -r requirements/edx/testing.txt
django-require==1.0.11
# via -r requirements/edx/testing.txt
django-sekizai==2.0.0
@@ -359,74 +424,6 @@ django-webpack-loader==0.7.0
# -c requirements/edx/../constraints.txt
# -r requirements/edx/testing.txt
# edx-proctoring
django==2.2.24
# via
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
# -c requirements/edx/../constraints.txt
# -r requirements/edx/testing.txt
# django-appconf
# django-classy-tags
# django-config-models
# django-cors-headers
# django-crum
# django-debug-toolbar
# django-fernet-fields
# django-filter
# django-method-override
# django-model-utils
# django-mptt
# django-multi-email-field
# django-mysql
# django-oauth-toolkit
# django-pyfs
# django-ratelimit-backend
# django-sekizai
# django-ses
# django-splash
# django-statici18n
# django-storages
# django-user-tasks
# django-wiki
# djangorestframework
# drf-jwt
# drf-yasg
# edx-ace
# edx-api-doc-tools
# edx-bulk-grades
# edx-celeryutils
# edx-completion
# edx-django-release-util
# edx-django-sites-extensions
# edx-django-utils
# edx-drf-extensions
# edx-enterprise
# edx-event-routing-backends
# edx-i18n-tools
# edx-lint
# edx-milestones
# edx-opaque-keys
# edx-organizations
# edx-proctoring
# edx-rbac
# edx-search
# edx-submissions
# edx-toggles
# edx-when
# edxval
# enmerkar
# enmerkar-underscore
# event-tracking
# help-tokens
# jsonfield2
# lti-consumer-xblock
# ora2
# rest-condition
# super-csv
# xss-utils
djangorestframework-xml==2.0.0
# via
# -r requirements/edx/testing.txt
# edx-enterprise
djangorestframework==3.12.4
# via
# -r requirements/edx/testing.txt
@@ -444,6 +441,10 @@ djangorestframework==3.12.4
# ora2
# rest-condition
# super-csv
djangorestframework-xml==2.0.0
# via
# -r requirements/edx/testing.txt
# edx-enterprise
docopt==0.6.2
# via
# -r requirements/edx/testing.txt
@@ -541,13 +542,13 @@ edx-opaque-keys[django]==2.2.1
# xmodule
edx-organizations==6.9.0
# via -r requirements/edx/testing.txt
edx-proctoring-proctortrack==1.0.5
# via -r requirements/edx/testing.txt
edx-proctoring==3.13.2
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/testing.txt
# edx-proctoring-proctortrack
edx-proctoring-proctortrack==1.0.5
# via -r requirements/edx/testing.txt
edx-rbac==1.4.2
# via
# -r requirements/edx/testing.txt
@@ -586,16 +587,16 @@ edx-when==2.0.0
# edx-proctoring
edxval==2.0.3
# via -r requirements/edx/testing.txt
elasticsearch==7.13.1
elasticsearch==7.13.2
# via
# -r requirements/edx/testing.txt
# edx-search
enmerkar-underscore==2.0.0
# via -r requirements/edx/testing.txt
enmerkar==0.7.1
# via
# -r requirements/edx/testing.txt
# enmerkar-underscore
enmerkar-underscore==2.0.0
# via -r requirements/edx/testing.txt
event-tracking==1.0.4
# via
# -r requirements/edx/testing.txt
@@ -621,16 +622,16 @@ freezegun==0.3.12
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/testing.txt
fs-s3fs==0.1.8
# via
# -r requirements/edx/testing.txt
# django-pyfs
fs==2.0.18
# via
# -r requirements/edx/testing.txt
# django-pyfs
# fs-s3fs
# xblock
fs-s3fs==0.1.8
# via
# -r requirements/edx/testing.txt
# django-pyfs
future==0.18.2
# via
# -r requirements/edx/testing.txt
@@ -706,10 +707,6 @@ itypes==1.2.0
# via
# -r requirements/edx/testing.txt
# coreapi
jinja2-pluralize==0.3.0
# via
# -r requirements/edx/testing.txt
# diff-cover
jinja2==3.0.1
# via
# -r requirements/edx/testing.txt
@@ -718,6 +715,10 @@ jinja2==3.0.1
# diff-cover
# jinja2-pluralize
# sphinx
jinja2-pluralize==0.3.0
# via
# -r requirements/edx/testing.txt
# diff-cover
jmespath==0.10.0
# via
# -r requirements/edx/testing.txt
@@ -751,10 +752,6 @@ kombu==4.6.11
# celery
laboratory==1.0.2
# via -r requirements/edx/testing.txt
lazy-object-proxy==1.6.0
# via
# -r requirements/edx/testing.txt
# astroid
lazy==1.4
# via
# -r requirements/edx/testing.txt
@@ -762,6 +759,10 @@ lazy==1.4
# bok-choy
# lti-consumer-xblock
# ora2
lazy-object-proxy==1.6.0
# via
# -r requirements/edx/testing.txt
# astroid
libsass==0.10.0
# via
# -r requirements/edx/testing.txt
@@ -770,10 +771,8 @@ loremipsum==1.0.5
# via
# -r requirements/edx/testing.txt
# ora2
lti-consumer-xblock==2.10.1
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/testing.txt
lti-consumer-xblock==2.11.0
# via -r requirements/edx/testing.txt
lxml==4.5.0
# via
# -c requirements/edx/../constraints.txt
@@ -847,13 +846,13 @@ mpmath==1.2.1
# via
# -r requirements/edx/testing.txt
# sympy
mypy-extensions==0.4.3
# via mypy
mypy==0.910
# via -r requirements/edx/development.in
mypy-extensions==0.4.3
# via mypy
mysqlclient==2.0.3
# via -r requirements/edx/testing.txt
newrelic==6.4.2.159
newrelic==6.4.3.160
# via
# -r requirements/edx/testing.txt
# edx-django-utils
@@ -889,6 +888,11 @@ packaging==20.9
# pytest
# sphinx
# tox
path==13.1.0
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/testing.txt
# path.py
path.py==12.5.0
# via
# -r requirements/edx/testing.txt
@@ -897,11 +901,6 @@ path.py==12.5.0
# ora2
# staff-graded-xblock
# xmodule
path==13.1.0
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/testing.txt
# path.py
paver==1.3.4
# via -r requirements/edx/testing.txt
pbr==5.6.0
@@ -979,6 +978,14 @@ pylatexenc==2.10
# via
# -r requirements/edx/testing.txt
# olxcleaner
pylint==2.8.3
# via
# -r requirements/edx/testing.txt
# edx-lint
# pylint-celery
# pylint-django
# pylint-plugin-utils
# pylint-pytest
pylint-celery==0.3
# via
# -r requirements/edx/testing.txt
@@ -994,14 +1001,6 @@ pylint-plugin-utils==0.6
# pylint-django
pylint-pytest==0.3.0
# via -r requirements/edx/testing.txt
pylint==2.8.3
# via
# -r requirements/edx/testing.txt
# edx-lint
# pylint-celery
# pylint-django
# pylint-plugin-utils
# pylint-pytest
pymongo==3.10.1
# via
# -c requirements/edx/../constraints.txt
@@ -1026,6 +1025,18 @@ pysrt==1.1.2
# via
# -r requirements/edx/testing.txt
# edxval
pytest==6.2.4
# via
# -r requirements/edx/testing.txt
# pylint-pytest
# pytest-attrib
# pytest-cov
# pytest-django
# pytest-forked
# pytest-json-report
# pytest-metadata
# pytest-randomly
# pytest-xdist
pytest-attrib==0.1.3
# via -r requirements/edx/testing.txt
pytest-cov==2.12.1
@@ -1046,18 +1057,6 @@ pytest-randomly==3.8.0
# via -r requirements/edx/testing.txt
pytest-xdist[psutil]==2.3.0
# via -r requirements/edx/testing.txt
pytest==6.2.4
# via
# -r requirements/edx/testing.txt
# pylint-pytest
# pytest-attrib
# pytest-cov
# pytest-django
# pytest-forked
# pytest-json-report
# pytest-metadata
# pytest-randomly
# pytest-xdist
python-dateutil==2.4.0
# via
# -c requirements/edx/../constraints.txt
@@ -1140,10 +1139,6 @@ regex==2021.4.4
# via
# -r requirements/edx/testing.txt
# nltk
requests-oauthlib==1.3.0
# via
# -r requirements/edx/testing.txt
# social-auth-core
requests==2.25.1
# via
# -r requirements/edx/testing.txt
@@ -1167,18 +1162,22 @@ requests==2.25.1
# sphinx
# tableauserverclient
# transifex-client
requests-oauthlib==1.3.0
# via
# -r requirements/edx/testing.txt
# social-auth-core
rest-condition==1.0.3
# via
# -r requirements/edx/testing.txt
# edx-drf-extensions
ruamel.yaml.clib==0.2.2
# via
# -r requirements/edx/testing.txt
# ruamel.yaml
ruamel.yaml==0.17.9
# via
# -r requirements/edx/testing.txt
# drf-yasg
ruamel.yaml.clib==0.2.2
# via
# -r requirements/edx/testing.txt
# ruamel.yaml
rules==3.0
# via
# -r requirements/edx/testing.txt
@@ -1358,12 +1357,12 @@ toml==0.10.2
# pytest-cov
# tox
# vulture
tox-battery==0.6.1
# via -r requirements/edx/testing.txt
tox==3.23.1
# via
# -r requirements/edx/testing.txt
# tox-battery
tox-battery==0.6.1
# via -r requirements/edx/testing.txt
tqdm==4.61.1
# via
# -r requirements/edx/testing.txt
@@ -1441,18 +1440,6 @@ wrapt==1.11.2
# -c requirements/edx/../constraints.txt
# -r requirements/edx/testing.txt
# astroid
git+https://github.com/edx-solutions/xblock-drag-and-drop-v2@v2.3.5#egg=xblock-drag-and-drop-v2==2.3.5
# via -r requirements/edx/testing.txt
git+https://github.com/open-craft/xblock-poll@922cd36fb1c3cfe00b4ce03b19a13185d136447d#egg=xblock-poll==1.10.2
# via -r requirements/edx/testing.txt
xblock-utils==2.1.3
# via
# -r requirements/edx/testing.txt
# edx-sga
# lti-consumer-xblock
# staff-graded-xblock
# xblock-drag-and-drop-v2
# xblock-google-drive
xblock==1.4.2
# via
# -r requirements/edx/testing.txt
@@ -1472,6 +1459,18 @@ xblock==1.4.2
# xblock-google-drive
# xblock-poll
# xblock-utils
git+https://github.com/edx-solutions/xblock-drag-and-drop-v2@v2.3.5#egg=xblock-drag-and-drop-v2==2.3.5
# via -r requirements/edx/testing.txt
git+https://github.com/open-craft/xblock-poll@922cd36fb1c3cfe00b4ce03b19a13185d136447d#egg=xblock-poll==1.10.2
# via -r requirements/edx/testing.txt
xblock-utils==2.1.3
# via
# -r requirements/edx/testing.txt
# edx-sga
# lti-consumer-xblock
# staff-graded-xblock
# xblock-drag-and-drop-v2
# xblock-google-drive
xmlsec==1.3.11
# via
# -r requirements/edx/testing.txt

View File

@@ -1,5 +1,5 @@
#
# This file is autogenerated by pip-compile
# This file is autogenerated by pip-compile with python 3.8
# To update, run:
#
# make upgrade

View File

@@ -1,5 +1,5 @@
#
# This file is autogenerated by pip-compile
# This file is autogenerated by pip-compile with python 3.8
# To update, run:
#
# make upgrade

View File

@@ -1,5 +1,5 @@
#
# This file is autogenerated by pip-compile
# This file is autogenerated by pip-compile with python 3.8
# To update, run:
#
# make upgrade

View File

@@ -1,5 +1,5 @@
#
# This file is autogenerated by pip-compile
# This file is autogenerated by pip-compile with python 3.8
# To update, run:
#
# make upgrade
@@ -90,16 +90,16 @@ bleach==3.3.0
# xblock-poll
bok-choy==1.1.1
# via -r requirements/edx/testing.in
boto==2.39.0
# via
# -r requirements/edx/base.txt
# edxval
boto3==1.4.8
# via
# -r requirements/edx/base.txt
# django-ses
# fs-s3fs
# ora2
boto==2.39.0
# via
# -r requirements/edx/base.txt
# edxval
botocore==1.8.17
# via
# -r requirements/edx/base.txt
@@ -132,8 +132,6 @@ chardet==4.0.0
# requests
chem==1.2.0
# via -r requirements/edx/base.txt
click-log==0.3.2
# via edx-lint
click==7.1.2
# via
# -c requirements/edx/../constraints.txt
@@ -143,6 +141,8 @@ click==7.1.2
# edx-lint
# nltk
# user-util
click-log==0.3.2
# via edx-lint
code-annotations==1.1.2
# via
# -r requirements/edx/base.txt
@@ -203,6 +203,68 @@ diff-cover==4.0.0
# -r requirements/edx/coverage.txt
distlib==0.3.2
# via virtualenv
# via
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
# django-appconf
# django-classy-tags
# django-config-models
# django-cors-headers
# django-crum
# django-fernet-fields
# django-filter
# django-method-override
# django-model-utils
# django-mptt
# django-multi-email-field
# django-mysql
# django-oauth-toolkit
# django-pyfs
# django-ratelimit-backend
# django-sekizai
# django-ses
# django-splash
# django-statici18n
# django-storages
# django-user-tasks
# django-wiki
# djangorestframework
# drf-jwt
# drf-yasg
# edx-ace
# edx-api-doc-tools
# edx-bulk-grades
# edx-celeryutils
# edx-completion
# edx-django-release-util
# edx-django-sites-extensions
# edx-django-utils
# edx-drf-extensions
# edx-enterprise
# edx-event-routing-backends
# edx-i18n-tools
# edx-lint
# edx-milestones
# edx-opaque-keys
# edx-organizations
# edx-proctoring
# edx-rbac
# edx-search
# edx-submissions
# edx-toggles
# edx-when
# edxval
# enmerkar
# enmerkar-underscore
# event-tracking
# help-tokens
# jsonfield2
# lti-consumer-xblock
# ora2
# rest-condition
# super-csv
# xss-utils
django-appconf==1.0.4
# via
# -r requirements/edx/base.txt
@@ -225,6 +287,7 @@ django-config-models==2.1.1
# -r requirements/edx/base.txt
# edx-enterprise
# edx-event-routing-backends
# lti-consumer-xblock
django-cookies-samesite==0.9.0
# via -r requirements/edx/base.txt
django-cors-headers==2.5.3
@@ -306,10 +369,10 @@ django-pipeline==2.0.6
# via -r requirements/edx/base.txt
django-pyfs==3.0
# via -r requirements/edx/base.txt
git+https://github.com/edx/django-ratelimit-backend.git@v2.0.1a5#egg=django-ratelimit-backend==2.0.1a5
# via -r requirements/edx/base.txt
django-ratelimit==3.0.1
# via -r requirements/edx/base.txt
git+https://github.com/edx/django-ratelimit-backend.git@v2.0.1a5#egg=django-ratelimit-backend==2.0.1a5
# via -r requirements/edx/base.txt
django-require==1.0.11
# via -r requirements/edx/base.txt
django-sekizai==2.0.0
@@ -348,72 +411,6 @@ django-webpack-loader==0.7.0
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
# edx-proctoring
# via
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
# django-appconf
# django-classy-tags
# django-config-models
# django-cors-headers
# django-crum
# django-fernet-fields
# django-filter
# django-method-override
# django-model-utils
# django-mptt
# django-multi-email-field
# django-mysql
# django-oauth-toolkit
# django-pyfs
# django-ratelimit-backend
# django-sekizai
# django-ses
# django-splash
# django-statici18n
# django-storages
# django-user-tasks
# django-wiki
# djangorestframework
# drf-jwt
# drf-yasg
# edx-ace
# edx-api-doc-tools
# edx-bulk-grades
# edx-celeryutils
# edx-completion
# edx-django-release-util
# edx-django-sites-extensions
# edx-django-utils
# edx-drf-extensions
# edx-enterprise
# edx-event-routing-backends
# edx-i18n-tools
# edx-lint
# edx-milestones
# edx-opaque-keys
# edx-organizations
# edx-proctoring
# edx-rbac
# edx-search
# edx-submissions
# edx-toggles
# edx-when
# edxval
# enmerkar
# enmerkar-underscore
# event-tracking
# help-tokens
# jsonfield2
# lti-consumer-xblock
# ora2
# rest-condition
# super-csv
# xss-utils
djangorestframework-xml==2.0.0
# via
# -r requirements/edx/base.txt
# edx-enterprise
djangorestframework==3.12.4
# via
# -r requirements/edx/base.txt
@@ -431,6 +428,10 @@ djangorestframework==3.12.4
# ora2
# rest-condition
# super-csv
djangorestframework-xml==2.0.0
# via
# -r requirements/edx/base.txt
# edx-enterprise
docopt==0.6.2
# via
# -r requirements/edx/base.txt
@@ -527,13 +528,13 @@ edx-opaque-keys[django]==2.2.1
# xmodule
edx-organizations==6.9.0
# via -r requirements/edx/base.txt
edx-proctoring-proctortrack==1.0.5
# via -r requirements/edx/base.txt
edx-proctoring==3.13.2
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
# edx-proctoring-proctortrack
edx-proctoring-proctortrack==1.0.5
# via -r requirements/edx/base.txt
edx-rbac==1.4.2
# via
# -r requirements/edx/base.txt
@@ -570,16 +571,16 @@ edx-when==2.0.0
# edx-proctoring
edxval==2.0.3
# via -r requirements/edx/base.txt
elasticsearch==7.13.1
elasticsearch==7.13.2
# via
# -r requirements/edx/base.txt
# edx-search
enmerkar-underscore==2.0.0
# via -r requirements/edx/base.txt
enmerkar==0.7.1
# via
# -r requirements/edx/base.txt
# enmerkar-underscore
enmerkar-underscore==2.0.0
# via -r requirements/edx/base.txt
event-tracking==1.0.4
# via
# -r requirements/edx/base.txt
@@ -600,16 +601,16 @@ freezegun==0.3.12
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/testing.in
fs-s3fs==0.1.8
# via
# -r requirements/edx/base.txt
# django-pyfs
fs==2.0.18
# via
# -r requirements/edx/base.txt
# django-pyfs
# fs-s3fs
# xblock
fs-s3fs==0.1.8
# via
# -r requirements/edx/base.txt
# django-pyfs
future==0.18.2
# via
# -r requirements/edx/base.txt
@@ -677,10 +678,6 @@ itypes==1.2.0
# via
# -r requirements/edx/base.txt
# coreapi
jinja2-pluralize==0.3.0
# via
# -r requirements/edx/coverage.txt
# diff-cover
jinja2==3.0.1
# via
# -r requirements/edx/base.txt
@@ -689,6 +686,10 @@ jinja2==3.0.1
# coreschema
# diff-cover
# jinja2-pluralize
jinja2-pluralize==0.3.0
# via
# -r requirements/edx/coverage.txt
# diff-cover
jmespath==0.10.0
# via
# -r requirements/edx/base.txt
@@ -720,8 +721,6 @@ kombu==4.6.11
# celery
laboratory==1.0.2
# via -r requirements/edx/base.txt
lazy-object-proxy==1.6.0
# via astroid
lazy==1.4
# via
# -r requirements/edx/base.txt
@@ -729,6 +728,8 @@ lazy==1.4
# bok-choy
# lti-consumer-xblock
# ora2
lazy-object-proxy==1.6.0
# via astroid
libsass==0.10.0
# via
# -r requirements/edx/base.txt
@@ -737,10 +738,8 @@ loremipsum==1.0.5
# via
# -r requirements/edx/base.txt
# ora2
lti-consumer-xblock==2.10.1
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
lti-consumer-xblock==2.11.0
# via -r requirements/edx/base.txt
lxml==4.5.0
# via
# -c requirements/edx/../constraints.txt
@@ -811,7 +810,7 @@ mpmath==1.2.1
# sympy
mysqlclient==2.0.3
# via -r requirements/edx/base.txt
newrelic==6.4.2.159
newrelic==6.4.3.160
# via
# -r requirements/edx/base.txt
# edx-django-utils
@@ -846,6 +845,11 @@ packaging==20.9
# drf-yasg
# pytest
# tox
path==13.1.0
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
# path.py
path.py==12.5.0
# via
# -r requirements/edx/base.txt
@@ -854,11 +858,6 @@ path.py==12.5.0
# ora2
# staff-graded-xblock
# xmodule
path==13.1.0
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
# path.py
paver==1.3.4
# via -r requirements/edx/base.txt
pbr==5.6.0
@@ -930,6 +929,13 @@ pylatexenc==2.10
# via
# -r requirements/edx/base.txt
# olxcleaner
pylint==2.8.3
# via
# edx-lint
# pylint-celery
# pylint-django
# pylint-plugin-utils
# pylint-pytest
pylint-celery==0.3
# via edx-lint
pylint-django==2.4.4
@@ -940,13 +946,6 @@ pylint-plugin-utils==0.6
# pylint-django
pylint-pytest==0.3.0
# via -r requirements/edx/testing.in
pylint==2.8.3
# via
# edx-lint
# pylint-celery
# pylint-django
# pylint-plugin-utils
# pylint-pytest
pymongo==3.10.1
# via
# -c requirements/edx/../constraints.txt
@@ -969,6 +968,18 @@ pysrt==1.1.2
# via
# -r requirements/edx/base.txt
# edxval
pytest==6.2.4
# via
# -r requirements/edx/testing.in
# pylint-pytest
# pytest-attrib
# pytest-cov
# pytest-django
# pytest-forked
# pytest-json-report
# pytest-metadata
# pytest-randomly
# pytest-xdist
pytest-attrib==0.1.3
# via -r requirements/edx/testing.in
pytest-cov==2.12.1
@@ -987,18 +998,6 @@ pytest-randomly==3.8.0
# via -r requirements/edx/testing.in
pytest-xdist[psutil]==2.3.0
# via -r requirements/edx/testing.in
pytest==6.2.4
# via
# -r requirements/edx/testing.in
# pylint-pytest
# pytest-attrib
# pytest-cov
# pytest-django
# pytest-forked
# pytest-json-report
# pytest-metadata
# pytest-randomly
# pytest-xdist
python-dateutil==2.4.0
# via
# -c requirements/edx/../constraints.txt
@@ -1078,10 +1077,6 @@ regex==2021.4.4
# via
# -r requirements/edx/base.txt
# nltk
requests-oauthlib==1.3.0
# via
# -r requirements/edx/base.txt
# social-auth-core
requests==2.25.1
# via
# -r requirements/edx/base.txt
@@ -1104,18 +1099,22 @@ requests==2.25.1
# social-auth-core
# tableauserverclient
# transifex-client
requests-oauthlib==1.3.0
# via
# -r requirements/edx/base.txt
# social-auth-core
rest-condition==1.0.3
# via
# -r requirements/edx/base.txt
# edx-drf-extensions
ruamel.yaml.clib==0.2.2
# via
# -r requirements/edx/base.txt
# ruamel.yaml
ruamel.yaml==0.17.9
# via
# -r requirements/edx/base.txt
# drf-yasg
ruamel.yaml.clib==0.2.2
# via
# -r requirements/edx/base.txt
# ruamel.yaml
rules==3.0
# via
# -r requirements/edx/base.txt
@@ -1263,12 +1262,12 @@ toml==0.10.2
# pytest
# pytest-cov
# tox
tox-battery==0.6.1
# via -r requirements/edx/testing.in
tox==3.23.1
# via
# -r requirements/edx/testing.in
# tox-battery
tox-battery==0.6.1
# via -r requirements/edx/testing.in
tqdm==4.61.1
# via
# -r requirements/edx/base.txt
@@ -1336,18 +1335,6 @@ wrapt==1.11.2
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
# astroid
git+https://github.com/edx-solutions/xblock-drag-and-drop-v2@v2.3.5#egg=xblock-drag-and-drop-v2==2.3.5
# via -r requirements/edx/base.txt
git+https://github.com/open-craft/xblock-poll@922cd36fb1c3cfe00b4ce03b19a13185d136447d#egg=xblock-poll==1.10.2
# via -r requirements/edx/base.txt
xblock-utils==2.1.3
# via
# -r requirements/edx/base.txt
# edx-sga
# lti-consumer-xblock
# staff-graded-xblock
# xblock-drag-and-drop-v2
# xblock-google-drive
xblock==1.4.2
# via
# -r requirements/edx/base.txt
@@ -1367,6 +1354,18 @@ xblock==1.4.2
# xblock-google-drive
# xblock-poll
# xblock-utils
git+https://github.com/edx-solutions/xblock-drag-and-drop-v2@v2.3.5#egg=xblock-drag-and-drop-v2==2.3.5
# via -r requirements/edx/base.txt
git+https://github.com/open-craft/xblock-poll@922cd36fb1c3cfe00b4ce03b19a13185d136447d#egg=xblock-poll==1.10.2
# via -r requirements/edx/base.txt
xblock-utils==2.1.3
# via
# -r requirements/edx/base.txt
# edx-sga
# lti-consumer-xblock
# staff-graded-xblock
# xblock-drag-and-drop-v2
# xblock-google-drive
xmlsec==1.3.11
# via
# -r requirements/edx/base.txt

View File

@@ -1,5 +1,5 @@
#
# This file is autogenerated by pip-compile
# This file is autogenerated by pip-compile with python 3.8
# To update, run:
#
# make upgrade