Пример #1
0
 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)
Пример #2
0
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)
Пример #3
0
    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()
Пример #4
0
 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)
Пример #5
0
    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()
Пример #6
0
    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()
Пример #7
0
    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()
Пример #8
0
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)