Example #1
0
def get_board_by_id(board_id, request_user_id=None):
    try:
        q = db.session.query(Board, User).outerjoin(
            User, User.id == Board.user_id).filter(Board.id == board_id)
        return jsonify(data=SerializableModelMixin.serialize_row(q.one())), 200
    except:
        return jsonify(userMessage="게시물을 찾을 수 없습니다."), 404
Example #2
0
def create_comments(meal_date_id, request_user_id=None):
    request_params = request.get_json()
    content = request_params.get('content')
    request_params['mealDateId'] = meal_date_id
    request_params['userId'] = request_user_id

    if content is None:
        return jsonify(userMessage="내용을 입력해주세요."), 400

    if meal_date_id is None:
        return jsonify(userMessage="댓글을 작성할 식단날짜를 입력해주세요."), 400

    try:
        meal_date = db.session.query(MealDate).filter(
            MealDate.id == meal_date_id).one()
    except:
        return jsonify(userMessage="댓글 작성할 식단날짜를 잘못 선택하셨습니다.")

    if request_user_id is None:
        return jsonify(userMessage="유저 정보가 없습니다."), 400

    try:
        comment = Comment()
        comment = comment.update_data(**request_params)
        db.session.add(comment)
        db.session.commit()

        q = db.session.query(Comment, User) \
            .outerjoin(User, User.id == Comment.user_id) \
            .filter(Comment.id == comment.id)

        return jsonify(data=SerializableModelMixin.serialize_row(q.one())), 200
    except:
        return jsonify(
            userMessage="server deny your request, check param value"), 403
Example #3
0
def update_boards(board_id, request_user_id=None):
    try:
        q = db.session.query(Board, User).outerjoin(User, User.id == Board.user_id).filter(Board.id == board_id)
        if q is not None:
            (board, user) = q.one()
    except:
        return jsonify(
            userMessage="게시물을 찾을 수 없습니다."
        ), 404

    user = db.session.query(User).get(request_user_id)
    if user is None:
        return jsonify(
            userMessage="유저 정보를 찾을 수 없습니다."
        )

    if board.user_id != user.id:
        return jsonify(
            userMessage="본인만 수정할 수 있습니다."
        )

    request_params = request.get_json()

    board = board.update_data(**request_params)
    db.session.commit()

    return jsonify(
        data=SerializableModelMixin.serialize_row(q.one())
    )
Example #4
0
def create_boards(request_user_id=None):
    request_params = request.get_json()
    title = request_params.get('title')
    content = request_params.get('content')
    request_params['userId'] = request_user_id
    is_notice = request_params.get('isNotice')
    user = db.session.query(User).get(request_user_id)

    if title is None:
        return jsonify(userMessage="제목을 입력해주세요."), 400

    if content is None:
        return jsonify(userMessage="내용을 입력해주세요."), 400

    if is_notice == True:
        if user.is_admin == 0:
            return jsonify(userMessage="공지사항은 관리자만 작성할 수 있습니다.")

    try:
        board = Board()
        board = board.update_data(**request_params)

        db.session.add(board)
        db.session.commit()

        q = db.session.query(Board, User).outerjoin(
            User, User.id == Board.user_id).filter(Board.id == board.id)

        return jsonify(data=SerializableModelMixin.serialize_row(q.one())), 200
    except Exception as e:
        print e.message
        return jsonify(userMessage="오류가 발생했습니다. 관리자에게 문의해주세요."), 403
Example #5
0
def create_menus():
    request_params = request.get_json()
    name = request_params.get('name')
    category = request_params.get('category')

    # name이 제대로 입력이 안된 경우
    if name is None:
        return jsonify(userMessage="메뉴명을 기입해주세요."), 400

    # category가 제대로 입력이 안된 경우
    if category is None:
        return jsonify(userMessage="카테고리 정보를 기입해주세요."), 400

    # 이미 등록되어있는지 확인
    q = db.session.query(Menu).filter(Menu.name == name,
                                      Menu.category == category)
    if q.count() > 0:
        return jsonify(userMessage="이미 등록되어있는 메뉴입니다."), 409

    try:
        for key in request_params.keys():
            request_params[SerializableModelMixin.to_snakecase(
                key)] = request_params.pop(key)

        menu = Menu(**request_params)
        db.session.add(menu)
        db.session.commit()

        return jsonify(data=menu.serialize()), 200
    except:
        return jsonify(userMessage="오류가 발생했습니다. 관리자에게 문의해주세요."), 403
