Exemple #1
0
 def get_all_course(cls, page_no, page_size):
     courses = CourseBusiness.read()
     total = len(courses)
     video_course = courses(course_type='video')
     practice_course = courses(course_type='practice')
     doc_course = courses(course_type='doc')
     video_course = video_course[(page_no - 1) * page_size:page_no *
                                 page_size]
     practice_course = practice_course[(page_no - 1) * page_size:page_no *
                                       page_size]
     doc_course = doc_course[(page_no - 1) * page_size:page_no * page_size]
     return {
         'video': json_utility.me_obj_list_to_json_list(video_course),
         'practice': json_utility.me_obj_list_to_json_list(practice_course),
         'doc': json_utility.me_obj_list_to_json_list(doc_course)
     }, total
Exemple #2
0
    def get_my_course_with_detail(cls, user, page_no=1, page_size=10):
        if isinstance(user, str):
            user = UserBusiness.get_by_user_ID(user)
        enroll_activity = CourseActivityBusiness.read({'user': user})
        enroll_activity = enroll_activity(course__exists=True)

        courses = [each_activity.course for each_activity in enroll_activity]
        # 分页
        total = len(courses)
        courses = courses[(page_no - 1) * page_size:page_no * page_size]
        for each_course in courses:
            # 将 Activity的数据读取出来
            num_of_activities = 0
            objects_of_activities = []
            for section in each_course.sections:
                activities = CourseActivityBusiness.read({
                    'user':
                    user,
                    'course_section':
                    section
                })
                for a in activities:
                    # objects_of_activities.append(a.course_unit.to_mongo())
                    objects_of_activities.append(a.course_unit.zh_name)
                    num_of_activities += 1
            # print(each_course)
            # todo 以后查看是否有更好的方式, 因为这样做的话, 两门课包含了同一门就没办法进度同步了
            total_unit = each_course.number_of_units
            each_course.progress = num_of_activities * 1.0 / total_unit
            each_course.total_unit = total_unit
            each_course.learn_unit = num_of_activities
            each_course.learn_activities = objects_of_activities
        courses = json_utility.me_obj_list_to_json_list(courses)
        return courses, total
Exemple #3
0
def get_action_entity():
    user_ID = request.args.get("user_ID")
    action_entity = request.args.get("action_entity")
    page_no = int(request.args.get('page_no', 1))
    page_size = int(request.args.get('page_size', 5))
    type = request.args.get('type', None)
    search_query = request.args.get('search_query', None)
    apps = UserBusiness.get_action_entity(
        user_ID=user_ID, action_entity=action_entity, type=type,
        page_no=page_no, page_size=page_size, search_query=search_query)
    if action_entity != 'request_star':
        for app in apps.objects:
            app.user_ID = app.user.user_ID
    else:
        for each_request in apps.objects:
            each_request.answer_number = RequestAnswerBusiness. \
                answer_number_of_user_request(each_request.id)
            each_request.user_ID = each_request.user.user_ID
    return jsonify({
        'response': {
            "objects": json_utility.me_obj_list_to_json_list(apps.objects),
            "page_size": apps.page_size,
            "page_no": apps.page_no,
            "count": apps.count,
        }
    })
Exemple #4
0
def list_files_by_user_ID():
    user_ID = request.args.get('user_ID')
    extension = request.args.get('extension')
    predict = request.args.get('predict')
    predict = str(predict).lower() == 'true'
    if not user_ID:
        return jsonify({'response': 'insufficient args'}), 400
    public_files, owned_files = \
        file_service.list_file_by_extension(user_ID,
                                            extension=extension,
                                            predict=predict,
                                            order=-1)
    public_files = json_utility.me_obj_list_to_json_list(public_files)
    owned_files = json_utility.me_obj_list_to_json_list(owned_files)
    result = {'public_files': public_files, 'owned_files': owned_files}
    return jsonify({'response': result})
Exemple #5
0
def list_all_served_models(user_ID=None, related_fields=None, related_tasks=None, tags=None,
                           privacy=None, skipping=None, search_str=None):
    """

    :param related_fields:
    :param related_tasks:
    :param tags:
    :param privacy:
    :param skipping:
    :param search_str:
    :return:
    """

    public_all = served_model_business.get_by_query(
        user_ID=user_ID,
        related_fields=related_fields,
        related_tasks=related_tasks,
        tags=tags, skipping=skipping,
        privacy=privacy,
        search_str=search_str)
    # public_all = [each_model.to_mongo() for each_model in public_all]
    public_all = json_utility.me_obj_list_to_json_list(
        public_all)
    # myyy = [a['_id'] for a in public_all]
    # print(myyy)
    # print(public_all)
    return public_all
