Example #1
0
def module_update_or_create(module):
    """
    Create new resource or update resource of a certain course.

    :param module: Contains the necessary info of the new resource.
    :type module: dict(str,int)
    """
    try:
        course = Course.objects.get(courseId=module['courseId'])
    except ObjectDoesNotExist:
        log_assistants(f'The course object with id: {module["courseId"]} does not exist!', 'Sync Agent')
        raise ObjectDoesNotExist(f'The course object with id: {module["courseId"]} does not exist!')

    object_type = module['type']

    defaults = {'name': module['name'], 'course': course, 'version_time': timezone.now}
    kwargs = {'external_id': module['external_id'], 'defaults': defaults}

    if object_type == 'assign':
        _, created = course.assignment_set.update_or_create(**kwargs)
    elif object_type == 'quiz':
        _, created = course.quiz_set.update_or_create(**kwargs)
    elif object_type == 'choice':
        _, created = course.choice_set.update_or_create(**kwargs)
    else:
        kwargs.update({'target': module['target'], 'type': object_type, 'external': False})
        _, created = course.resource_set.update_or_create(**kwargs)
Example #2
0
def module_delete(module):
    """
    Delete certain resource from a certain course.

    :param module: Contains the necessary info of the to be deleted course.
    :type module: dict
    """
    course = Course.objects.get(courseId=module['courseId'])
    object_type = module['type']
    try:
        kwargs = {'external_id': module['external_id']}
        if object_type == 'assign':
            assignment = course.assignment_set.get(**kwargs)
            name = assignment.name
            assignment.delete()
        elif object_type == 'quiz':
            quiz = course.quiz_set.get(**kwargs)
            name = quiz.name
            for agent in course.quizcompletedfeedback_set.filter(quiz=quiz):
                agent.delete()
            quiz.delete()
        elif object_type == 'choice':
            choice = course.choice_set.get(**kwargs)
            name = choice.name
            choice.delete()
        else:
            kwargs = {'target': module['target']}
            content = course.resource_set.get(**kwargs)
            name = content.name
            content.delete()
    except ObjectDoesNotExist:
        log_assistants('Sync agent tried to delete an object not present in the database.',
                       'Sync Agent')
        return
Example #3
0
def user_assigned(user):
    """
    Check if a user is assigned the editteacher or manager role and if so, add them to the database.

    :param user: information about the user.
    :type user: dict(str, str)
    """
    if user['role'] == 'editingteacher' or user['role'] == 'manager':
        try:
            course = Course.objects.get(courseId=user['course_id'])
        except ObjectDoesNotExist:
            log_assistants('Course does not exist.', 'Sync_Agent')
            raise ObjectDoesNotExist('Course does not exist.')

        user_exists = User.objects.filter(moodle_id=user['id']).exists()
        if user_exists:
            userdb = User.objects.get(moodle_id=user['id'])
            if not userdb.role_set.filter(course_id=course, role_type=user['role']).exists():
                Role.objects.create(user_id=userdb, course_id=course, role_type=user['role'])
        else:
            userdb = User(username=user['username'], moodle_id=user['id'], email=user['email'],
                          first_name=user['firstname'],
                          last_name=user['lastname'], is_staff=True, version_time=timezone.now())
            userdb.set_password("Test123!")
            userdb.save()
            teacher_group = Group.objects.get(name='Teachers')
            userdb.groups.add(teacher_group)
            Role.objects.create(user_id=userdb, course_id=course, role_type=user['role'])