Example #6
0
def create_meal_dates():
    request_params = request.get_json()
    date = request_params.get('date').split('-')
    date_object = datetime.date(int(date[0]), int(date[1]), int(date[2]))
    meal_id = request_params.get('mealId')

    # date가 제대로 입력이 안된 경우
    if date is None:
        return jsonify(userMessage="날짜를 기입해주세요."), 400
    elif len(date) < 3:
        return jsonify(userMessage="날짜 형식이 잘못되었습니다. 날짜 입력을 다시 해주세요."), 400

    if meal_id is None:
        return jsonify(userMessage="식단 정보를 기입해주세요."), 400

    # 이미 등록되어있는지 확인
    q = db.session.query(MealDate).filter(MealDate.date == date_object,
                                          MealDate.meal_id == meal_id)
    if q.count() > 0:
        return jsonify(userMessage="이미 등록되어있는 식단 날짜입니다."), 409

    try:
        for key in request_params.keys():
            request_params[SerializableModelMixin.to_snakecase(
                key)] = request_params.pop(key)

        meal_date = MealDate(**request_params)
        db.session.add(meal_date)
        db.session.commit()

        return jsonify(data=meal_date.serialize()), 200
    except:
        return jsonify(userMessage="오류가 발생했습니다. 관리자에게 문의해주세요."), 403
Example #7
0
def get_comment_by_id(meal_date_id, comment_id, request_user_id=None):
    comment = db.session.query(Comment, User) \
        .outerjoin(User, User.id == Comment.user_id) \
        .filter(Comment.id == comment_id)

    if comment is None:
        return jsonify(userMessage="댓글을 찾을 수 없습니다."), 400

    return jsonify(
        data=SerializableModelMixin.serialize_row(comment.one())), 200
Example #8
0
def get_board_by_id(board_id, request_user_id=None):
    try:
        q = db.session.query(Board, User).outerjoin(User, User.id == Board.user_id).filter(Board.id == board_id)
        return jsonify(
            data=SerializableModelMixin.serialize_row(q.one())
        ), 200
    except:
        return jsonify(
            userMessage="게시물을 찾을 수 없습니다."
        ), 404
def get_menu_store_relation_by_id(menu_store_relation_id):
    try:
        q = db.session.query(MenuStoreRelation, Menu, Store) \
            .outerjoin(Menu, Menu.id == MenuStoreRelation.menu_id) \
            .outerjoin(Store, Store.id == MenuStoreRelation.store_id) \
            .filter(MenuStoreRelation.id == menu_store_relation_id)
        return jsonify(data=SerializableModelMixin.serialize_row(q.one())), 200

    except:
        return jsonify(userMessage="해당 관계를 찾을 수 없습니다."), 404
Example #10
0
def get_meal_date_by_id(meal_date_id):
    try:
        meal_date = db.session.query(MealDate, Meal) \
            .join(Meal, Meal.id == MealDate.meal_id) \
            .filter(MealDate.id == meal_date_id)
        return jsonify(
            data=SerializableModelMixin.serialize_row(meal_date.one())), 200

    except:
        return jsonify(userMessage="해당 식단 날짜를 찾을 수 없습니다."), 404
Example #11
0
def get_group_by_id(course_id, group_id):
    try:
        group = Group.get_query(filter_condition=(Group.id == group_id))
        return jsonify(
            data=SerializableModelMixin.serialize_row(group.one())
        ), 200

    except:
        return jsonify(
            userMessage="해당 반을 찾을 수 없습니다."
        ), 404
Example #12
0
def get_homework_by_id(group_id, homework_id):
    try:
        homework = Homework.get_query(filter_condition=(Homework.id == homework_id))
        return jsonify(
            data=SerializableModelMixin.serialize_row(homework.one())
        ), 200

    except:
        return jsonify(
            userMessage="해당 숙제를 찾을 수 없습니다."
        ), 404
