Merge remote-tracking branch 'upstream/master' into salman/remove-bok-choy

This commit is contained in:
salman2013
2023-10-02 16:53:08 +05:00
50 changed files with 470 additions and 410 deletions

View File

@@ -1,24 +0,0 @@
# Enable automerging for named release branches.
# See the reusable workflow for details:
# https://github.com/openedx/.github/.github/workflows/pr-automerge-open-release.yml
name: Automerge BTR open-release PRs
on:
issue_comment:
branches:
- open-release/*
types:
- created
- edited
pull_request_target:
branches:
- open-release/*
types:
- opened
- edited
- ready_for_review
jobs:
automerge:
uses: openedx/.github/.github/workflows/pr-automerge-open-release.yml@master

View File

@@ -23,7 +23,7 @@ from .views import (
app_name = 'v1'
VIDEO_ID_PATTERN = r'(?:(?P<edx_video_id>[-\w]+))'
VIDEO_ID_PATTERN = r'(?P<edx_video_id>[-\w]+)'
urlpatterns = [
path(
@@ -61,38 +61,6 @@ urlpatterns = [
CourseGradingView.as_view(),
name="course_grading"
),
re_path(
fr'^xblock/{settings.COURSE_ID_PATTERN}/{settings.USAGE_KEY_PATTERN}?$',
xblock.XblockView.as_view(), name='studio_content'
),
re_path(
fr'^file_assets/{settings.COURSE_ID_PATTERN}/{settings.ASSET_KEY_PATTERN}?$',
assets.AssetsView.as_view(), name='studio_content_assets'
),
re_path(
fr'^videos/uploads/{settings.COURSE_ID_PATTERN}/{VIDEO_ID_PATTERN}?$',
videos.VideosView.as_view(), name='studio_content_videos_uploads'
),
re_path(
fr'^videos/images/{settings.COURSE_ID_PATTERN}/{VIDEO_ID_PATTERN}$',
videos.VideoImagesView.as_view(), name='studio_content_videos_images'
),
re_path(
fr'^videos/encodings/{settings.COURSE_ID_PATTERN}$',
videos.VideoEncodingsDownloadView.as_view(), name='studio_content_videos_encodings'
),
path(
'videos/features/',
videos.VideoFeaturesView.as_view(), name='studio_content_videos_features'
),
re_path(
fr'^videos/upload_link/{settings.COURSE_ID_PATTERN}$',
videos.UploadLinkView.as_view(), name='studio_content_videos_upload_link'
),
re_path(
fr'^video_transcripts/{settings.COURSE_ID_PATTERN}$',
transcripts.TranscriptView.as_view(), name='studio_content_video_transcripts'
),
path(
'help_urls',
HelpUrlsView.as_view(),
@@ -103,4 +71,46 @@ urlpatterns = [
CourseRerunView.as_view(),
name="course_rerun"
),
# CMS API
re_path(
fr'^file_assets/{settings.COURSE_ID_PATTERN}/$',
assets.AssetsCreateRetrieveView.as_view(), name='cms_api_create_retrieve_assets'
),
re_path(
fr'^file_assets/{settings.COURSE_ID_PATTERN}/{settings.ASSET_KEY_PATTERN}$',
assets.AssetsUpdateDestroyView.as_view(), name='cms_api_update_destroy_assets'
),
re_path(
fr'^videos/encodings/{settings.COURSE_ID_PATTERN}$',
videos.VideoEncodingsDownloadView.as_view(), name='cms_api_videos_encodings'
),
path(
'videos/features/',
videos.VideoFeaturesView.as_view(), name='cms_api_videos_features'
),
re_path(
fr'^videos/images/{settings.COURSE_ID_PATTERN}/{VIDEO_ID_PATTERN}$',
videos.VideoImagesView.as_view(), name='cms_api_videos_images'
),
re_path(
fr'^videos/uploads/{settings.COURSE_ID_PATTERN}/$',
videos.VideosCreateUploadView.as_view(), name='cms_api_create_videos_upload'
),
re_path(
fr'^videos/uploads/{settings.COURSE_ID_PATTERN}/{VIDEO_ID_PATTERN}$',
videos.VideosUploadsView.as_view(), name='cms_api_videos_uploads'
),
re_path(
fr'^video_transcripts/{settings.COURSE_ID_PATTERN}$',
transcripts.TranscriptView.as_view(), name='cms_api_video_transcripts'
),
re_path(
fr'^xblock/{settings.COURSE_ID_PATTERN}/$',
xblock.XblockCreateView.as_view(), name='cms_api_create_xblock'
),
re_path(
fr'^xblock/{settings.COURSE_ID_PATTERN}/{settings.USAGE_KEY_PATTERN}$',
xblock.XblockView.as_view(), name='cms_api_xblock'
),
]

View File

@@ -8,7 +8,13 @@ from .grading import CourseGradingView
from .proctoring import ProctoredExamSettingsView, ProctoringErrorsView
from .home import HomePageView
from .settings import CourseSettingsView
from .xblock import XblockView
from .assets import AssetsView
from .videos import VideosView
from .xblock import XblockView, XblockCreateView
from .assets import AssetsCreateRetrieveView, AssetsUpdateDestroyView
from .videos import (
VideosUploadsView,
VideosCreateUploadView,
VideoImagesView,
VideoEncodingsDownloadView,
VideoFeaturesView
)
from .help_urls import HelpUrlsView

View File

@@ -2,7 +2,7 @@
Public rest API endpoints for the CMS API Assets.
"""
import logging
from rest_framework.generics import RetrieveUpdateDestroyAPIView, CreateAPIView
from rest_framework.generics import CreateAPIView, RetrieveAPIView, UpdateAPIView, DestroyAPIView
from django.views.decorators.csrf import csrf_exempt
from django.http import Http404
@@ -24,7 +24,40 @@ toggles = contentstore_toggles
@view_auth_classes()
class AssetsView(DeveloperErrorViewMixin, RetrieveUpdateDestroyAPIView, CreateAPIView):
class AssetsCreateRetrieveView(DeveloperErrorViewMixin, CreateAPIView, RetrieveAPIView):
"""
public rest API endpoints for the CMS API Assets.
course_key: required argument, needed to authorize course authors and identify the asset.
asset_key_string: required argument, needed to identify the asset.
"""
serializer_class = AssetSerializer
parser_classes = (JSONParser, MultiPartParser, FormParser, TypedFileUploadParser)
def dispatch(self, request, *args, **kwargs):
# TODO: probably want to refactor this to a decorator.
"""
The dispatch method of a View class handles HTTP requests in general
and calls other methods to handle specific HTTP methods.
We use this to raise a 404 if the content api is disabled.
"""
if not toggles.use_studio_content_api():
raise Http404
return super().dispatch(request, *args, **kwargs)
@csrf_exempt
@course_author_access_required
@validate_request_with_serializer
def create(self, request, course_key): # pylint: disable=arguments-differ
return handle_assets(request, course_key.html_id())
@course_author_access_required
@expect_json_in_class_view
def retrieve(self, request, course_key): # pylint: disable=arguments-differ
return handle_assets(request, course_key.html_id())
@view_auth_classes()
class AssetsUpdateDestroyView(DeveloperErrorViewMixin, UpdateAPIView, DestroyAPIView):
"""
public rest API endpoints for the CMS API Assets.
course_key: required argument, needed to authorize course authors and identify the asset.
@@ -44,17 +77,6 @@ class AssetsView(DeveloperErrorViewMixin, RetrieveUpdateDestroyAPIView, CreateAP
raise Http404
return super().dispatch(request, *args, **kwargs)
@course_author_access_required
@expect_json_in_class_view
def retrieve(self, request, course_key): # pylint: disable=arguments-differ
return handle_assets(request, course_key.html_id())
@csrf_exempt
@course_author_access_required
@validate_request_with_serializer
def create(self, request, course_key): # pylint: disable=arguments-differ
return handle_assets(request, course_key.html_id())
@course_author_access_required
@expect_json_in_class_view
@validate_request_with_serializer

View File

@@ -44,7 +44,7 @@ class AssetsViewTestCase(AuthorizeStaffTestCase):
def get_url(self, _course_id=None):
return reverse(
"cms.djangoapps.contentstore:v1:studio_content_assets",
"cms.djangoapps.contentstore:v1:cms_api_update_destroy_assets",
kwargs=self.get_url_params(),
)
@@ -102,6 +102,12 @@ class AssetsViewGetTest(AssetsViewTestCase, ModuleStoreTestCase, APITestCase):
def get_url_params(self):
return {"course_id": self.get_course_key_string()}
def get_url(self, _course_id=None):
return reverse(
"cms.djangoapps.contentstore:v1:cms_api_create_retrieve_assets",
kwargs=self.get_url_params(),
)
def get_test_data(self):
return None
@@ -148,6 +154,12 @@ class AssetsViewPostTest(AssetsViewTestCase, ModuleStoreTestCase, APITestCase):
def get_url_params(self):
return {"course_id": self.get_course_key_string()}
def get_url(self, _course_id=None):
return reverse(
"cms.djangoapps.contentstore:v1:cms_api_create_retrieve_assets",
kwargs=self.get_url_params(),
)
def get_test_data(self):
return {
"file": mock_image,

View File

@@ -38,7 +38,7 @@ class XBlockViewTestCase(AuthorizeStaffTestCase):
def get_url(self, _course_id=None):
return reverse(
"cms.djangoapps.contentstore:v1:studio_content",
"cms.djangoapps.contentstore:v1:cms_api_xblock",
kwargs=self.get_url_params(),
)
@@ -140,7 +140,7 @@ class XBlockViewPostTest(XBlockViewTestCase, ModuleStoreTestCase, APITestCase):
def get_url(self, _course_id=None):
return reverse(
"cms.djangoapps.contentstore:v1:studio_content",
"cms.djangoapps.contentstore:v1:cms_api_create_xblock",
kwargs=self.get_url_params(),
)

View File

@@ -33,7 +33,7 @@ toggles = contentstore_toggles
@view_auth_classes()
class VideosView(DeveloperErrorViewMixin, CreateAPIView, RetrieveAPIView, DestroyAPIView):
class VideosUploadsView(DeveloperErrorViewMixin, RetrieveAPIView, DestroyAPIView):
"""
public rest API endpoints for the CMS API video assets.
course_key: required argument, needed to authorize course authors and identify the video.
@@ -41,6 +41,35 @@ class VideosView(DeveloperErrorViewMixin, CreateAPIView, RetrieveAPIView, Destro
"""
serializer_class = VideoUploadSerializer
def dispatch(self, request, *args, **kwargs):
# TODO: probably want to refactor this to a decorator.
"""
The dispatch method of a View class handles HTTP requests in general
and calls other methods to handle specific HTTP methods.
We use this to raise a 404 if the content api is disabled.
"""
if not toggles.use_studio_content_api():
raise Http404
return super().dispatch(request, *args, **kwargs)
@course_author_access_required
def retrieve(self, request, course_key, edx_video_id=None): # pylint: disable=arguments-differ
return handle_videos(request, course_key.html_id(), edx_video_id)
@course_author_access_required
@expect_json_in_class_view
def destroy(self, request, course_key, edx_video_id): # pylint: disable=arguments-differ
return handle_videos(request, course_key.html_id(), edx_video_id)
@view_auth_classes()
class VideosCreateUploadView(DeveloperErrorViewMixin, CreateAPIView):
"""
public rest API endpoints for the CMS API video assets.
course_key: required argument, needed to authorize course authors and identify the video.
"""
serializer_class = VideoUploadSerializer
def dispatch(self, request, *args, **kwargs):
# TODO: probably want to refactor this to a decorator.
"""
@@ -57,18 +86,8 @@ class VideosView(DeveloperErrorViewMixin, CreateAPIView, RetrieveAPIView, Destro
@expect_json_in_class_view
@validate_request_with_serializer
def create(self, request, course_key): # pylint: disable=arguments-differ
"""Deprecated. Use the upload_link endpoint instead."""
return handle_videos(request, course_key.html_id())
@course_author_access_required
def retrieve(self, request, course_key, edx_video_id=None): # pylint: disable=arguments-differ
return handle_videos(request, course_key.html_id(), edx_video_id)
@course_author_access_required
@expect_json_in_class_view
def destroy(self, request, course_key, edx_video_id): # pylint: disable=arguments-differ
return handle_videos(request, course_key.html_id(), edx_video_id)
@view_auth_classes()
class VideoImagesView(DeveloperErrorViewMixin, CreateAPIView):
@@ -143,29 +162,3 @@ class VideoFeaturesView(DeveloperErrorViewMixin, RetrieveAPIView):
@csrf_exempt
def retrieve(self, request): # pylint: disable=arguments-differ
return enabled_video_features(request)
@view_auth_classes()
class UploadLinkView(DeveloperErrorViewMixin, CreateAPIView):
"""
public rest API endpoint providing a list of enabled video features.
"""
serializer_class = VideoUploadSerializer
def dispatch(self, request, *args, **kwargs):
# TODO: probably want to refactor this to a decorator.
"""
The dispatch method of a View class handles HTTP requests in general
and calls other methods to handle specific HTTP methods.
We use this to raise a 404 if the content api is disabled.
"""
if not toggles.use_studio_content_api():
raise Http404
return super().dispatch(request, *args, **kwargs)
@csrf_exempt
@course_author_access_required
@expect_json_in_class_view
@validate_request_with_serializer
def create(self, request, course_key): # pylint: disable=arguments-differ
return handle_videos(request, course_key.html_id())

View File

@@ -23,7 +23,7 @@ handle_xblock = view_handlers.handle_xblock
@view_auth_classes()
class XblockView(DeveloperErrorViewMixin, RetrieveUpdateDestroyAPIView, CreateAPIView):
class XblockView(DeveloperErrorViewMixin, RetrieveUpdateDestroyAPIView):
"""
Public rest API endpoints for the CMS API.
course_key: required argument, needed to authorize course authors.
@@ -66,6 +66,29 @@ class XblockView(DeveloperErrorViewMixin, RetrieveUpdateDestroyAPIView, CreateAP
def destroy(self, request, course_key, usage_key_string=None):
return handle_xblock(request, usage_key_string)
@view_auth_classes()
class XblockCreateView(DeveloperErrorViewMixin, CreateAPIView):
"""
Public rest API endpoints for the CMS API.
course_key: required argument, needed to authorize course authors.
usage_key_string (optional):
xblock identifier, for example in the form of "block-v1:<course id>+type@<type>+block@<block id>"
"""
serializer_class = XblockSerializer
def dispatch(self, request, *args, **kwargs):
# TODO: probably want to refactor this to a decorator.
"""
The dispatch method of a View class handles HTTP requests in general
and calls other methods to handle specific HTTP methods.
We use this to raise a 404 if the content api is disabled.
"""
if not toggles.use_studio_content_api():
raise Http404
return super().dispatch(request, *args, **kwargs)
# pylint: disable=arguments-differ
@csrf_exempt
@course_author_access_required
@expect_json_in_class_view

View File

@@ -7136,6 +7136,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "مالك"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -9090,16 +9100,6 @@ msgid ""
"to date."
msgstr "لقد قمت بنقل جدول مساقك بنجاح والتقويم محدّث."
#: wiki/models/article.py
msgid "owner"
msgstr "مالك"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6369,6 +6369,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "propietari"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8144,16 +8154,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "propietari"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -7087,6 +7087,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "Inhaber"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -9092,16 +9102,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "Inhaber"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6516,6 +6516,17 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: openedx/core/djangoapps/content_tagging/models/base.py
#: wiki/models/article.py
msgid "owner"
msgstr ""
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8362,16 +8373,6 @@ msgid ""
"to date."
msgstr ""
#: openedx/features/content_tagging/models/base.py wiki/models/article.py
msgid "owner"
msgstr ""
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -38,8 +38,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
"POT-Creation-Date: 2023-09-24 20:36+0000\n"
"PO-Revision-Date: 2023-09-24 20:36:20.303017\n"
"POT-Creation-Date: 2023-10-01 20:36+0000\n"
"PO-Revision-Date: 2023-10-01 20:36:14.857987\n"
"Last-Translator: \n"
"Language-Team: openedx-translation <openedx-translation@googlegroups.com>\n"
"Language: en\n"
@@ -6809,6 +6809,14 @@ msgstr ""
msgid "Learner Pathways"
msgstr ""
#: openedx/core/djangoapps/notifications/admin.py
msgid "Notification App"
msgstr ""
#: openedx/core/djangoapps/notifications/admin.py
msgid "Notification Type"
msgstr ""
#: openedx/core/djangoapps/notifications/base_notification.py
#, python-brace-format
msgid ""

View File

@@ -32,8 +32,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
"POT-Creation-Date: 2023-09-24 20:36+0000\n"
"PO-Revision-Date: 2023-09-24 20:36:20.294880\n"
"POT-Creation-Date: 2023-10-01 20:36+0000\n"
"PO-Revision-Date: 2023-10-01 20:36:14.819628\n"
"Last-Translator: \n"
"Language-Team: openedx-translation <openedx-translation@googlegroups.com>\n"
"Language: en\n"

Binary file not shown.

View File

@@ -38,8 +38,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
"POT-Creation-Date: 2023-09-24 20:36+0000\n"
"PO-Revision-Date: 2023-09-24 20:36:20.303017\n"
"POT-Creation-Date: 2023-10-01 20:36+0000\n"
"PO-Revision-Date: 2023-10-01 20:36:14.857987\n"
"Last-Translator: \n"
"Language-Team: openedx-translation <openedx-translation@googlegroups.com>\n"
"Language: eo\n"
@@ -8653,6 +8653,14 @@ msgstr "Bläçklïst {country} för {course} Ⱡ'σяєм ιρѕυм ∂σłσя
msgid "Learner Pathways"
msgstr "Léärnér Päthwäýs Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αм#"
#: openedx/core/djangoapps/notifications/admin.py
msgid "Notification App"
msgstr "Nötïfïçätïön Àpp Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αм#"
#: openedx/core/djangoapps/notifications/admin.py
msgid "Notification Type"
msgstr "Nötïfïçätïön Týpé Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмє#"
#: openedx/core/djangoapps/notifications/base_notification.py
#, python-brace-format
msgid ""

View File

@@ -32,8 +32,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
"POT-Creation-Date: 2023-09-24 20:36+0000\n"
"PO-Revision-Date: 2023-09-24 20:36:20.294880\n"
"POT-Creation-Date: 2023-10-01 20:36+0000\n"
"PO-Revision-Date: 2023-10-01 20:36:14.819628\n"
"Last-Translator: \n"
"Language-Team: openedx-translation <openedx-translation@googlegroups.com>\n"
"Language: eo\n"

View File

@@ -7466,6 +7466,19 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr "Clave/ID de uso original de lo que está en el portapapeles."
#: openedx/core/djangoapps/content_tagging/models/base.py
#: wiki/models/article.py
msgid "owner"
msgstr "propietario"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
"Organización relacionada con esta taxonomía. Si no hay ninguna, esta "
"taxonomía está relacionada con todas las organizaciones."
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -9541,18 +9554,6 @@ msgstr ""
"Has cambiado exitosamente el horario de tu curso y tu calendario está "
"actualizado."
#: openedx/features/content_tagging/models/base.py wiki/models/article.py
msgid "owner"
msgstr "propietario"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
"Organización relacionada con esta taxonomía. Si no hay ninguna, esta "
"taxonomía está relacionada con todas las organizaciones."
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6477,6 +6477,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "jabea"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8296,16 +8306,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "jabea"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -134,7 +134,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
"POT-Creation-Date: 2023-09-03 20:43+0000\n"
"POT-Creation-Date: 2023-09-24 20:43+0000\n"
"PO-Revision-Date: 2019-01-20 20:43+0000\n"
"Last-Translator: Somaye Joolaee, 2022\n"
"Language-Team: Persian (Iran) (https://app.transifex.com/open-edx/teams/6205/fa_IR/)\n"
@@ -7068,6 +7068,19 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr "استفاده اصلی کلید/شناسه از چیزی که در کلیپ بورد است."
#: openedx/core/djangoapps/content_tagging/models/base.py
#: wiki/models/article.py
msgid "owner"
msgstr "مالک"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
"سازمانی که به این طبقه بندی مربوط می شود. اگر هیچ کدام، پس این طبقه بندی به "
"همه سازمان ها مربوط می شود."
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -9077,18 +9090,6 @@ msgid ""
msgstr ""
"شما با موفقیت برنامۀ آموزشی خود را تغییر داده‌اید و تقویم شما روزآمد است."
#: openedx/features/content_tagging/models/base.py wiki/models/article.py
msgid "owner"
msgstr "مالک"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
"سازمانی که به این طبقه بندی مربوط می شود. اگر هیچ کدام، پس این طبقه بندی به "
"همه سازمان ها مربوط می شود."
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -7473,6 +7473,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "propriétaire"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -9528,16 +9538,6 @@ msgstr ""
"Vous avez réussi à modifier votre horaire de cours et votre calendrier est à"
" jour."
#: wiki/models/article.py
msgid "owner"
msgstr "propriétaire"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6705,6 +6705,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "pemilik"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8563,16 +8573,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "pemilik"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -7314,6 +7314,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "proprietario"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -9359,16 +9369,6 @@ msgstr ""
"Hai correttamente sposato il tuo programma del corso e il calendario è stato"
" aggiornato."
#: wiki/models/article.py
msgid "owner"
msgstr "proprietario"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6410,6 +6410,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "オーナー"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8212,16 +8222,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "オーナー"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6562,6 +6562,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "მფლობელი"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8415,16 +8425,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "მფლობელი"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6333,6 +6333,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "savininkas"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8094,16 +8104,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "savininkas"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6699,6 +6699,17 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: openedx/core/djangoapps/content_tagging/models/base.py
#: wiki/models/article.py
msgid "owner"
msgstr ""
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8603,16 +8614,6 @@ msgid ""
"to date."
msgstr ""
#: openedx/features/content_tagging/models/base.py wiki/models/article.py
msgid "owner"
msgstr ""
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6391,6 +6391,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "эзэмшигч"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8182,16 +8192,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "эзэмшигч"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6824,6 +6824,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "właściciel"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8695,16 +8705,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "właściciel"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -7279,6 +7279,16 @@ msgstr ""
"Chave de utilização/ID original do objecto que se encontra na área de "
"transferência."
#: wiki/models/article.py
msgid "owner"
msgstr "proprietário"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -9317,16 +9327,6 @@ msgstr ""
"Mudou com sucesso a sua programação de cursos e o seu calendário já se "
"encontra atualizado."
#: wiki/models/article.py
msgid "owner"
msgstr "proprietário"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -38,8 +38,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
"POT-Creation-Date: 2023-09-24 20:36+0000\n"
"PO-Revision-Date: 2023-09-24 20:36:20.303017\n"
"POT-Creation-Date: 2023-10-01 20:36+0000\n"
"PO-Revision-Date: 2023-10-01 20:36:14.857987\n"
"Last-Translator: \n"
"Language-Team: openedx-translation <openedx-translation@googlegroups.com>\n"
"Language: rtl\n"
@@ -7491,6 +7491,14 @@ msgstr "Ƀlɐɔʞlᴉsʇ {country} ɟøɹ {course}"
msgid "Learner Pathways"
msgstr "Łǝɐɹnǝɹ Ᵽɐʇɥʍɐʎs"
#: openedx/core/djangoapps/notifications/admin.py
msgid "Notification App"
msgstr "Nøʇᴉɟᴉɔɐʇᴉøn Ⱥdd"
#: openedx/core/djangoapps/notifications/admin.py
msgid "Notification Type"
msgstr "Nøʇᴉɟᴉɔɐʇᴉøn Ŧʎdǝ"
#: openedx/core/djangoapps/notifications/base_notification.py
#, python-brace-format
msgid ""

View File

@@ -32,8 +32,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1a\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
"POT-Creation-Date: 2023-09-24 20:36+0000\n"
"PO-Revision-Date: 2023-09-24 20:36:20.294880\n"
"POT-Creation-Date: 2023-10-01 20:36+0000\n"
"PO-Revision-Date: 2023-10-01 20:36:14.819628\n"
"Last-Translator: \n"
"Language-Team: openedx-translation <openedx-translation@googlegroups.com>\n"
"Language: rtl\n"

View File

@@ -6412,6 +6412,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "vlastník"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8207,16 +8217,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "vlastník"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6442,6 +6442,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "mmiliki"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8274,16 +8284,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "mmiliki"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6271,6 +6271,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "เจ้าของ"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8032,16 +8042,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "เจ้าของ"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -7152,6 +7152,17 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: openedx/core/djangoapps/content_tagging/models/base.py
#: wiki/models/article.py
msgid "owner"
msgstr "sahip"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -9182,16 +9193,6 @@ msgid ""
"to date."
msgstr "Ders programınızı başarıyla değiştirdiniz ve takviminiz güncel. "
#: openedx/features/content_tagging/models/base.py wiki/models/article.py
msgid "owner"
msgstr "sahip"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6874,6 +6874,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "власник"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8783,16 +8793,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "власник"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
msgid "Enabled As Of"

View File

@@ -6350,6 +6350,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "chủ sở hữu"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8109,16 +8119,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "chủ sở hữu"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6797,6 +6797,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "所有者"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8633,16 +8643,6 @@ msgid ""
"to date."
msgstr "您已成功更改课程安排,并且您的日历是最新的。"
#: wiki/models/article.py
msgid "owner"
msgstr "所有者"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6797,6 +6797,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "所有者"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8633,16 +8643,6 @@ msgid ""
"to date."
msgstr "您已成功更改课程安排,并且您的日历是最新的。"
#: wiki/models/article.py
msgid "owner"
msgstr "所有者"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -6436,6 +6436,16 @@ msgstr ""
msgid "Original usage key/ID of the thing that is in the clipboard."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "擁有者"
#: openedx/core/djangoapps/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/core/djangoapps/cors_csrf/models.py
msgid ""
"List of domains that are allowed to make cross-domain requests to this site."
@@ -8226,16 +8236,6 @@ msgid ""
"to date."
msgstr ""
#: wiki/models/article.py
msgid "owner"
msgstr "擁有者"
#: openedx/features/content_tagging/models/base.py
msgid ""
"Organization that is related to this taxonomy.If None, then this taxonomy is"
" related to all organizations."
msgstr ""
#: openedx/features/content_type_gating/models.py
#: openedx/features/course_duration_limits/models.py
#: lms/templates/support/feature_based_enrollments.html

View File

@@ -83,19 +83,8 @@ Test Locations
Running Tests
=============
You can run all of the unit-level tests using this command::
**Unless otherwise mentioned, all the following commands should be run from inside the lms docker container.**
paver test
This includes python, JavaScript, and documentation tests.
Note -
`paver` is a scripting tool. To get information about various options, you can run the this command::
paver -h
Note -
Unless otherwise mentioned, all the following commands should be run from inside lms docker container.
Running Python Unit tests
-------------------------
@@ -107,8 +96,8 @@ Pytest (and all of the plugins we use with it) has a lot of options. Use `pytest
.. _pytest: https://pytest.org/
Running a Single Test
~~~~~~~~~~~~~~~~~~~~~
Running Python Test Subsets
~~~~~~~~~~~~~~~~~~~~~~~~~~~
When developing tests, it is often helpful to be able to really just run one single test without the overhead of PIP installs, UX builds, etc.

View File

@@ -516,7 +516,7 @@ edx-proctoring==4.16.1
# via
# -r requirements/edx/kernel.in
# edx-proctoring-proctortrack
edx-proctoring-proctortrack==1.0.5
edx-proctoring-proctortrack==1.2.1
# via -r requirements/edx/kernel.in
edx-rbac==1.8.0
# via edx-enterprise

View File

@@ -801,7 +801,7 @@ edx-proctoring==4.16.1
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# edx-proctoring-proctortrack
edx-proctoring-proctortrack==1.0.5
edx-proctoring-proctortrack==1.2.1
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt

View File

@@ -593,7 +593,7 @@ edx-proctoring==4.16.1
# via
# -r requirements/edx/base.txt
# edx-proctoring-proctortrack
edx-proctoring-proctortrack==1.0.5
edx-proctoring-proctortrack==1.2.1
# via -r requirements/edx/base.txt
edx-rbac==1.8.0
# via

View File

@@ -81,7 +81,7 @@ edx-name-affirmation
edx-opaque-keys
edx-organizations
edx-proctoring>=2.0.1
edx-proctoring-proctortrack==1.0.5 # Intentionally and permanently pinned to ensure code changes are reviewed
edx-proctoring-proctortrack==1.2.1 # Intentionally and permanently pinned to ensure code changes are reviewed
edx-rest-api-client
edx-search
edx-submissions

View File

@@ -621,7 +621,7 @@ edx-proctoring==4.16.1
# via
# -r requirements/edx/base.txt
# edx-proctoring-proctortrack
edx-proctoring-proctortrack==1.0.5
edx-proctoring-proctortrack==1.2.1
# via -r requirements/edx/base.txt
edx-rbac==1.8.0
# via