예제 #1
0
def get_category_data(id):
    category = tesla_db.learners.get_send_category(id)
    if category is None:
        api_response(TESLA_API_STATUS_CODE.REQUEST_NOT_FOUND, http_code=404)
    data = decode_data(category.data)

    return api_response(TESLA_API_STATUS_CODE.SUCCESS, {
        'id': category.id,
        'description': category.description,
        'data': data
    })
예제 #2
0
def get_vle_data(id):
    vle = tesla_db.vle.get_vle(id)
    if vle is None:
        return api_response(TESLA_API_STATUS_CODE.REQUEST_NOT_FOUND,
                            http_code=404)

    return api_response(
        TESLA_API_STATUS_CODE.SUCCESS, {
            'id': vle.id,
            'vle_id': vle.vle_id,
            'url': vle.url,
            'token': vle.token,
            'name': vle.name
        })
예제 #3
0
def rt_stats():
    stats = {
        'learners': {
            'total': tesla_db.learners.get_num_learners(),
            'ic_ok': tesla_db.learners.get_num_learners_valid_ic(),
            'no_ic': tesla_db.learners.get_num_learners_no_ic(),
            'ic_rejected': tesla_db.learners.get_num_learners_rejected_ic(),
            'ic_outdated': tesla_db.learners.get_num_learners_outdated_ic()
        },
        'requests': {
            'enrolment': {
                'pending': tesla_db.requests.get_num_requests_pending(True),
                'processed':
                tesla_db.requests.get_num_requests_processed(True),
                'failed': tesla_db.requests.get_num_requests_failed(True)
            },
            'verification': {
                'pending': tesla_db.requests.get_num_requests_pending(False),
                'processed':
                tesla_db.requests.get_num_requests_processed(False),
                'failed': tesla_db.requests.get_num_requests_failed(False)
            }
        }
    }

    return api_response(TESLA_API_STATUS_CODE.SUCCESS, {
        'timestamp': datetime.now(),
        'stats': stats
    })
예제 #4
0
def activity_stats(activity_id):

    stats = {
        #'num_learners': 0tesla_db.statistics.num_learners_course(course_id),
        #'num_instruments': tesla_db.statistics.num_activities_course(course_id)
    }

    return api_response(TESLA_API_STATUS_CODE.SUCCESS, {'stats': stats})
예제 #5
0
def course_stats(course_id):

    stats = {
        'num_learners': tesla_db.statistics.num_learners_course(course_id),
        'num_activities': tesla_db.statistics.num_activities_course(course_id)
    }

    return api_response(TESLA_API_STATUS_CODE.SUCCESS, {'stats': stats})
예제 #6
0
def get_learner_data_summary(tesla_id):

    summary = {
        'tesla_id': tesla_id,
        'courses': tesla_db.learners.count_learner_courses(tesla_id),
        'activities': tesla_db.learners.count_learner_activities(tesla_id)
    }

    return api_response(TESLA_API_STATUS_CODE.SUCCESS, summary)
예제 #7
0
def course_activity(course_id, activity_id):

    if request.method == "DELETE":
        tesla_db.courses.delete_activity(course_id, activity_id)

    if request.method == "POST":
        tesla_db.courses.add_activity(course_id, activity_id)

    return api_response(TESLA_API_STATUS_CODE.SUCCESS)
예제 #8
0
def management_environment(type, id):
    permitted_types = ["module", "service"]

    if type not in permitted_types:
        return api_response(TESLA_API_STATUS_CODE.BAD_REQUEST,
                            data={"message": "invalid type"},
                            http_code=400)

    config_from_service_keys = []
    all_config = {"dependencies": {}, "config": []}
    config_icons = {}

    if type == 'module':
        config_obj = get_config_repository().get_module_config(id)

        services_dependencies = []

        if config_obj.get_module_dependencies() is not None:
            services_dependencies = config_obj.get_module_dependencies(
            )['services']

        for service_dependency in services_dependencies:
            configs_service_dependency = config_obj.get_service_config(
                service_dependency)
            if service_dependency not in all_config['dependencies'].keys():
                all_config['dependencies'][service_dependency] = []
                config_icons[service_dependency] = EnvClassify().get_icon(
                    type="service", service_name=service_dependency)

            for (config_service_dependency_key, config_service_dependency_value
                 ) in configs_service_dependency.items():
                config_from_service_keys.append(config_service_dependency_key)

                aux = EnvClassify().get_info(type="service",
                                             service_name=service_dependency,
                                             key=config_service_dependency_key)
                aux['value'] = config_service_dependency_value

                all_config['dependencies'][service_dependency].append(aux)

    else:
        config_obj = get_config_repository().get_service_config(id)

    configs = config_obj.get_config()

    for (key, value) in configs.items():
        if key not in config_from_service_keys:
            aux = EnvClassify().get_info(type=type, service_name=id, key=key)
            aux['value'] = value
            all_config['config'].append(aux)

    return render_template('configuration/modal_environment.html',
                           all_config=all_config,
                           config_icons=config_icons,
                           type=type,
                           id=id)