Example #13
0
def get_answer_by_id(answer_id):
    try:
        answer = Answer.get_query(
            filter_condition=(Answer.id == answer_id))
        return jsonify(
            data=SerializableModelMixin.serialize_row(answer.one())
        ), 200

    except:
        return jsonify(
            userMessage="해당 답안을 찾을 수 없습니다."
        ), 404
def get_user_homework_relation_by_id(user_homework_relation_id):
    try:
        user_homework_relation = UserHomeworkRelation.get_query(
            filter_condition=(UserHomeworkRelation.id == user_homework_relation_id))
        return jsonify(
            data=SerializableModelMixin.serialize_row(user_homework_relation.one())
        ), 200

    except:
        return jsonify(
            userMessage="해당 관계를 찾을 수 없습니다."
        ), 404
Example #15
0
def get_comment_by_id(meal_date_id, comment_id, request_user_id=None):
    comment = db.session.query(Comment, User) \
        .outerjoin(User, User.id == Comment.user_id) \
        .filter(Comment.id == comment_id)

    if comment is None:
        return jsonify(
            userMessage="댓글을 찾을 수 없습니다."
        ), 400

    return jsonify(
        data=SerializableModelMixin.serialize_row(comment.one())
    ), 200
Example #16
0
def get_store_comment_by_id(store_id, store_comment_id, request_user_id=None):
    store_comment = db.session.query(StoreComment, User) \
        .outerjoin(User, User.id == StoreComment.user_id) \
        .filter(StoreComment.id == store_comment_id)

    if store_comment is None:
        return jsonify(
            userMessage="댓글을 찾을 수 없습니다."
        ), 400

    return jsonify(
        data=SerializableModelMixin.serialize_row(store_comment.one())
    ), 200
Example #17
0
def get_meal_date_by_id(meal_date_id):
    try:
        meal_date = db.session.query(MealDate, Meal) \
            .join(Meal, Meal.id == MealDate.meal_id) \
            .filter(MealDate.id == meal_date_id)
        return jsonify(
            data=SerializableModelMixin.serialize_row(meal_date.one())
        ), 200

    except:
        return jsonify(
            userMessage="해당 식단 날짜를 찾을 수 없습니다."
        ), 404
Example #18
0
def create_meals():
    """
    ms
    :param request_user_id:
    :return:
    """
    request_params = request.get_json()
    day = request_params.get('day')
    time = request_params.get('time')
    category = request_params.get('category')

    # day가 제대로 입력이 안된 경우
    if day is None:
        return jsonify(
            userMessage="요일 정보를 기입해주세요."
        ), 400

    # time이 제대로 입력이 안된 경우
    if time is None:
        return jsonify(
            userMessage="시간 정보를 기입해주세요."
        ), 400

    # category가 제대로 입력이 안된 경우
    if category is None:
        return jsonify(
            userMessage="카테고리 정보를 기입해주세요."
        ), 400

    # 이미 등록되어있는지 확인
    q = db.session.query(Meal).filter(Meal.day == day, Meal.time == time, Meal.category == category)
    if q.count() > 0:
        return jsonify(
            userMessage="이미 기입되어 있는 내용입니다."
        ), 409

    try:
        for key in request_params.keys():
            request_params[SerializableModelMixin.to_snakecase(key)] = request_params.pop(key)

        meal = Meal(**request_params)
        db.session.add(meal)
        db.session.commit()

        return jsonify(
            data=meal.serialize()
        ), 200
    except:
        return jsonify(
            userMessage="오류가 발생했습니다. 관리자에게 문의해주세요."
        ), 403
def get_menu_date_relation_by_id(menu_date_relation_id):
    try:
        q = db.session.query(MenuDateRelation, Menu, MealDate) \
            .outerjoin(Menu, Menu.id == MenuDateRelation.menu_id) \
            .outerjoin(MealDate, MealDate.id == MenuDateRelation.meal_date_id) \
            .filter(MenuDateRelation.id == menu_date_relation_id)
        return jsonify(
            data=SerializableModelMixin.serialize_row(q.one())
        ), 200

    except:
        return jsonify(
            userMessage="해당 관계를 찾을 수 없습니다."
        ), 404
