Example #1
0
def get_teachers(user_id):
    """
    :param
        universities: List(String)
        major: String
        gender: Enum
        subjects: List(Enum)
        more_than_price: Integer(exclude)
        less_than_price: Integer(exclude)
        max_zip_code: Integer(include)
        min_zip_code: Integer(include)
        next_token: Integer
    :return:
    """
    auth_service.check_permission()
    options = user_service.GetTeacherOptions(universities=request.args.get('universities'),
                                             gender=request.args.get('gender'),
                                             subjects=request.args.get('subjects'),
                                             more_than_price=request.args.get('more_than_price'),
                                             less_than_price=request.args.get('less_than_price'),
                                             # sido=request.args.get('sido'),
                                             # sigungu=request.args.get('sigungu'),
                                             # bname=request.args.get('bname'),
                                             max_zip_code=request.args.get('max_zip_code'),
                                             min_zip_code=request.args.get('min_zip_code'),
                                             next_token=request.args.get('next_token'),
                                             per_page=current_app.config['PER_PAGE'])
    teachers, paging = user_service.get_teachers(user_id, options)
    dto_list = dtos(UserDTO, teachers, is_checked_phone_number=False)
    return dto_list, paging
Example #2
0
def get_lessons():
    """
    :param
        gender: Enum
        subjects: List(Enum)
        more_than_price: Integer(exclude)
        less_than_price: Integer(exclude)
        student_status: Enum
        grade: Integer
        max_zip_code: Integer(include)
        min_zip_code: Integer(include)
        nextToken: Integer
    :return:
    """
    auth_service.check_permission()
    options = lesson_service.GetLessonOptions(
        gender=request.args.get('gender'),
        subjects=request.args.get('subjects'),
        more_than_price=request.args.get('more_than_price'),
        less_than_price=request.args.get('less_than_price'),
        student_status=request.args.get('student_status'),
        grade=request.args.get('grade'),
        max_zip_code=request.args.get('max_zip_code'),
        min_zip_code=request.args.get('min_zip_code'),
        statuses=[LessonStatus.BIDDING, LessonStatus.DEALING],
        next_token=request.args.get('next_token'),
        per_page=current_app.config['PER_PAGE'])
    lessons, paging = lesson_service.get_lessons(options)
    dto_list = dtos(LessonDTO, lessons)
    return dto_list, paging
Example #3
0
def set_preferences(user_id):
    """
    :param user_id:
    :return:
    """
    auth_service.check_permission(user_id)
    preference_request = UserPreferencesRequest(request.get_json())
    user = user_service.set_preferences(user_id, preference_request)
    return UserDTO(user), None
Example #4
0
def get_user_notifications(user_id):
    auth_service.check_permission(user_id)
    options = user_service.GetNotificationOptions(
        user_id=user_id,
        next_token=request.args.get('next_token'),
        per_page=current_app.config['PER_PAGE'])
    notifications, paging = user_service.get_notifications(options)
    dto_list = dtos(NotificationDTO, notifications)
    return dto_list, paging
Example #5
0
def get_lesson_favorites(user_id):
    auth_service.check_permission(user_id)
    options = lesson_service.GetLessonFavoriteOptions(
        user_id=user_id,
        next_token=request.args.get('next_token'),
        per_page=current_app.config['PER_PAGE'])
    favorites, paging = lesson_service.get_favorites(options)
    dto_list = dtos(LessonFavoriteDTO, favorites, include_lesson=True)
    return dto_list, paging
Example #6
0
def get_user_history_lessons(user_id):
    auth_service.check_permission(user_id)
    options = user_service.GetUserLessonOptions(
        user_id=user_id,
        statuses=[LessonStatus.CANCELED, LessonStatus.FINISHED],
        next_token=request.args.get('next_token'),
        per_page=current_app.config['PER_PAGE'])
    lessons, paging = user_service.get_lessons(options)
    dto_list = dtos(LessonDTO, lessons)
    return dto_list, paging
Example #7
0
def get_user_active_lessons(user_id):
    auth_service.check_permission(user_id)
    options = user_service.GetUserLessonOptions(
        user_id=user_id,
        statuses=[LessonStatus.BIDDING, LessonStatus.DEALING],
        next_token=request.args.get('next_token'),
        per_page=current_app.config['PER_PAGE'])
    lessons, paging = user_service.get_lessons(options)
    dto_list = dtos(LessonDTO, lessons)
    return dto_list, paging
Example #8
0
def delete_profile_photos(user_id):
    """
    :param user_id:
    :return:
    :error
        NO_SUCH_ELEMENT
    """
    auth_service.check_permission(user_id)
    user = user_service.set_profile_photos(
        user_id, current_app.config['USER_DEFAULT_PROFILE_PHOTOS'])
    return UserDTO(user), None
