def __get_text_for_justification_or_reaction_bubble( stmt_or_arg: Union[Statement, Argument], is_supportive, db_user, step, history, _tn): """ Returns text for an justification or reaction bubble of the user :param stmt_or_arg: Argument.uid / Statement.uid :param is_supportive: Boolean :param db_user: User :param step: String :param history: String :param _tn: Translator :return: String """ if isinstance(stmt_or_arg, Argument): splitted_history = get_splitted_history(history) bubbles = get_bubble_from_reaction_step(step, db_user, _tn.get_lang(), splitted_history, '', color_steps=True) text = bubbles[0]['message'] if bubbles else '' else: text, tmp = get_user_bubble_text_for_justify_statement( stmt_or_arg.uid, db_user, is_supportive, _tn) text = pretty_print_options(text) return text
def __get_bubble_from_justify_statement_step(step: str, db_user: User, lang: str, url: str) -> List[dict]: """ Creates bubbles for the justify-keyword for an statement. :param step: String :param db_user: User :param lang: ui_locales :param url: String :return: [dict()] """ steps = step.split('/') uid = int(steps[1]) is_supportive = steps[2] == Attitudes.AGREE.value or steps[ 2] == Attitudes.DONT_KNOW.value _tn = Translator(lang) msg, tmp = get_user_bubble_text_for_justify_statement( uid, db_user, is_supportive, _tn) bubble_user = create_speechbubble_dict(BubbleTypes.USER, bubble_url=url, content=msg, omit_bubble_url=False, statement_uid=uid, is_supportive=is_supportive, db_user=db_user, lang=lang) return [bubble_user]
def __get_bubble_from_justify_statement_step(step, db_user, lang, url): """ Creates bubbles for the justify-keyword for an statement. :param step: String :param db_user: User :param lang: ui_locales :param url: String :return: [dict()] """ logger('history_handler', 'def') steps = step.split('/') uid = int(steps[1]) is_supportive = steps[2] == Attitudes.AGREE or steps[2] == Attitudes.DONT_KNOW _tn = Translator(lang) msg, tmp = get_user_bubble_text_for_justify_statement(uid, db_user, is_supportive, _tn) bubble_user = create_speechbubble_dict(BubbleTypes.USER, content=msg, omit_bubble_url=False, statement_uid=uid, is_supportive=is_supportive, nickname=db_user.nickname, lang=lang, bubble_url=url) return [bubble_user]
def get_dict_for_justify_statement(self, db_statement: Statement, slug, is_supportive, count_of_items, db_user: User): """ Prepares the discussion dict with all bubbles for the third step in discussion, where the user justifies his position. :param db_statement: Statement :param db_user: User :param slug: Issue.slug :param is_supportive: Boolean :param count_of_items: Integer :return: dict() """ LOG.debug("Entering get_dict_for_justify_statement") _tn = Translator(self.lang) bubbles_array = history_handler.create_bubbles(self.history, self.nickname, self.lang, self.slug) save_statement_url = 'set_new_start_statement' text = db_statement.get_text() if not text: return None tag_start = '<{} data-argumentation-type="position">'.format(tag_type) tag_end = '</{}>'.format(tag_type) # system bubble system_question = get_system_bubble_text_for_justify_statement( is_supportive, _tn, tag_start, text, tag_end) # user bubble nickname = db_user.nickname if db_user and db_user.nickname != nick_of_anonymous_user else None user_text, add_premise_text = get_user_bubble_text_for_justify_statement( db_statement.uid, db_user, is_supportive, _tn) question_bubble = create_speechbubble_dict(BubbleTypes.SYSTEM, content=system_question, omit_bubble_url=True, lang=self.lang) url = UrlManager(slug).get_url_for_statement_attitude(db_statement.uid) select_bubble = create_speechbubble_dict( BubbleTypes.USER, bubble_url=url, content=user_text, omit_bubble_url=False, statement_uid=db_statement.uid, is_supportive=is_supportive, db_user=db_user, lang=self.lang) if not bubbles_already_last_in_list(bubbles_array, select_bubble): bubbles_array.append(select_bubble) self.__append_now_bubble(bubbles_array) if not bubbles_already_last_in_list(bubbles_array, question_bubble): bubbles_array.append(question_bubble) if not self.nickname and count_of_items == 1: _t = Translator(self.lang) db_user = DBDiscussionSession.query(User).filter_by( nickname=nickname).first() msg_dict = { 'm': _.voteCountTextFirstM, 'f': _.voteCountTextFirstF, 'n': _.voteCountTextFirst, } if db_user: msg = msg_dict[db_user.gender] else: msg = _.voteCountTextFirst msg = _t.get(msg) + '.' bubbles_array.append( create_speechbubble_dict(BubbleTypes.INFO, uid='now_first', content=msg + _tn.get(_.onlyOneItemWithLink), omit_bubble_url=True, lang=self.lang)) return { 'bubbles': bubbles_array, 'add_premise_text': add_premise_text, 'save_statement_url': save_statement_url, 'mode': '', 'is_supportive': is_supportive, 'broke_limit': self.broke_limit }