Example #20
0
def get_homeworks(group_id=0):
    if group_id != 0:
        filter_condition = (Homework.group_id == group_id)
    else:
        filter_condition = None

    q = Homework.get_query(filter_condition=filter_condition)

    # start date end date 처리
    if request.args.get('date1') is None:
        date1 = datetime.date.today()
        print request.args.get('date')
    else:
        date1 = datetime.datetime.strptime(request.args.get('date1'), "%Y-%m-%d")
        print request.args.get('date1')

    if request.args.get('date2') is None:
        date2 = datetime.date.today()
        print request.args.get('date')
    else:
        date2 = datetime.datetime.strptime(request.args.get('date2'), "%Y-%m-%d")
        print request.args.get('date2')

    homeworks = q.filter(Homework.date.between(date1, date2)).order_by(Homework.id)

    prev_date = None
    return_object = {}
    for row in homeworks:
        # homework, group, course를 dictionary화 하기
        (homework, group, course) = row
        if prev_date != homework.date:
            return_object[str(homework.date)] = []
            prev_date = homework.date
        homework_object = SerializableModelMixin.serialize_row(row)

        # 위에서 생성된 dictionary에 user 정보 추가해서 보내주기
        user_homework_relations = db.session.query(UserHomeworkRelation).filter(
            UserHomeworkRelation.homework_id == homework.id)
        total_user_number = user_homework_relations.count()
        is_submitted_number = user_homework_relations.filter(UserHomeworkRelation.is_submitted == True).count()

        homework_object['users'] = {'isSubmitted': is_submitted_number, 'count': total_user_number}
        return_object[str(homework.date)].append(homework_object)

    return jsonify(
        data=return_object
    ), 200
Example #21
0
def create_comments(meal_date_id, request_user_id=None):
    request_params = request.get_json()
    content = request_params.get('content')
    request_params['mealDateId'] = meal_date_id
    request_params['userId'] = request_user_id

    if content is None:
        return jsonify(
            userMessage="내용을 입력해주세요."
        ), 400

    if meal_date_id is None:
        return jsonify(
            userMessage="댓글을 작성할 식단날짜를 입력해주세요."
        ), 400

    try:
        meal_date = db.session.query(MealDate).filter(MealDate.id == meal_date_id).one()
    except:
        return jsonify(
            userMessage="댓글 작성할 식단날짜를 잘못 선택하셨습니다."
        )

    if request_user_id is None:
        return jsonify(
            userMessage="유저 정보가 없습니다."
        ), 400

    try:
        comment = Comment()
        comment = comment.update_data(**request_params)
        db.session.add(comment)
        db.session.commit()

        q = db.session.query(Comment, User) \
            .outerjoin(User, User.id == Comment.user_id) \
            .filter(Comment.id == comment.id)

        return jsonify(
            data=SerializableModelMixin.serialize_row(q.one())
        ), 200
    except:
        return jsonify(
            userMessage="server deny your request, check param value"
        ), 403
Example #22
0
def create_stores():
    """
    ms
    :param request_user_id:
    :return:
    """
    request_params = request.get_json()
    name = request_params.get('name')
    category = request_params.get('category')

    # day가 제대로 입력이 안된 경우
    if name is None:
        return jsonify(
            userMessage="가게 이름을 기입해주세요."
        ), 400

    # category가 제대로 입력이 안된 경우
    if category is None:
        return jsonify(
            userMessage="카테고리 정보를 기입해주세요."
        ), 400

    # 이미 등록되어있는지 확인
    q = db.session.query(Store).filter(Store.name == name, Store.category == category)
    if q.count() > 0:
        return jsonify(
            userMessage="이미 기입되어 있는 내용입니다."
        ), 409

    try:
        for key in request_params.keys():
            request_params[SerializableModelMixin.to_snakecase(key)] = request_params.pop(key)

        store = Store(**request_params)
        db.session.add(store)
        db.session.commit()

        return jsonify(
            data=store.serialize()
        ), 200
    except:
        return jsonify(
            userMessage="오류가 발생했습니다. 관리자에게 문의해주세요."
        ), 403
