def set_answer_value(answer_id: str, answer_value: int, is_test, session) -> ReviewAnswer:
    session = get_db_session(is_test, session)
    answer = ReviewAnswer()
    answer = session.get(ReviewAnswer, answer_id)
    answer.answer = answer_value
    session.merge(answer)
    session.commit()
    return answer
Пример #2
0
def generate_answer(answer,
                    review_id=None,
                    review_question_id=None) -> ReviewAnswer:
    review_answer = ReviewAnswer()
    review_answer.answer = answer
    review_answer.review_id = review_id
    review_answer.review_question_id = review_question_id

    return review_answer
def get_parent_answer(answer_id, is_test, session) -> ReviewAnswer:
    """Gets the answer object corresponding to the parent question of the given answer

    Args:
        answer_id (str): The answer id
        is_test (bool): Whether the function is run in test mode
        session ([type]): A session

    Returns:
        ReviewAnswer: The answer of the parent question of the given answer in the same review
    """
    session = get_db_session(is_test, session)
    answer = ReviewAnswer()
    answer = session.get(ReviewAnswer, answer_id)
    parent_answer = session.query(ReviewAnswer).filter(ReviewAnswer.review_question_id ==
                                                       answer.review_question.parent_question_id, ReviewAnswer.review_id == answer.review_id).one()
    return parent_answer
Пример #4
0
def get_parent_answer(answer_id, session) -> ReviewAnswer:
    """Gets the answer object corresponding to the parent question of the given answer

    Args:
        answer_id (str): The answer id
        session ([type]): A session

    Returns:
        ReviewAnswer: The answer of the parent question of the given answer in the same review
    """

    answer = ReviewAnswer()
    answer = session.get(ReviewAnswer, answer_id)
    parent_answer = session.query(ReviewAnswer).filter(
        ReviewAnswer.review_question_id ==
        answer.review_question.parent_question_id,
        ReviewAnswer.review_id == answer.review_id).one()
    return parent_answer
def test_item_model_to_dict_with_reviews(item_id, review_id, review_answer_id,
                                         user_id, comment_id):
    with Session() as session:
        item = Item(id=item_id)
        review = Review(id=review_id, item_id=item_id, user_id=user_id)
        review_question = ReviewQuestion(id='Question1')
        review_answer = ReviewAnswer(id=review_answer_id,
                                     review_id=review_id,
                                     review_question_id=review_question.id)
        user = User(id=user_id, name='testuser')
        level = Level(id=1, description='beginner')
        comment = Comment(id=comment_id,
                          comment='testcomment',
                          is_review_comment=True,
                          user_id=user_id,
                          review_id=review_id)
        session.add_all([
            item, review, review_question, review_answer, user, level, comment
        ])
        session.commit()

        assert len(item.reviews) == 1
        assert item.reviews[0].id == review_id

        item_dict = item.to_dict(with_reviews=True, with_comments=True)
        assert item_dict['reviews']
        assert len(item_dict['reviews']) == 1
        assert item_dict['reviews'][0]['id'] == review_id
        assert item_dict['reviews'][0]['user'] == user.name
        assert len(item_dict['reviews'][0]['questions']) == 1
        assert 'review_comments' in item_dict
        assert len(item_dict['review_comments']) == 1
        assert item_dict['review_comments'][0]['comment'] == 'testcomment'
        assert item_dict['review_comments'][0]['user'] == user.name
        assert len(item_dict['users']) == 1
        assert item_dict['users'][0]['username'] == 'testuser'
        assert item_dict['users'][0]['level_description'] == 'beginner'

        session.delete(user)
        session.expire_all()
        item_dict = item.to_dict(with_reviews=True, with_comments=True)
        assert item_dict['review_comments'][0]['user'] == None
        assert item_dict['reviews'][0]['user'] == None
def generate_review_answer(answer, review_id, review_question_id):
    return ReviewAnswer(id=str(uuid4()), review_id=review_id, review_question_id=review_question_id, answer=answer, comment='Test Review Answer')
Пример #7
0
def create_answers_for_review(review: Review, is_test, session):
    partner_review = get_partner_review(review, is_test, session)
    if partner_review != None:
        for partner_answer in partner_review.review_answers:
            if partner_answer.review_question is not None:
                answer = ReviewAnswer()
                answer.id = str(uuid4())
                answer.review_question = partner_answer.review_question
                answer.review = review
                session.add(answer)
    else:
        item_type_id = review.item.item_type_id
        questions = review_question_handler.get_all_parent_questions(
            item_type_id, is_test, session)
        random.shuffle(questions)
        for question in questions[:6]:
            answer = ReviewAnswer()
            answer.id = str(uuid4())
            answer.review_question = question
            answer.review = review
            session.add(answer)
            if question.max_children > 0:
                child_questions = review_question_handler.get_all_child_questions(
                    question.id, True, session)
                for child_question in child_questions:
                    answer = ReviewAnswer()
                    answer.id = str(uuid4())
                    answer.review_question = child_question
                    answer.review = review
                    session.add(answer)

    session.commit()
    session.refresh(review)
    return review