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
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
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)
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