예제 #9
0
def get_course_data(id):
    course = tesla_db.courses.get_course(id)
    if course is None:
        return api_response(TESLA_API_STATUS_CODE.REQUEST_NOT_FOUND,
                            http_code=404)

    parent_id = -1
    if course.parent_id is not None:
        parent_id = course.parent_id

    return api_response(
        TESLA_API_STATUS_CODE.SUCCESS, {
            'id': course.id,
            'description': course.description,
            'code': course.code,
            'start': course.start,
            'end': course.end,
            'vle_id': course.vle_id,
            'vle_course_id': course.vle_course_id,
            'parent_id': parent_id
        })
예제 #10
0
def delete_learner(tesla_id):
    # Create a new task
    new_task = tesla_db.tasks.create_task(type="DELETE_LEARNER_DATA",
                                          user_id=current_user.id)
    tasks.delete_learner_data.apply_async([new_task.id, tesla_id], priority=5)
    # Create a message to the user
    tesla_db.users.create_message(
        user_id=current_user.id,
        type=TESLA_MESSAGE_TYPE.TASK_CREATED,
        subject=gettext('New task created'),
        content=gettext(
            "A new task to delete all data from user %(value)s has been created. This can take several hours depending on the system load. You will be notified.",
            value=tesla_id))

    return api_response(TESLA_API_STATUS_CODE.SUCCESS)
예제 #11
0
def management_environment_save(type, id):
    permitted_types = ["module", "service"]

    if type not in permitted_types:
        return api_response(TESLA_API_STATUS_CODE.BAD_REQUEST,
                            data={"message": "invalid type"},
                            http_code=400)

    config_from_service_keys = []

    if type == 'module':
        config_obj = get_config_repository().get_module_config(id)

        services_dependencies = config_obj.get_module_dependencies(
        )['services']

        for service_dependency in services_dependencies:
            service_dependency_aux = {}
            configs_service_dependency = config_obj.get_service_config(
                service_dependency)

            for (config_service_dependency_key, config_service_dependency_value
                 ) in configs_service_dependency.items():
                config_from_service_keys.append(config_service_dependency_key)

                value = request.form.get('dependencies[' +
                                         str(service_dependency) + "][" +
                                         str(config_service_dependency_key) +
                                         "]")

                service_dependency_aux[config_service_dependency_key] = value

            config_obj.set_service_config(service_dependency,
                                          service_dependency_aux)

    else:
        config_obj = get_config_repository().get_service_config(id)

    configs = config_obj.get_config()

    for (key, value) in configs.items():
        if key not in config_from_service_keys:
            value = request.form.get("general[" + str(key) + "]")
            config_obj.set_value(key, value)

    flash('Data saved', 'success')

    return redirect(url_for('system.configuration'))
예제 #12
0
def get_learner_categories(tesla_id):

    categories = tesla_db.learners.get_send_user(tesla_id)

    instruments = set()
    options = set()
    cat = []
    for c in categories:
        data = decode_data(c.data)
        c.data = data
        instruments.update(data['instruments'])
        options.update(data['options'])
        cat.append(c.id)

    return api_response(
        TESLA_API_STATUS_CODE.SUCCESS, {
            "categories": cat,
            "instruments": list(instruments),
            "options": list(options)
        })
예제 #13
0
def instrument_status():
    instruments = tesla_db.instruments.get_instrument_status()
    ret_val = []
    for inst in instruments:
        service_info = None
        if inst.InstrumentQueue.service_info is not None:
            service_info = json.loads(inst.InstrumentQueue.service_info)
        updated = inst.InstrumentQueue.created
        if inst.InstrumentQueue.updated is not None:
            updated = inst.InstrumentQueue.updated
        ret_val.append({
            'acronym': inst.Instrument.acronym,
            'pending': inst.InstrumentQueue.pending_tasks,
            'd1': inst.InstrumentQueue.tendency1,
            'd2': inst.InstrumentQueue.tendency2,
            'workers': inst.InstrumentQueue.consumers,
            'active': inst.Instrument.active,
            'service': inst.InstrumentQueue.service,
            'service_info': service_info,
            'updated': updated
        })
    return api_response(TESLA_API_STATUS_CODE.SUCCESS, {'status': ret_val})