Example #9
0
def add_gcms(user_id):
    """
    :param user_id:
    :return:
    :error:
        INVALID_ARGUMENT
    """
    auth_service.check_permission(user_id)
    gcm_add_request = UserGCMAddRequest(request_json=request.get_json())
    gcm = user_service.add_gcm(user_id, gcm_add_request.key)
    return True, None
Example #10
0
def get_biddings(lesson_id):
    """
    :param
        next_token: Integer
    :return:
    """
    auth_service.check_permission()
    options = lesson_service.GetLessonBiddingOptions(
        lesson_id=lesson_id,
        next_token=request.args.get('next_token'),
        per_page=current_app.config['PER_PAGE'])
    lesson_biddings, paging = lesson_service.get_lesson_biddings(options)
    dto_list = dtos(LessonBiddingDTO, lesson_biddings, include_user=True)
    return dto_list, paging
Example #11
0
def get_lesson(lesson_id):
    user_data = auth_service.check_permission()
    lesson = lesson_service.get_lesson(lesson_id)
    biddings_count = lesson_service.get_lesson_biddings_count(lesson_id)
    is_favorited = False
    if lesson_service.get_lesson_favorite(lesson_id,
                                          user_data.get('id')) is not None:
        is_favorited = True
    is_bid = False
    users_bidding = lesson_service.get_lesson_bidding(lesson_id,
                                                      user_data.get('id'))
    if users_bidding is not None:
        is_bid = True
    is_checked_owner_phone_number = False
    if lesson_service.is_checked_phone_number(user_data.get('id'),
                                              lesson.owner_id) is not None:
        is_checked_owner_phone_number = True
    is_checked_selected_user_phone_number = False
    if lesson_service.is_checked_phone_number(
            user_data.get('id'), lesson.selected_user_id) is not None:
        is_checked_selected_user_phone_number = True
    return LessonDTO(
        lesson,
        biddings_count=biddings_count,
        is_favorited=is_favorited,
        is_bid=is_bid,
        users_bidding=users_bidding,
        is_checked_owner_phone_number=is_checked_owner_phone_number,
        is_checked_selected_user_phone_number=
        is_checked_selected_user_phone_number), None
Example #12
0
def favorite_user(user_id):
    """
    상대방을 찜할 때 부르는 API 로 get favorites 와는 다르게 상대방 user_id 입니다
    """
    user_data = auth_service.check_permission()
    favorite = user_service.add_favorite(user_data.get('id'), user_id)
    return UserFavoriteDTO(favorite), None
Example #13
0
def unfavorite_user(user_id):
    """
    상대방 찜을 없앨 때 부르는 API 로 get favorites 와는 다르게 상대방 user_id 입니다
    """
    user_data = auth_service.check_permission()
    user_service.remove_favorite(user_data.get('id'), user_id)
    return None, None
Example #14
0
def check_phone_number(user_id):
    """
    :param user_id:
    :return:
    """
    user_data = auth_service.check_permission()
    checked_user = user_service.check_phone_number(user_data.get('id'),
                                                   user_id)
    return UserDTO(checked_user, is_checked_phone_number=True), None
Example #15
0
def create_lesson():
    """
    :return:
    :error
        INVALID_ARGUMENT
        ELEMENT_ALREADY_EXIST
    """
    user_data = auth_service.check_permission()
    lesson = lesson_service.create_lesson(user_data.get('id'))
    return LessonDTO(lesson), None
Example #16
0
def favorite_lesson(lesson_id):
    """
    :param lesson_id:
    :return:
    :error
        ELEMENT_ALREADY_EXISTS
    """
    user_data = auth_service.check_permission()
    lesson_favorite = lesson_service.add_lesson_favorite(
        lesson_id, user_data.get('id'))
    return LessonFavoriteDTO(lesson_favorite, include_lesson=True), None
Example #17
0
def select_teacher(lesson_id, user_id):
    """
    :param lesson_id:
    :param user_id:
    :return:
    :error
        EXPIRED_LESSON_DEALING
        NO_SUCH_ELEMENT
    """
    user_data = auth_service.check_permission()
    user = lesson_service.select_teacher(lesson_id, user_data.get('id'),
                                         user_id)
    return UserDTO(user, is_checked_phone_number=True), None
