当前位置: 首页>>代码示例>>Python>>正文


Python CourseKey.from_string方法代码示例

本文整理汇总了Python中xmodule.modulestore.keys.CourseKey.from_string方法的典型用法代码示例。如果您正苦于以下问题:Python CourseKey.from_string方法的具体用法?Python CourseKey.from_string怎么用?Python CourseKey.from_string使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在xmodule.modulestore.keys.CourseKey的用法示例。


在下文中一共展示了CourseKey.from_string方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: test_course_constructor_bad_package_id

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
    def test_course_constructor_bad_package_id(self, bad_id):
        """
        Test all sorts of badly-formed package_ids (and urls with those package_ids)
        """
        with self.assertRaises(InvalidKeyError):
            CourseLocator(org=bad_id, offering='test')

        with self.assertRaises(InvalidKeyError):
            CourseLocator(org='test', offering=bad_id)

        with self.assertRaises(InvalidKeyError):
            CourseKey.from_string('course-locator:test+{}'.format(bad_id))
开发者ID:aemilcar,项目名称:edx-platform,代码行数:14,代码来源:test_locators.py

示例2: handle

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
    def handle(self, *args, **options):
        """
        Checks arguments and runs export function if they are good
        """

        if len(args) != 2:
            raise CommandError('This script requires exactly two arguments: '
                               'course_loc and git_url')

        # Rethrow GitExportError as CommandError for SystemExit
        try:
            course_key = CourseKey.from_string(args[0])
        except InvalidKeyError:
            try:
                course_key = SlashSeparatedCourseKey.from_deprecated_string(args[0])
            except InvalidKeyError:
                raise CommandError(GitExportError.BAD_COURSE)

        try:
            git_export_utils.export_to_git(
                course_key,
                args[1],
                options.get('user', ''),
                options.get('rdir', None)
            )
        except git_export_utils.GitExportError as ex:
            raise CommandError(str(ex))
开发者ID:PaoloC68,项目名称:edx-platform,代码行数:29,代码来源:git_export.py

示例3: handle

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
    def handle(self, *args, **options):

        print "args = ", args

        if len(args) > 0:
            course_id = args[0]
        else:
            print self.help
            return
        course_key = None
        # parse out the course id into a coursekey
        try:
            course_key = CourseKey.from_string(course_id)
        # if it's not a new-style course key, parse it from an old-style
        # course key
        except InvalidKeyError:
            course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id)
        try:
            course = get_course_by_id(course_key)
        except Exception as err:
            print "-----------------------------------------------------------------------------"
            print "Sorry, cannot find course with id {}".format(course_id)
            print "Got exception {}".format(err)
            print "Please provide a course ID or course data directory name, eg content-mit-801rq"
            return

        print "-----------------------------------------------------------------------------"
        print "Computing grades for {}".format(course_id)

        offline_grade_calculation(course_key)
开发者ID:PaoloC68,项目名称:edx-platform,代码行数:32,代码来源:compute_grades.py

示例4: handle

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
    def handle(self, *args, **options):
        if not options["course"]:
            raise CommandError(Command.course_option.help)

        try:
            course_key = CourseKey.from_string(options["course"])
        except InvalidKeyError:
            course_key = SlashSeparatedCourseKey.from_deprecated_string(options["course"])

        course = get_course_by_id(course_key)

        print "Warning: this command directly edits the list of course tabs in mongo."
        print "Tabs before any changes:"
        print_course(course)

        try:
            if options["delete"]:
                if len(args) != 1:
                    raise CommandError(Command.delete_option.help)
                num = int(args[0])
                if query_yes_no("Deleting tab {0} Confirm?".format(num), default="no"):
                    tabs.primitive_delete(course, num - 1)  # -1 for 0-based indexing
            elif options["insert"]:
                if len(args) != 3:
                    raise CommandError(Command.insert_option.help)
                num = int(args[0])
                tab_type = args[1]
                name = args[2]
                if query_yes_no('Inserting tab {0} "{1}" "{2}" Confirm?'.format(num, tab_type, name), default="no"):
                    tabs.primitive_insert(course, num - 1, tab_type, name)  # -1 as above
        except ValueError as e:
            # Cute: translate to CommandError so the CLI error prints nicely.
            raise CommandError(e)
开发者ID:hmcmooc,项目名称:muddx-platform,代码行数:35,代码来源:edit_course_tabs.py

