Ejemplo n.º 1
0
    def _write(self, *values):
        """
        Записать данные в приемник данных.
        @param values: Список записываемых значений
        @return: True/False.
        """
        if self.template_fmt is None:
            msg = u'Не указан шаблон для заполнения форматированного текстового файла.'
            log.warning(msg)
            journal.write_msg(msg)
            return False

        if self.output_fmt is None:
            msg = u'Не указан выходной файл для заполнения форматированного текстового файла.'
            log.warning(msg)
            journal.write_msg(msg)
            return False

        context = self.get_values_as_dict()
        template = txtgen.gen(self.template_fmt, context)
        output = txtgen.gen(self.output_fmt, context)

        # Заполняем шаблон переменными
        gen_result = txtgen.gen_txt_file(template, output, context)
        return gen_result
Ejemplo n.º 2
0
    def getSQLTxt(self, **kwargs):
        """
        Текст SQL запроса.
        @param kwargs: Параметры SQL запроса для генерации исполняемого текста
            SQL запроса.
        """
        # Необходимо заменить перевод кареток
        sql_txt = self._sql_txt.replace('\\n', UNIX_CR)

        # Сгенерировать запрос для последующего использования
        sql_txt = txtgen.gen(sql_txt, kwargs)

        return sql_txt
Ejemplo n.º 3
0
    def getSQLText(self, sql_query=None, variables=None):
        """
        Получить текст SQL запроса в зависимости от значения переменных.
        @param sql_query: Шаблон SQL запроса.
        @param variables: Словарь переменных.
        @return: Текст SQL запроса.
        """
        if sql_query is None:
            sql_query = self.sql_query
        if variables is None:
            variables = self.variables

        return txtgen.gen(sql_query, variables)
Ejemplo n.º 4
0
    def gen_correct_value(self, value, cur_state=None):
        """
        Генерация значения с учетом порядка блоков кодов и ссылок.
        @param value: Генерируемое значение.
        @param cur_state: Текущее состояние объекта.
        @return: Признак произведенной замены, Сгенерированное значение.
        """
        if cur_state is None:
            cur_state = dict([(name, getattr(self, name))
                              for name in self.values])

        if txtgen.is_genered(value):
            replace_names = txtgen.get_raplace_names(value)
            replaces = dict()
            for name in replace_names:
                if name not in cur_state:
                    log.error(
                        u'Переменная <%s> не определена в описании объекта <%s>'
                        % (name, self.name))
                    continue
                is_fill, replaces[name] = self.gen_correct_value(
                    cur_state[name], cur_state)
                log.debug(u'\tЗамена <%s> => <%s> => <%s>' %
                          (name, cur_state[name], replaces[name]))
            value = txtgen.gen(value, replaces)
            if self.parent.is_link(value):
                # Это просто ссылка без требования генерации
                value = self.parent.get_value_by_link(value)
            elif execfunc.is_code_python(value) or execfunc.is_code_func(
                    value):
                # Это просто блок кода без требования генерации
                value = execfunc.exec_code_block(value)
            return True, value
        elif self.parent.is_link(value) and not txtgen.is_genered(value):
            # Это просто ссылка без требования генерации
            return True, self.parent.get_value_by_link(value)
        elif (execfunc.is_code_python(value) or
              execfunc.is_code_func(value)) and not txtgen.is_genered(value):
            # Это просто блок кода без требования генерации
            return True, execfunc.exec_code_block(value)

        return False, value