Example #23
0
def get_answers():
    if request.args.get('userId') is not None:
        user_id = int(request.args.get('userId'))
    else:
        user_id = 0

    if request.args.get('homeworkId'):
        homework_id = int(request.args.get('homeworkId'))
        problems = db.session.query(Problem).filter(Problem.homework_id == homework_id).order_by(Problem.id)
    else:
        homework_id = 0
        problems = db.session.query(Problem).order_by(Problem.id)

    if user_id >= 1 and homework_id >= 1:
        filter_condition = (Answer.user_id == user_id, Problem.homework_id == homework_id)

    elif user_id >= 1 >= homework_id:
        filter_condition = (Answer.user_id == user_id)
    elif homework_id >= 1 >= user_id:
        filter_condition = (Problem.homework_id == homework_id)
    else:
        filter_condition = None

    answers = Answer.get_query(filter_condition=filter_condition).order_by(Answer.user_id, Answer.problem_id)

    prev_user_id = None
    return_object = {}
    for row in answers:
        print "a"
        (answer, user, problem, homework) = row
        if prev_user_id != user.id:
            return_object[user.name] = []
            prev_user_id = user.id
            print "b"
        return_object[user.name].append(SerializableModelMixin.serialize_row(row))

    # 문제 목록 쫙 호출하기
    return_object['problems'] = map(lambda x: x.serialize(), problems)

    return jsonify(
        # data=map(SerializableModelMixin.serialize_row, answer)
        data=return_object
    ), 200
Example #24
0
def create_meal_dates():
    request_params = request.get_json()
    date = request_params.get('date').split('-')
    date_object = datetime.date(int(date[0]), int(date[1]), int(date[2]))
    meal_id = request_params.get('mealId')

    # date가 제대로 입력이 안된 경우
    if date is None:
        return jsonify(
            userMessage="날짜를 기입해주세요."
        ), 400
    elif len(date) < 3:
        return jsonify(
            userMessage="날짜 형식이 잘못되었습니다. 날짜 입력을 다시 해주세요."
        ), 400

    if meal_id is None:
        return jsonify(
            userMessage="식단 정보를 기입해주세요."
        ), 400

    # 이미 등록되어있는지 확인
    q = db.session.query(MealDate).filter(MealDate.date == date_object, MealDate.meal_id == meal_id)
    if q.count() > 0:
        return jsonify(
            userMessage="이미 등록되어있는 식단 날짜입니다."
        ), 409

    try:
        for key in request_params.keys():
            request_params[SerializableModelMixin.to_snakecase(key)] = request_params.pop(key)

        meal_date = MealDate(**request_params)
        db.session.add(meal_date)
        db.session.commit()

        return jsonify(
            data=meal_date.serialize()
        ), 200
    except:
        return jsonify(
            userMessage="오류가 발생했습니다. 관리자에게 문의해주세요."
        ), 403
Example #25
0
def create_meals():
    """
    ms
    :param request_user_id:
    :return:
    """
    request_params = request.get_json()
    day = request_params.get('day')
    time = request_params.get('time')
    category = request_params.get('category')

    # day가 제대로 입력이 안된 경우
    if day is None:
        return jsonify(userMessage="요일 정보를 기입해주세요."), 400

    # time이 제대로 입력이 안된 경우
    if time is None:
        return jsonify(userMessage="시간 정보를 기입해주세요."), 400

    # category가 제대로 입력이 안된 경우
    if category is None:
        return jsonify(userMessage="카테고리 정보를 기입해주세요."), 400

    # 이미 등록되어있는지 확인
    q = db.session.query(Meal).filter(Meal.day == day, Meal.time == time,
                                      Meal.category == category)
    if q.count() > 0:
        return jsonify(userMessage="이미 기입되어 있는 내용입니다."), 409

    try:
        for key in request_params.keys():
            request_params[SerializableModelMixin.to_snakecase(
                key)] = request_params.pop(key)

        meal = Meal(**request_params)
        db.session.add(meal)
        db.session.commit()

        return jsonify(data=meal.serialize()), 200
    except:
        return jsonify(userMessage="오류가 발생했습니다. 관리자에게 문의해주세요."), 403
