def OnPageSetupButton(self, event): """ Обработчик нажатия кнопки 'Параметры страницы'. """ # Определить выбранный пункт дерева item = self.rep_tree.GetSelection() item_data = self.rep_tree.GetPyData(item) # Если это файл отчета, то получить его if item_data is not None and item_data[REP_ITEMS_IDX] is None: # Получение отчета report_generator.getReportGeneratorSystem( item_data[REP_FILE_IDX], ParentForm_=self).PageSetup() # Если это папка, то вывести сообщение else: dlg.getMsgBox(u'Необходимо выбрать отчет!', parent=self)
def doReport(parent_form=None, report_filename='', report_dir='', db_url='', sql='', command=None, stylelib_filename=None, variables=None): """ Функция запускает генератор отчетов. @param parent_form: Родительская форма, если не указана, то создается новое приложение. @param report_filename: Файл отчета. @param report_dir: Директорий, где хранятся отчеты. @param db_url: Connection string в виде url. Например postgresql+psycopg2://postgres:[email protected]:5432/realization. @param sql: Запрос SQL. @param command: Комманда после генерации. print/preview/export. @param stylelib_filename: Файл библиотеки стилей. @param variables: Словарь переменных для заполнения отчета. @return: Возвращает результат выполнения операции True/False. """ try: app = None if parent_form is None: app = wx.PySimpleApp() if not report_filename: return ReportViewer(parent_form, report_dir) else: # Если определен отчет, то запустить на выполнение repgen_system = report_generator.getReportGeneratorSystem( report_filename, parent_form) stylelib = loadStyleLib(stylelib_filename) data = repgen_system.generate( res.loadResourceFile(report_filename), db_url, sql, stylelib=stylelib, vars=variables) if command: command = command.lower() if command == DO_COMMAND_PRINT: repgen_system.PrintResult(data) elif command == DO_COMMAND_PREVIEW: repgen_system.PreviewResult(data) elif command == DO_COMMAND_EXPORT: repgen_system.ConvertResult(data) elif command == DO_COMMAND_SELECT: repgen_system.doSelectAction(data) else: log.warning(u'Not define command Report System <%s>' % command) else: repgen_system.save(data) return True except: log.fatal(u'Do report <%s>' % report_filename)
def OnModuleRepButton(self, event): """ Обработчик нажатия кнопки 'Модуль отчета'. """ # Определить выбранный пункт дерева item = self.rep_tree.GetSelection() item_data = self.rep_tree.GetPyData(item) # Если это файл отчета, то запустить открытие модуля отчета if item_data is not None and item_data[REP_ITEMS_IDX] is None: report_generator.getReportGeneratorSystem( item_data[REP_FILE_IDX], ParentForm_=self).OpenModule(item_data[REP_FILE_IDX]) else: dlg.getMsgBox(u'Необходимо выбрать отчет!', parent=self) event.Skip()
def OnPreviewRepButton(self, event): """ Обработчик нажатия кнопки 'Предварительный просмотр/Печать'. """ # Определить выбранный пункт дерева item = self.rep_tree.GetSelection() item_data = self.rep_tree.GetPyData(item) log.debug(u'Preview <%s>' % item_data[REP_FILE_IDX]) # Если это файл отчета, то получить его if item_data is not None and item_data[REP_ITEMS_IDX] is None: # Получение отчета report_generator.getReportGeneratorSystem(item_data[REP_FILE_IDX], ParentForm_=self, bRefresh=True).Preview() # Если это папка, то вывести сообщение else: dlg.getMsgBox(u'Необходимо выбрать отчет!', parent=self)
def OnConvertRepButton(self, event): """ Обработчик нажатия кнопки 'Конвертация'. """ # Определить выбранный пункт дерева item = self.rep_tree.GetSelection() item_data = self.rep_tree.GetPyData(item) log.debug(u'Convert <%s>' % item_data[REP_FILE_IDX]) # Если это файл отчета, то получить его if item_data is not None and item_data[REP_ITEMS_IDX] is None: # Получение отчета report_generator.getReportGeneratorSystem(item_data[REP_FILE_IDX], ParentForm_=self, bRefresh=True).Convert() else: dlg.getMsgBox(u'Необходимо выбрать отчет!', parent=self) event.Skip()
def OnUpdateRepButton(self, event): """ Обработчик нажатия кнопки 'Обновление отчета'. """ # Определить выбранный пункт дерева item = self.rep_tree.GetSelection() item_data = self.rep_tree.GetPyData(item) # Если это файл отчета, то запустить обновление шаблона if item_data is not None and item_data[REP_ITEMS_IDX] is None: # Запустить обновление шаблона отчета log.debug('Update <%s> report' % item_data[0]) report_generator.getReportGeneratorSystem(item_data[REP_FILE_IDX], ParentForm_=self).Update( item_data[0]) else: report_generator.getCurReportGeneratorSystem(self).Update() # Заполнить дерево отчетов self._fillReportTree(self._ReportDir) event.Skip()
def OnEditRepButton(self, event): """ Обработчик нажатия ккнопки 'Редактирование отчета'. """ # Определить выбранный пункт дерева item = self.rep_tree.GetSelection() item_data = self.rep_tree.GetPyData(item) # Если это файл отчета, то запустить на редактирование if item_data is not None and item_data[REP_ITEMS_IDX] is None: # Запустить на редактирование rep_generator = report_generator.getReportGeneratorSystem( item_data[REP_FILE_IDX], ParentForm_=self) if rep_generator is not None: rep_generator.Edit(item_data[0]) else: log.warning('Not defaine Report Generator. Type <%s>' % item_data[REP_FILE_IDX]) event.Skip()
def ReportSelect(parent_form=None, report_filename='', report_dir='', db_url=None, sql=None, command=None, stylelib_filename=None, variables=None): """ Функция запускает генератор отчетов с последующим выбором действия. @param parent_form: Родительская форма, если не указана, то создается новое приложение. @param report_filename: Файл отчета. @param report_dir: Директорий, где хранятся отчеты. @param db_url: Connection string в виде url. Например postgresql+psycopg2://postgres:[email protected]:5432/realization. @param sql: Запрос SQL. @param command: Комманда после генерации. print/preview/export. @param stylelib_filename: Файл библиотеки стилей. @param variables: Словарь переменных для заполнения отчета. @return: Возвращает результат выполнения операции True/False. """ report_filename = getReportResourceFilename(report_filename, report_dir) try: if not report_filename: return ReportViewer(parent_form, report_dir) else: stylelib = loadStyleLib(stylelib_filename) # Если определен отчет, то запустить на выполнение repgen_system = report_generator.getReportGeneratorSystem( report_filename, parent_form) return repgen_system.selectAction( res.loadResourceFile(report_filename), stylelib=stylelib, variables=variables) return False except: log.fatal(u'Report export <%s>' % report_filename)