示例5: handle

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
    def handle(self, *args, **options):
        if not options['course_id']:
            raise CommandError("You must specify a course id for this command")
        if not options['from_mode'] or not options['to_mode']:
            raise CommandError('You must specify a "to" and "from" mode as parameters')

        try:
            course_key = CourseKey.from_string(options['course_id'])
        except InvalidKeyError:
            course_key = SlashSeparatedCourseKey.from_deprecated_string(options['course_id'])

        filter_args = dict(
            course_id=course_key,
            mode=options['from_mode']
        )
        if options['user']:
            if '@' in options['user']:
                user = User.objects.get(email=options['user'])
            else:
                user = User.objects.get(username=options['user'])
            filter_args['user'] = user
        enrollments = CourseEnrollment.objects.filter(**filter_args)
        if options['noop']:
            print "Would have changed {num_enrollments} students from {from_mode} to {to_mode}".format(
                num_enrollments=enrollments.count(),
                from_mode=options['from_mode'],
                to_mode=options['to_mode']
            )
        else:
            for enrollment in enrollments:
                enrollment.update_enrollment(mode=options['to_mode'])
                enrollment.save()
开发者ID:PaoloC68,项目名称:edx-platform,代码行数:34,代码来源:change_enrollment.py

示例6: parse_args

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
    def parse_args(self, *args):
        """
        Return a 4-tuple of (course_key, user, org, offering).
        If the user didn't specify an org & offering, those will be None.
        """
        if len(args) < 2:
            raise CommandError(
                "migrate_to_split requires at least two arguments: "
                "a course_key and a user identifier (email or ID)"
            )

        try:
            course_key = CourseKey.from_string(args[0])
        except InvalidKeyError:
            course_key = SlashSeparatedCourseKey.from_deprecated_string(args[0])

        try:
            user = user_from_str(args[1])
        except User.DoesNotExist:
            raise CommandError("No user found identified by {}".format(args[1]))

        try:
            org = args[2]
            offering = args[3]
        except IndexError:
            org = offering = None

        return course_key, user, org, offering
开发者ID:PaoloC68,项目名称:edx-platform,代码行数:30,代码来源:migrate_to_split.py

示例7: clean_course_id

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
    def clean_course_id(self):
        """Validate the course id"""
        cleaned_id = self.cleaned_data["course_id"]
        try:
            course_key = CourseKey.from_string(cleaned_id)
        except InvalidKeyError:
            try:
                course_key = SlashSeparatedCourseKey.from_deprecated_string(cleaned_id)
            except InvalidKeyError:
                msg = u'Course id invalid.' 
                msg += u' --- Entered course id was: "{0}". '.format(cleaned_id)
                msg += 'Please recheck that you have supplied a valid course id.'
                raise forms.ValidationError(msg)

        if not modulestore().has_course(course_key):
            msg = u'COURSE NOT FOUND'
            msg += u' --- Entered course id was: "{0}". '.format(course_key.to_deprecated_string())
            msg += 'Please recheck that you have supplied a valid course id.'
            raise forms.ValidationError(msg)

        # Now, try and discern if it is a Studio course - HTML editor doesn't work with XML courses
        is_studio_course = modulestore().get_modulestore_type(course_key) != XML_MODULESTORE_TYPE
        if not is_studio_course:
            msg = "Course Email feature is only available for courses authored in Studio. "
            msg += '"{0}" appears to be an XML backed course.'.format(course_key.to_deprecated_string())
            raise forms.ValidationError(msg)

        return course_key
开发者ID:PaoloC68,项目名称:edx-platform,代码行数:30,代码来源:forms.py

示例8: export_git

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
def export_git(request, course_key_string):
    """
    This method serves up the 'Export to Git' page
    """
    course_key = CourseKey.from_string(course_key_string)
    if not has_course_access(request.user, course_key):
        raise PermissionDenied()

    course_module = modulestore().get_course(course_key)
    failed = False

    log.debug('export_git course_module=%s', course_module)

    msg = ""
    if 'action' in request.GET and course_module.giturl:
        if request.GET['action'] == 'push':
            try:
                git_export_utils.export_to_git(
                    course_module.id,
                    course_module.giturl,
                    request.user,
                )
                msg = _('Course successfully exported to git repository')
            except git_export_utils.GitExportError as ex:
                failed = True
                msg = unicode(ex)

    return render_to_response('export_git.html', {
        'context_course': course_module,
        'msg': msg,
        'failed': failed,
    })
开发者ID:PaoloC68,项目名称:edx-platform,代码行数:34,代码来源:export_git.py

示例9: course_key_from_arg

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
 def course_key_from_arg(self, arg):
     """
     Convert the command line arg into a course key
     """
     try:
         return CourseKey.from_string(arg)
     except InvalidKeyError:
         return SlashSeparatedCourseKey.from_deprecated_string(arg)
开发者ID:PaoloC68,项目名称:edx-platform,代码行数:10,代码来源:clone_course.py