Example #26
0
def create_boards(request_user_id=None):
    request_params = request.get_json()
    title = request_params.get('title')
    content = request_params.get('content')
    request_params['userId'] = request_user_id
    is_notice = request_params.get('isNotice')
    user = db.session.query(User).get(request_user_id)

    if title is None:
        return jsonify(
            userMessage="제목을 입력해주세요."
        ), 400

    if content is None:
        return jsonify(
            userMessage="내용을 입력해주세요."
        ), 400

    if is_notice == True:
        if user.is_admin == 0:
            return jsonify(
                userMessage="공지사항은 관리자만 작성할 수 있습니다."
            )

    try:
        board = Board()
        board = board.update_data(**request_params)

        db.session.add(board)
        db.session.commit()

        q = db.session.query(Board, User).outerjoin(User, User.id == Board.user_id).filter(Board.id == board.id)

        return jsonify(
            data=SerializableModelMixin.serialize_row(q.one())
        ), 200
    except Exception as e:
        print e.message
        return jsonify(
            userMessage="오류가 발생했습니다. 관리자에게 문의해주세요."
        ), 403
Example #27
0
def update_boards(board_id, request_user_id=None):
    try:
        q = db.session.query(Board, User).outerjoin(
            User, User.id == Board.user_id).filter(Board.id == board_id)
        if q is not None:
            (board, user) = q.one()
    except:
        return jsonify(userMessage="게시물을 찾을 수 없습니다."), 404

    user = db.session.query(User).get(request_user_id)
    if user is None:
        return jsonify(userMessage="유저 정보를 찾을 수 없습니다.")

    if board.user_id != user.id:
        return jsonify(userMessage="본인만 수정할 수 있습니다.")

    request_params = request.get_json()

    board = board.update_data(**request_params)
    db.session.commit()

    return jsonify(data=SerializableModelMixin.serialize_row(q.one()))
Example #28
0
def create_menus():
    request_params = request.get_json()
    name = request_params.get('name')
    category = request_params.get('category')

    # name이 제대로 입력이 안된 경우
    if name is None:
        return jsonify(
            userMessage="메뉴명을 기입해주세요."
        ), 400

    # category가 제대로 입력이 안된 경우
    if category is None:
        return jsonify(
            userMessage="카테고리 정보를 기입해주세요."
        ), 400

    # 이미 등록되어있는지 확인
    q = db.session.query(Menu).filter(Menu.name == name, Menu.category == category)
    if q.count() > 0:
        return jsonify(
            userMessage="이미 등록되어있는 메뉴입니다."
        ), 409

    try:
        for key in request_params.keys():
            request_params[SerializableModelMixin.to_snakecase(key)] = request_params.pop(key)

        menu = Menu(**request_params)
        db.session.add(menu)
        db.session.commit()

        return jsonify(
            data=menu.serialize()
        ), 200
    except:
        return jsonify(
            userMessage="오류가 발생했습니다. 관리자에게 문의해주세요."
        ), 403
Example #29
0
def create_stores():
    """
    ms
    :param request_user_id:
    :return:
    """
    request_params = request.get_json()
    name = request_params.get('name')
    category = request_params.get('category')

    # day가 제대로 입력이 안된 경우
    if name is None:
        return jsonify(userMessage="가게 이름을 기입해주세요."), 400

    # category가 제대로 입력이 안된 경우
    if category is None:
        return jsonify(userMessage="카테고리 정보를 기입해주세요."), 400

    # 이미 등록되어있는지 확인
    q = db.session.query(Store).filter(Store.name == name,
                                       Store.category == category)
    if q.count() > 0:
        return jsonify(userMessage="이미 기입되어 있는 내용입니다."), 409

    try:
        for key in request_params.keys():
            request_params[SerializableModelMixin.to_snakecase(
                key)] = request_params.pop(key)

        store = Store(**request_params)
        db.session.add(store)
        db.session.commit()

        return jsonify(data=store.serialize()), 200
    except:
        return jsonify(userMessage="오류가 발생했습니다. 관리자에게 문의해주세요."), 403
Example #30
0
def get_problem_by_id(homework_id, problem_id):
    # try:
    q = Problem.get_query(filter_condition=(Problem.id == problem_id))
    return jsonify(
        data=SerializableModelMixin.serialize_row(q)
    ), 200