Example #18
0
def set_profile_photos(user_id):
    """
    :param user_id:
    :return:
    :error
        TEMPORARY_UNAVAILABLE
        NO_SUCH_ELEMENT
    """
    auth_service.check_permission(user_id)
    try:
        options = upload_service.UploadResizeOptions(
            user_id=user_id,
            upload_folder=current_app.config['UPLOAD_FOLDER'],
            aws_access_key=current_app.config['AWS_ACCESS_KEY'],
            aws_secret_key=current_app.config['AWS_SECRET_KEY'],
            aws_bucket=current_app.config['AWS_DEFAULT_BUCKET'],
            aws_region_host=current_app.config['AWS_REGION_HOST'])
        images = upload_service.upload_resize_image(options, request)
    except Exception as e:
        raise ForbiddenError(message=str(e))
    user = user_service.set_profile_photos(user_id, images)
    return UserDTO(user, is_checked_phone_number=True), None
Example #19
0
def cancel_lesson(lesson_id):
    user_data = auth_service.check_permission()
    canceled_lesson = lesson_service.cancel_lesson(user_data.get('id'),
                                                   lesson_id)
    biddings_count = lesson_service.get_lesson_biddings_count(lesson_id)
    is_checked_owner_phone_number = False
    if lesson_service.is_checked_phone_number(
            user_data.get('id'), canceled_lesson.owner_id) is not None:
        is_checked_owner_phone_number = True
    return LessonDTO(
        canceled_lesson,
        biddings_count=biddings_count,
        is_checked_owner_phone_number=is_checked_owner_phone_number), None
Example #20
0
def add_lesson_bidding(lesson_id):
    """
    :param lesson_id:
    :return:
    :error
        NO_SUCH_ELEMENT
        EXPIRED_LESSON_BIDDING
        INVALID_ARGUMENT
        ELEMENT_ALREADY_EXISTS
    """
    user_data = auth_service.check_permission()
    lesson_bidding_request = LessonBiddingRequest(
        request_json=request.get_json())
    lesson_bidding = lesson_service.add_lesson_bidding(lesson_id,
                                                       user_data.get('id'),
                                                       lesson_bidding_request)
    return LessonBiddingDTO(lesson_bidding, include_lesson=True), None
Example #21
0
def coin_purchase():
    """
    :return:
    :error
        WRONG_RECEIPT
        ELEMENT_ALREADY_EXISTS
    """
    try:
        user_data = auth_service.check_permission()
        coin_service.charge_coins(user_data.get('id'),
                                  Receipt(request_json=request.get_json()))
        logger.debug(
            LogItem(who=WhoLogItem(request=request),
                    what=WhatLogItem(object_type=ObjectType.PAYMENT),
                    when=WhenLogItem(millis=current_millis()),
                    how=HowLogItem(action='COIN_PURCHASE')).__dict__)
    except:
        logger.error(traceback.format_exc())
        raise
    return True, None
Example #22
0
def get_user_profile(user_id):
    """
    :param user_id:
    :return:
    :parameter phone_number(Bool)
    :error
        NO_SUCH_ELEMENT
    """
    user_data = auth_service.check_permission()
    is_checked_phone_number = StringUtils.to_bool(
        request.args.get('phone_number'))
    if is_checked_phone_number and user_service.is_checked_phone_number(
            user_data.get('id'), user_id):
        is_checked_phone_number = True
    else:
        is_checked_phone_number = False
    user = user_service.get_user(user_id)
    is_favorited = False
    if user_service.get_favorite(user_data.get('id'), user.id) is not None:
        is_favorited = True
    return UserDTO(user,
                   is_checked_phone_number=is_checked_phone_number,
                   is_favorited=is_favorited), None
Example #23
0
def get_user(user_id):
    auth_service.check_permission(user_id)
    user = user_service.get_user(user_id)
    return UserDTO(user, is_checked_phone_number=True), None
Example #24
0
def unfavorite_lesson(lesson_id):
    user_data = auth_service.check_permission()
    lesson_service.remove_lesson_favorite(lesson_id, user_data.get('id'))
    return None, None
Example #25
0
def remove_lesson_bidding(lesson_id):
    user_data = auth_service.check_permission()
    lesson_service.remove_lesson_bidding(lesson_id, user_data.get('id'))
    return None, None
Example #26
0
def remove_lesson(lesson_id):
    user_data = auth_service.check_permission()
    lesson_service.delete_lesson(user_data.get('id'), lesson_id)
    return True, None
Example #27
0
def review_write_user(user_id):
    auth_service.check_permission(user_id)
    review_request = ReviewRequest(request_json=request.get_json())
    user = user_service.writeReview(user_id, review_request)
    return ReviewDTO(user_id, user), None
Example #28
0
def patch_user(user_id):
    auth_service.check_permission(user_id)
    patch_request = UserPatchRequest(request_json=request.get_json())
    user = user_service.patch_user(user_id, patch_request)
    return UserDTO(user, is_checked_phone_number=True), None