示例10: course_handler

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
def course_handler(request, course_key_string=None):
    """
    The restful handler for course specific requests.
    It provides the course tree with the necessary information for identifying and labeling the parts. The root
    will typically be a 'course' object but may not be especially as we support modules.

    GET
        html: return course listing page if not given a course id
        html: return html page overview for the given course if given a course id
        json: return json representing the course branch's index entry as well as dag w/ all of the children
        replaced w/ json docs where each doc has {'_id': , 'display_name': , 'children': }
    POST
        json: create a course, return resulting json
        descriptor (same as in GET course/...). Leaving off /branch/draft would imply create the course w/ default
        branches. Cannot change the structure contents ('_id', 'display_name', 'children') but can change the
        index entry.
    PUT
        json: update this course (index entry not xblock) such as repointing head, changing display name, org,
        offering. Return same json as above.
    DELETE
        json: delete this branch from this course (leaving off /branch/draft would imply delete the course)
    """
    response_format = request.REQUEST.get("format", "html")
    if response_format == "json" or "application/json" in request.META.get("HTTP_ACCEPT", "application/json"):
        if request.method == "GET":
            return JsonResponse(_course_json(request, CourseKey.from_string(course_key_string)))
        elif request.method == "POST":  # not sure if this is only post. If one will have ids, it goes after access
            return create_new_course(request)
        elif not has_course_access(request.user, CourseKey.from_string(course_key_string)):
            raise PermissionDenied()
        elif request.method == "PUT":
            raise NotImplementedError()
        elif request.method == "DELETE":
            raise NotImplementedError()
        else:
            return HttpResponseBadRequest()
    elif request.method == "GET":  # assume html
        if course_key_string is None:
            return course_listing(request)
        else:
            return course_index(request, CourseKey.from_string(course_key_string))
    else:
        return HttpResponseNotFound()
开发者ID:hmcmooc,项目名称:muddx-platform,代码行数:45,代码来源:course.py

示例11: handle

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
    def handle(self, *args, **options):
        if len(args) != 1:
            raise CommandError("check_course requires one argument: <course_id>")

        try:
            course_key = CourseKey.from_string(args[0])
        except InvalidKeyError:
            course_key = SlashSeparatedCourseKey.from_deprecated_string(args[0])

        store = modulestore()

        course = store.get_course(course_key, depth=3)

        err_cnt = 0

        def _xlint_metadata(module):
            err_cnt = check_module_metadata_editability(module)
            for child in module.get_children():
                err_cnt = err_cnt + _xlint_metadata(child)
            return err_cnt

        err_cnt = err_cnt + _xlint_metadata(course)

        # we've had a bug where the xml_attributes field can we rewritten as a string rather than a dict
        def _check_xml_attributes_field(module):
            err_cnt = 0
            if hasattr(module, 'xml_attributes') and isinstance(module.xml_attributes, basestring):
                print 'module = {0} has xml_attributes as a string. It should be a dict'.format(module.location)
                err_cnt = err_cnt + 1
            for child in module.get_children():
                err_cnt = err_cnt + _check_xml_attributes_field(child)
            return err_cnt

        err_cnt = err_cnt + _check_xml_attributes_field(course)

        # check for dangling discussion items, this can cause errors in the forums
        def _get_discussion_items(module):
            discussion_items = []
            if module.location.category == 'discussion':
                discussion_items = discussion_items + [module.location]

            for child in module.get_children():
                discussion_items = discussion_items + _get_discussion_items(child)

            return discussion_items

        discussion_items = _get_discussion_items(course)

        # now query all discussion items via get_items() and compare with the tree-traversal
        queried_discussion_items = store.get_items(course_key=course_key, category='discussion',)

        for item in queried_discussion_items:
            if item.location not in discussion_items:
                print 'Found dangling discussion module = {0}'.format(item.location)
开发者ID:PaoloC68,项目名称:edx-platform,代码行数:56,代码来源:check_course.py

示例12: test_course_constructor_url_package_id_and_version_guid

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
 def test_course_constructor_url_package_id_and_version_guid(self):
     test_id_loc = '519665f6223ebd6980884f2b'
     testobj = CourseKey.from_string(
         'course-locator:mit.eecs+honors.6002x+{}+{}'.format(CourseLocator.VERSION_PREFIX, test_id_loc)
     )
     self.check_course_locn_fields(
         testobj,
         org='mit.eecs',
         offering='honors.6002x',
         version_guid=ObjectId(test_id_loc)
     )
开发者ID:aemilcar,项目名称:edx-platform,代码行数:13,代码来源:test_locators.py

示例13: test_course_constructor_url

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
 def test_course_constructor_url(self):
     # Test parsing a url when it starts with a version ID and there is also a block ID.
     # This hits the parsers parse_guid method.
     test_id_loc = '519665f6223ebd6980884f2b'
     testobj = CourseKey.from_string("course-locator:{}+{}+{}+hw3".format(
         CourseLocator.VERSION_PREFIX, test_id_loc, CourseLocator.BLOCK_PREFIX
     ))
     self.check_course_locn_fields(
         testobj,
         version_guid=ObjectId(test_id_loc)
     )