Exemple #6
0
    def get_my_course(cls, user, page_no=1, page_size=10):
        if isinstance(user, str):
            user = UserBusiness.get_by_user_ID(user)
        enroll_activity = CourseActivityBusiness.read({
            'user': user,
            'status': 'enroll'
        })
        enroll_activity = enroll_activity(course__exists=True)

        courses = [each_activity.course for each_activity in enroll_activity]
        # 分页
        total = len(courses)
        courses = courses[(page_no - 1) * page_size:page_no * page_size]
        for each_course in courses:
            # 将 Activity的数据读取出来
            num_of_activities = 0
            for section in each_course.sections:
                num_of_activities += CourseActivityBusiness.read({
                    'user':
                    user,
                    'course_section':
                    section,
                    'status':
                    'enroll'
                }).count()
            # print(each_course)
            # todo 以后查看是否有更好的方式, 因为这样做的话, 两门课包含了同一门就没办法进度同步了
            total_unit = each_course.number_of_units
            each_course.progress = num_of_activities * 1.0 / total_unit
            each_course.total_unit = total_unit
            each_course.learn_unit = num_of_activities
        courses = json_utility.me_obj_list_to_json_list(courses)
        return courses, total
Exemple #7
0
def list_data_sets_by_user_ID():
    user_ID = get_jwt_identity()
    related_field = request.args.get('related_field')
    tag = request.args.get('tag')
    related_task = request.args.get('related_task')
    extension = request.args.get('extension')
    type = request.args.get('type')
    if not user_ID:
        jsonify({'response': 'insufficient args'}), 400
    if user_ID:
        public_ds, owned_ds = data_service. \
            list_data_sets_by_user_ID(user_ID, -1,
                                      related_field=related_field, tag=tag,
                                      related_task=related_task,
                                      extension=extension,
                                      file_type=type)
        public_ds = json_utility.me_obj_list_to_json_list(public_ds)
        owned_ds = json_utility.me_obj_list_to_json_list(owned_ds)
        result = {'public_ds': public_ds, 'owned_ds': owned_ds}
        return jsonify({'response': result}), 200
    return jsonify({'response': 'insufficient arguments'}), 400
Exemple #8
0
def check_integrity(staging_data_set_id):
    """
    check_integrity
    :param staging_data_set_id:
    :return:
    """
    data_objects = staging_data_business. \
        get_by_staging_data_set_id(staging_data_set_id)
    # convert mongoengine objects to dicts
    data_objects = json_utility.me_obj_list_to_json_list(data_objects)
    data_fields = get_fields_with_types(staging_data_set_id)
    return data_service.check_data_integrity(data_objects, data_fields)
Exemple #9
0
def get_by_model_id(model_ID):
    """

    :param category:
    :return:
    """

    model = served_model_business.get_by_id(model_ID)
    # public_all = [each_model.to_mongo() for each_model in public_all]
    model = json_utility.me_obj_list_to_json_list(
        [model])
    print(model)
    model[0] = build_how_to_use_code(model[0])
    return model
Exemple #10
0
def get_data_set(data_set_id):
    limit = request.args.get('limit')
    is_last = request.args.get('isLast')

    if not limit:
        limit = 100
    if is_last == 'true':
        data = data_business.get_last_limit_by_data_set(
            ObjectId(data_set_id), int(limit))
    else:
        data = data_business.get_by_data_set_limit(ObjectId(data_set_id),
                                                   int(limit))
    data = json_utility.me_obj_list_to_json_list(data)
    fields = data_service.get_fields_with_types(ObjectId(data_set_id))
    fields = {e[0]: e[1] for e in fields}
    return jsonify({'response': data, 'fields': fields}), 200
Exemple #11
0
def list_projects_by_query():
    group = request.args.get('group')
    page_no = int(request.args.get('page_no', 1))
    page_size = int(request.args.get('page_size', 5))
    search_query = request.args.get('query', None)
    privacy = request.args.get('privacy', None)
    default_max_score = float(request.args.get('max_score', 0.4))
    type = request.args.get('type', 'project')
    tags = request.args.get('tags', None)
    if tags:
        tags = tags.split(',')

    if group == 'my':
        user_ID = get_jwt_identity()
    else:
        user_ID = None
        privacy = 'public'
    try:
        projects = project_service.list_projects(
            search_query=search_query,
            privacy=privacy,
            type=type,
            page_no=page_no,
            page_size=page_size,
            default_max_score=default_max_score,
            user_ID=user_ID,
            tags=tags)
    except Warning as e:
        return jsonify({
            "response": [],
            "message": e.args[0]["hint_message"]
        }), 200
    except Error as e:
        return jsonify({"message": e.args[0]["hint_message"]}), 404
    else:
        for project in projects.objects:
            project.user_ID = project.user.user_ID
            # if project.user.avatar:
            #     project.user_avatar = project.user.avatar
        project_list = json_utility.me_obj_list_to_json_list(projects.objects)
        return jsonify(
            {"response": {
                'projects': project_list,
                'count': projects.count
            }}), 200
