示例#1
0
def psmdlsyncer_go(obj):
    if obj.test:
        click.echo(
            "Doens't make sense to test with a go command, do you mean 'embed' instead?"
        )
        return

    # Initiate the first-run, which only makes sense in this context
    from ssis_dss.trees import AutosendFirstrunTree, MoodleFirstrunTree
    autosendfr = AutosendFirstrunTree()
    moodlefr = MoodleFirstrunTree()
    moodlefr.set_template(
        'ssis_dss.templates.templates.MoodleFirstRunTemplate')
    # populates just the user info
    print('Running first run:')
    +autosendfr
    +moodlefr
    # ensures the users are in the right cohorts
    pause = True

    autosendfr >> moodlefr

    print('Running second run')
    autosend = AutosendTree()
    moodle = MoodleTree()
    +autosend
    +moodle

    autosend >> moodle
示例#2
0
def output_remove_old_courses(obj, path):
    autosend = AutosendTree()
    moodle = MoodleTree()
    +autosend
    +moodle

    from ssis_dss.importers.moodle_importers import MoodleImporter
    moodle = MoodleImporter(moodle, moodle.students)
    existing_courses = []

    for course_idnumber, _, _ in moodle.get_teaching_learning_courses():
        existing_courses.append(course_idnumber)

    for course in autosend.courses.values():
        comment = "present" if course.idnumber in existing_courses else "MISSING"
        print("{comment}: {orig} -> {translated}".format(orig=course._shortcode, translated=course.moodle_shortcode, comment=comment))
示例#3
0
def output_group_additions(obj):
    autosend = AutosendTree()
    moodle = MoodleTree()
    +autosend
    +moodle

    for action in autosend - moodle:
        if action.idnumber.startswith('4813P'):
            print(action)
示例#4
0
def ssisdss_moodleschedule(obj):
    from ssis_dss.importers.moodle_importers import MoodleImporter
    moodle_tree = MoodleTree()

    moodle = MoodleImporter(moodle_tree, moodle_tree.students)
    for item in moodle.bell_schedule():
        print(item)
    from IPython import embed
    embed()
示例#5
0
def output_remove_old_courses(obj, path):
    autosend = AutosendTree()
    moodle = MoodleTree()
    +autosend
    +moodle

    from ssis_dss.importers.moodle_importers import MoodleImporter
    moodle = MoodleImporter(moodle, moodle.students)
    existing_courses = []

    for course_idnumber, _, _ in moodle.get_teaching_learning_courses():
        existing_courses.append(course_idnumber)

    for course in autosend.courses.values():
        comment = "present" if course.idnumber in existing_courses else "MISSING"
        print("{comment}: {orig} -> {translated}".format(
            orig=course._shortcode,
            translated=course.moodle_shortcode,
            comment=comment))
示例#6
0
def output_remove_old_groups(obj, path):
    autosend = AutosendTree()
    moodle = MoodleTree()
    +autosend
    +moodle

    for idnumber in moodle.groups.keys() - autosend.groups.keys():
        if idnumber:
            group = moodle.groups.get(idnumber)
            if group and group.idnumber:
                path.write(
                    "delete_group_for_course '{0.idnumber}'\n".format(group))
示例#7
0
def output_enrollments(obj, path):
    autosend = AutosendTree()
    moodle = MoodleTree()
    +autosend
    +moodle

    for action in autosend - moodle:
        if action.func_name in ['remove_enrollments_from_enrollments']:
            if not action.idnumber.endswith('PP'):
                course, group, role = action.attribute
                path.write(
                    "deenrol_user_from_course {0.idnumber} {1}\n".format(
                        action, course))
示例#8
0
def ssisdss_moodleinterface(obj):
    if obj.test:
        click.echo(
            "Doens't make sense to test with a go command, do you mean 'embed' instead?"
        )
        return

    from ssis_dss.importers.moodle_importers import MoodleImporter
    moodle_tree = MoodleTree()
    moodle = MoodleImporter(moodle_tree, moodle_tree.students)

    from IPython import embed
    embed()
