def get_all_participate(polling_name, question_number): try: return session.query(Question.peer_id).filter(Question.polling_name == polling_name)\ .filter(Question.question_number == str(question_number)).distinct() except Exception as e: session.rollback() logger.error("Failed to get questions, {}".format(e))
def get_question_answer(peer_id, question_number, polling_name): try: return session.query(Question.answer).filter(Question.polling_name == polling_name)\ .filter(Question.question_number == str(question_number)).filter(Question.peer_id == peer_id).first()[0] except Exception as e: session.rollback() logger.error("Failed to get questions, {}".format(e))
def get_polling_control(): try: control = session.query(PollingControl).one_or_none() return control.allowed except Exception as e: session.rollback() logger.error("Fail to get polling control, e:{}".format(e))
def get_all_questions(polling_name): try: return session.query(Question).filter(Question.polling_name == polling_name)\ .order_by(Question.peer_id, Question.question_number).all() except Exception as e: session.rollback() logger.error("Failed to get questions, {}".format(e))
def get_polling_name(polling_number): try: all_polling_names = session.query(PollingName).order_by( PollingName.time).all() return all_polling_names[polling_number].polling_name except Exception as e: session.rollback() logger.error("Failed get polling name, error:{}".format(e))
def get_question_number(last_polling_name): try: question_array = session.query(Question.question_number).filter(Question.polling_name == last_polling_name)\ .distinct() question_array = [int(item[0]) for item in question_array] return max(question_array) except Exception as e: session.rollback() logger.error("Failed to get questions, {}".format(e))
def update_allowed(): try: control = session.query(PollingControl).one_or_none() control.allowed = False session.commit() return control except Exception as e: session.rollback() logger.error("Faile to update polling controll, e:{}".format(e))
def get_last_polling_message(): try: all_polling_messages = session.query(PollingName).order_by( PollingName.time).all() if len(all_polling_messages) > 0: return all_polling_messages[-1].polling_message else: return None except Exception as e: session.rollback() logger.error("Failed to get polling message")
def add_or_update(allowed): try: control = session.query(PollingControl).one_or_none() if not control: polling_control = PollingControl(allowed=allowed) session.add(polling_control) session.commit() else: control.allowed = True session.commit() logger.info("Added a question answer.") return control except Exception as e: session.rollback() logger.error( "Failed to add question answer, error is {}".format(e))
def find_all(): return session.query(User).all()
def exists(peer_id): return session.query( session.query(User).filter( User.peer_id == peer_id).exists()).scalar()
def update_flag(): session.query(Question).filter( Question.answered_question_flag == 1).update( {Question.answered_question_flag: 0}) session.commit()
def number_of_answered_questions(peer_id, question_number): return session.query(Question.answered_question_flag)\ .filter(Question.answered_question_flag == 1).filter(Question.peer_id == peer_id).filter(Question.question_number == str(question_number - 1)).first()
def exists_answer(peer_id, question_number): return session.query( session.query(Question).filter(Question.peer_id == peer_id).filter( Question.question_number == str( question_number)).exists()).scalar()