Exemple #12
0
def get_chat_api_list():
    """
    带搜索关键字的,
    :return:
    :rtype:
    """
    # user_ID = get_jwt_identity()
    page_no = int(request.args.get('page_no', 1))
    page_size = int(request.args.get('page_size', 5))
    search_query = request.args.get('search_query', None)
    default_max_score = float(request.args.get('max_score', 0.1))
    privacy = request.args.get('privacy')

    if not search_query:
        return jsonify({'response': 'no search_query arg'}), 400
    try:
        api_list = AppBusiness.list_projects_chat(
            search_query,
            page_no=page_no,
            page_size=page_size,
            default_max_score=default_max_score,
            privacy=privacy)
    except Warning as e:
        return jsonify({
            "response": [],
            "message": e.args[0]["hint_message"]
        }), 200
    except Error as e:
        return jsonify({"message": e.args[0]["hint_message"]}), 404
    else:

        objects = json_utility.me_obj_list_to_json_list(api_list.objects)
        return jsonify({
            "response": {
                "objects": objects,
                "count": api_list.count,
                "page_no": api_list.page_no,
                "page_size": api_list.page_size,
            }
        }), 200
Exemple #13
0
def get_api_list():
    """
    带搜索关键字的,
    :return:
    :rtype:
    """
    user_ID = get_jwt_identity()
    page_no = int(request.args.get('page_no', 1))
    page_size = int(request.args.get('page_size', 5))
    search_query = request.args.get('search_query', None)
    default_max_score = float(request.args.get('max_score', 0.1))
    try:
        api_list = AppService.list_projects(
            search_query=search_query,
            page_no=page_no,
            page_size=page_size,
            default_max_score=default_max_score,
            privacy=None,
            user_ID=None)
    except Warning as e:
        return jsonify({
            "response": [],
            "message": e.args[0]["hint_message"]
        }), 200
    except Error as e:
        return jsonify({"message": e.args[0]["hint_message"]}), 404
    else:
        objects = api_list.objects
        for object in objects:
            object.user_ID = object.user.user_ID
        objects = json_utility.me_obj_list_to_json_list(objects)
        return jsonify({
            "response": {
                "objects": objects,
                "count": api_list.count,
                "page_no": api_list.page_no,
                "page_size": api_list.page_size
            },
        }), 200
Exemple #14
0
def get():
    channel = request.args.get("channel", 'all')
    page_no = int(request.args.get('page_no', 1))
    page_size = int(request.args.get('page_size', 50))
    if channel == 'all':
        query = {}
    else:
        query = {"channel": channel}
    world_messages = WorldBusiness.get_pagination(
        query=query,
        page_no=page_no, page_size=page_size)
    for message in world_messages.objects:
        if hasattr(message, "sender") and message.sender:
            message.sender_user_ID = message.sender.user_ID
        else:
            message.sender_user_ID = "system"
    if world_messages:
        return jsonify({
            "response": {
                "objects": json_utility.me_obj_list_to_json_list(world_messages.objects)
            }
        }), 200
Exemple #15
0
def get_api_list():
    """
    获取用户 自己使用过的apis,自己收藏的apis, 自己star的apis, 带搜索关键字的
    :return:
    :rtype:
    """
    page_no = int(request.args.get('page_no', 1))
    page_size = int(request.args.get('page_size', 5))
    search_query = request.args.get('search_query', None)
    get_type = request.args.get('get_type', ApiGetType.all)
    user_ID = request.args.get('user_ID', None)
    default_max_score = float(request.args.get('max_score', 0.4))

    print("get_type", get_type)

    try:
        api_list = api_service.get_api_list(
            get_type=get_type,
            search_query=search_query,
            user_ID=user_ID,
            page_no=page_no,
            page_size=page_size,
            default_max_score=default_max_score)
    except Warning as e:
        return jsonify({
            "response": [],
            "message": e.args[0]["hint_message"]
        }), 200
    except Error as e:
        return jsonify({"message": e.args[0]["hint_message"]}), 404
    else:
        if get_type == ApiGetType.chat:
            api_list = json_utility.convert_to_json(api_list)
        else:
            api_list = json_utility.me_obj_list_to_json_list(api_list)
        return jsonify({"response": api_list}), 200
Exemple #16
0
def get_module_list():
    module_list = module_business.get_all().order_by('-create_time')
    module_list = json_utility.me_obj_list_to_json_list(module_list)
    return jsonify({"response": module_list}), 200
Exemple #17
0
def check_data_set_integrity(data_set_id):
    data_objects = data_business.get_by_data_set(data_set_id)
    # convert mongoengine objects to dicts
    data_objects = json_utility.me_obj_list_to_json_list(data_objects)
    data_fields = get_fields_with_types(data_set_id)
    return check_data_integrity(data_objects, data_fields)
Exemple #18
0
 def get_trigger(cls, unit):
     triggers = CourseUnitTriggerBusiness.read({'unit': unit})
     return json_utility.me_obj_list_to_json_list(triggers), len(triggers)