Exemple #1
0
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
Exemple #2
0
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]
Exemple #3
0
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
        }