示例#9
0
def output_deenrol_old_students(obj, path, verbose):
    autosend = AutosendTree()
    moodle = MoodleTree()
    +autosend
    +moodle

    from IPython import embed
    embed()

    for idnumber in moodle.students.keys() - autosend.students.keys():
        enrollment_data = moodle.enrollments.get(idnumber)
        if enrollment_data is None:
            verbose and print("No enrollment info for {}".format(idnumber))
        if enrollment_data:
            for enrollment in enrollment_data.enrollments:
                course, group, role = enrollment
                verbose and print('\t', idnumber, course)
                path.write("deenrol_user_from_course {0} {1}\n".format(
                    idnumber, course))
        else:
            verbose and print("No enrollments {}".format(idnumber))
示例#10
0
def output_deenrol_old_parents_students(obj, path):
    autosend = AutosendTree()
    moodle = MoodleTree()
    +autosend
    +moodle

    from ssis_dss.importers.moodle_importers import MoodleImporter
    moodledb = MoodleImporter(moodle, moodle.students)

    old_parents = moodle.parents.keys() - autosend.parents.keys()
    old_students = moodle.students.keys() - autosend.students.keys()

    old_users = old_parents.union(old_students)

    for user_idnumber, enrollment_type, course_idnumber in moodledb.get_user_enrollments(
    ):
        if user_idnumber in old_users:
            if user_idnumber.endswith('PP'):
                continue
            if enrollment_type == 'manual' and course_idnumber and not course_idnumber.startswith(
                    'OLP:'):
                path.write("deenrol_user_from_course {0} {1}\n".format(
                    user_idnumber, course_idnumber))
示例#11
0
 def _moodle(self):
     if not hasattr(self, '_moodle_info'):
         self._moodle_tree = MoodleTree()
     return self._moodle_tree
示例#12
0
def output_group_migration(obj, path):
    autosend = AutosendTree()
    moodle = MoodleTree()
    click.echo("processing autosend...")
    +autosend
    click.echo("processing moodle...")
    +moodle

    from ssis_dss.importers.moodle_importers import MoodleImporter
    moodle_db = MoodleImporter(moodle, moodle.students)

    for group in moodle.groups.values():
        grades = set()
        for member_idnumber in group.members:
            student = autosend.students.get(member_idnumber)
            if student:
                grades.add(student._grade)

        new_group = [
            ag for ag in autosend.groups.values()
            if ag._old_group == group.idnumber
        ]
        old_name = moodle_db.get_column_from_row('group', 'name', id=group._id)
        if not new_group:
            new_name = '[OLD] {}'.format(old_name)
            moodle_db.update_table('group',
                                   where=dict(idnumber=group.idnumber),
                                   name=new_name)
            path.write('Found OLD group, renamed: {}\n'.format(group.idnumber))
            continue

        new_group = new_group[0].idnumber
        old_name = moodle_db.get_column_from_row('group', 'name', id=group._id)

        if len(list(grades)) > 1:
            path.write(
                "Group {} in course {} has more than one grade: {}\n".format(
                    group.idnumber, group.course, grades))
            new_name = '[OLD] {}'.format(old_name)
            moodle_db.update_table('group',
                                   where=dict(idnumber=group.idnumber),
                                   name=new_name)
        elif len(list(grades)) == 1:
            old_name_split = old_name.split(' ')
            new_name = "{} course{} sec{}.{}".format(old_name_split[0],
                                                     old_name_split[1],
                                                     grades.pop(),
                                                     old_name_split[2])
            path.write(
                "Changed group idnumber from {} to {} in course {}\n".format(
                    group.idnumber, new_group, group.course))
            moodle_db.update_table('group',
                                   where=dict(idnumber=group.idnumber),
                                   name=new_name)
            moodle_db.update_table('group',
                                   where=dict(idnumber=group.idnumber),
                                   idnumber=new_group)
        else:
            new_name = '[OLD] {}'.format(old_name)
            moodle_db.update_table('group',
                                   where=dict(idnumber=group.idnumber),
                                   name=new_name)
            path.write("Group {} with no members, cannot know grade!\n".format(
                group.idnumber))