开发者ID:aemilcar,项目名称:edx-platform,代码行数:13,代码来源:test_locators.py

示例14: tabs_handler

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
def tabs_handler(request, course_key_string):
    """
    The restful handler for static tabs.

    GET
        html: return page for editing static tabs
        json: not supported
    PUT or POST
        json: update the tab order. It is expected that the request body contains a JSON-encoded dict with entry "tabs".
        The value for "tabs" is an array of tab locators, indicating the desired order of the tabs.

    Creating a tab, deleting a tab, or changing its contents is not supported through this method.
    Instead use the general xblock URL (see item.xblock_handler).
    """
    course_key = CourseKey.from_string(course_key_string)
    if not has_course_access(request.user, course_key):
        raise PermissionDenied()

    course_item = modulestore().get_course(course_key)

    if 'application/json' in request.META.get('HTTP_ACCEPT', 'application/json'):
        if request.method == 'GET':
            raise NotImplementedError('coming soon')
        else:
            if 'tabs' in request.json:
                return reorder_tabs_handler(course_item, request)
            elif 'tab_id_locator' in request.json:
                return edit_tab_handler(course_item, request)
            else:
                raise NotImplementedError('Creating or changing tab content is not supported.')

    elif request.method == 'GET':  # assume html
        # get all tabs from the tabs list: static tabs (a.k.a. user-created tabs) and built-in tabs
        # present in the same order they are displayed in LMS

        tabs_to_render = []
        for tab in CourseTabList.iterate_displayable_cms(
                course_item,
                settings,
        ):
            if isinstance(tab, StaticTab):
                # static tab needs its locator information to render itself as an xmodule
                static_tab_loc = course_key.make_usage_key('static_tab', tab.url_slug)
                tab.locator = static_tab_loc
            tabs_to_render.append(tab)

        return render_to_response('edit-tabs.html', {
            'context_course': course_item,
            'tabs_to_render': tabs_to_render,
            'lms_link': get_lms_link_for_item(course_item.location),
        })
    else:
        return HttpResponseNotFound()
开发者ID:PaoloC68,项目名称:edx-platform,代码行数:55,代码来源:tabs.py

示例15: textbooks_detail_handler

# 需要导入模块: from xmodule.modulestore.keys import CourseKey [as 别名]
# 或者: from xmodule.modulestore.keys.CourseKey import from_string [as 别名]
def textbooks_detail_handler(request, course_key_string, textbook_id):
    """
    JSON API endpoint for manipulating a textbook via its internal ID.
    Used by the Backbone application.

    GET
        json: return JSON representation of textbook
    POST or PUT
        json: update textbook based on provided information
    DELETE
        json: remove textbook
    """
    course_key = CourseKey.from_string(course_key_string)
    course_module = _get_course_module(course_key, request.user)
    store = get_modulestore(course_module.location)
    matching_id = [tb for tb in course_module.pdf_textbooks
                   if unicode(tb.get("id")) == unicode(textbook_id)]
    if matching_id:
        textbook = matching_id[0]
    else:
        textbook = None

    if request.method == 'GET':
        if not textbook:
            return JsonResponse(status=404)
        return JsonResponse(textbook)
    elif request.method in ('POST', 'PUT'):  # can be either and sometimes
                                        # django is rewriting one to the other
        try:
            new_textbook = validate_textbook_json(request.body)
        except TextbookValidationError as err:
            return JsonResponse({"error": err.message}, status=400)
        new_textbook["id"] = textbook_id
        if textbook:
            i = course_module.pdf_textbooks.index(textbook)
            new_textbooks = course_module.pdf_textbooks[0:i]
            new_textbooks.append(new_textbook)
            new_textbooks.extend(course_module.pdf_textbooks[i + 1:])
            course_module.pdf_textbooks = new_textbooks
        else:
            course_module.pdf_textbooks.append(new_textbook)
        store.update_item(course_module, request.user.id)
        return JsonResponse(new_textbook, status=201)
    elif request.method == 'DELETE':
        if not textbook:
            return JsonResponse(status=404)
        i = course_module.pdf_textbooks.index(textbook)
        remaining_textbooks = course_module.pdf_textbooks[0:i]
        remaining_textbooks.extend(course_module.pdf_textbooks[i + 1:])
        course_module.pdf_textbooks = remaining_textbooks
        store.update_item(course_module, request.user.id)
        return JsonResponse()
开发者ID:PaoloC68,项目名称:edx-platform,代码行数:54,代码来源:course.py


注:本文中的xmodule.modulestore.keys.CourseKey.from_string方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。