Пример #1
0
 def onOkButtonClick(self, event):
     """
     Обработчик кнопки <OK>.
     """
     log.debug(u'Отредактированная запись <%s>' % self.getEditRecord())
     self.EndModal(wx.ID_OK)
     event.Skip()
Пример #2
0
 def onSearchText(self, event):
     """
     Обработчик изменения строки поиска.
     """
     search_txt = event.GetString()
     log.debug(u'Change search text <%s>' % search_txt)
     self.not_actual_search = True
     event.Skip()
Пример #3
0
    def set_default_data(self):
        """
        Установить данные справочника по умолчанию.
        Данные беруться из таблицы справочника БАЛАНС+.
        """
        log.info(u'Start set_default_data')
        if not os.path.exists(SPRAV_DBF_FILENAME):
            log.warning(
                u'Отсутствует файл <%s> для импорта данных справочника типов документов'
                % SPRAV_DBF_FILENAME)
            return

        tab = self.get_object()
        # Очистить таблицу
        tab.clear()

        dbf_tab = None
        try:
            dbf_tab = dbf.icDBFFile()
            dbf_tab.Open(SPRAV_DBF_FILENAME)
            record = dbf_tab.getRecDict()
            while not dbf_tab.EOF():
                if int(record['TYP']) in SPRAV_TYPE_CODES:
                    typ = ic_str.limit_len_text(record['TYP'], 3, '0')
                    if record['COD'].strip():
                        cod = unicode(record['COD'].strip(),
                                      DBF_DEFAULT_ENCODE)
                        cod = ic_str.limit_len_text(ic_str.rus2lat(cod), 10,
                                                    '0')
                    else:
                        cod = u''
                    name = unicode(record['NAM'], DBF_DEFAULT_ENCODE)
                    try:
                        log.debug('NSI [%s : %s : %s]' % (typ, cod, name))
                    except UnicodeDecodeError:
                        log.debug('NSI [%s : %s]' % (typ, cod))

                    new_cod = typ + cod
                    # Удаление на случай двойного описания
                    # одного и того же в DBF файле
                    tab.del_where(tab.c.cod == new_cod)
                    new_rec = dict(type='NSITst', cod=new_cod, name=name)
                    tab.add(**new_rec)

                dbf_tab.Next()
                record = dbf_tab.getRecDict()
            dbf_tab.Close()
            dbf_tab = None
        except:
            if dbf_tab:
                dbf_tab.Close()
                dbf_tab = None
            log.fatal(
                u'Ошибка импорта данных справочника типов документов БАЛАНС+')
Пример #4
0
def setKLADRData(sprav_manager, is_progress=False):
    """
    Основная функция заполнения.
    @param sprav_manager: Менеджер справочников.
    """
    log.debug('Set default data. Sprav manager <%s>' % sprav_manager)
    log.debug('KLADR dbf file name <%s>' % DEFAULT_KLADR_DBF_FILENAME)

    if not os.path.exists(DEFAULT_KLADR_DBF_FILENAME):
        log.warnnig('KLADR DBF file <%s> not found' %
                    DEFAULT_KLADR_DBF_FILENAME)
        return

    if sprav_manager:

        if is_progress:
            ic_dlg.icOpenProgressDlg(wx.GetApp().GetTopWindow(),
                                     u'Загрузка данных KLADR',
                                     u'Загрузка данных о населенных пунктах',
                                     0, 100)
        else:
            log.debug('Start set KLADR data')

        try:
            sprav = sprav_manager.getSpravByName('nas_punkts')
            # Сначала очистить справочник
            sprav.Clear(True)

            kladr_dbf = dbf.icDBFFileDBFPY(DEFAULT_KLADR_DBF_FILENAME)
            kladr_dbf.Open()
            i = 0
            while not kladr_dbf.EOF():
                str_code = kladr_dbf.getFieldByName('CODE')
                code = splitKLADRCode(str_code)[:4]
                str_socr = unicode(kladr_dbf.getFieldByName('SOCR'),
                                   DEFAULT_DBF_ENCODE)
                name = unicode(kladr_dbf.getFieldByName('NAME'),
                               DEFAULT_DBF_ENCODE)
                log.info('[%d] %s\t%s\t%s\t%s' %
                         (i, str_code, name, str_socr, code))
                kladr_dbf.Next()

                addKLADRSpravRecord(sprav, code, name, str_socr)

                i += 1

            kladr_dbf.Close()
        except:
            kladr_dbf.Close()
            log.error('Set KLADR data')
            raise

        if is_progress:
            ic_dlg.icCloseProgressDlg()
        else:
            log.debug('Stop set KLADR data')
Пример #5
0
    def onRecordPropertyGridChanged(self, event):
        """
        Обработчик изменения значения поля редактируемой записи
        """
        property = event.GetProperty()
        if property:
            name = property.GetName()
            str_value = property.GetValueAsString()
            log.debug(u'Свойство [%s]. Новое значение <%s>' %
                      (name, str_value))

            field_spc = self.findSpravTabFieldSpc(name)
            value = self.convertPropertyValue(name, str_value,
                                              field_spc['type_val'])
            if self.validate(name, value) == coderror.IC_CTRL_OK:
                self.edit_record[name] = value
            else:
                log.warning(
                    u'Значение <%s> свойства [%s] не прошло валидацию' %
                    (str_value, name))

        event.Skip()
Пример #6
0
    def find_word_in_records(self, find_word, start_row=None, start_col=None):
        """
        Поиск слова в текущем списке записей справочника.
        @param find_word: Искомое слово.
        @param start_row: Начальная строка для начала поиска.
            Если не указана, то берется первая.
        @param start_col: Начальная колонка для начала поиска.
            Если не указана, то берется первая.
        @return: Индекс записи, индекс поля, где найдено слово. 
            Или None если ничего не найдено.
        """
        if start_row is None:
            start_row = 0
        if start_col is None:
            start_col = 0

        find_word = find_word.lower()
        fields = self.get_tab_editable_fields()
        for i_row, row in enumerate(self._list_ctrl_dataset[start_row:]):
            if i_row == 0:
                for i_col, field in enumerate(fields[start_col:]):
                    field_name = field['name']
                    value = ic_str.toUnicode(row[field_name]).lower()
                    if find_word in value:
                        log.debug(u'Найдено соответствие %s <%s> в <%s>' %
                                  (field_name, find_word, value))
                        return start_row + i_row, start_col + i_col
            else:
                for i_col, field in enumerate(fields):
                    field_name = field['name']
                    value = ic_str.toUnicode(row[field_name]).lower()
                    if find_word in value:
                        log.debug(
                            u'Найдено соответствие в поле %s <%s> : <%s>' %
                            (field_name, find_word, value))
                        return start_row + i_row, i_col
        log.warning(u'Не найдено <%s> в списке. Поиск окончен.' % find_word)
        return None
Пример #7
0
def printKLADRData():
    """
    Просмотр данных классификатора.
    """
    global DEFAULT_KLADR_DBF_FILENAME

    if not os.path.exists(DEFAULT_KLADR_DBF_FILENAME):
        DEFAULT_KLADR_DBF_FILENAME = os.path.join(os.path.dirname(os.getcwd()),
                                                  'db', 'KLADR.dbf')
    if not os.path.exists(DEFAULT_KLADR_DBF_FILENAME):
        log.warning('DBF file <%s> not found' % DEFAULT_KLADR_DBF_FILENAME)

    log.debug('--- Print KLADR data ---')
    log.debug('KLADR dbf file name <%s>' % DEFAULT_KLADR_DBF_FILENAME)
    log.debug('Start print KLADR data')

    try:
        # sprav = sprav_manager.getSpravByName('nas_punkts')
        kladr_dbf = dbf.icDBFFileDBFPY(DEFAULT_KLADR_DBF_FILENAME)
        kladr_dbf.Open()
        i = 0
        while not kladr_dbf.EOF():
            str_code = kladr_dbf.getFieldByName('CODE')
            code = splitKLADRCode(str_code)
            str_socr = unicode(kladr_dbf.getFieldByName('SOCR'),
                               DEFAULT_DBF_ENCODE)
            name = unicode(kladr_dbf.getFieldByName('NAME'),
                           DEFAULT_DBF_ENCODE)
            log.info('[%d] %s\t%s\t%s\t%s' %
                     (i, str_code, name, str_socr, code))
            kladr_dbf.Next()
            i += 1

        kladr_dbf.Close()
    except:
        kladr_dbf.Close()
        log.error('Print KLADR data')
        raise

    log.debug('Stop print KLADR data')
Пример #8
0
        from ic.filter_rack  import FilterRack
        from gui.main_window import MainWindow
    except:
        log.critical("Error when importing a main module", exc_info=True)
        sys.exit(ERROR_MAIN_MODULE_IMPORT)

    # Create the application object
    try:
        app = application.Application(sys.argv)
    except:
        log.critical("Error when creating the Application object", exc_info=True)
        sys.exit(ERROR_APPLICATION_INIT)

    # Initialize the engine and load main components
    try:
        log.debug("Initialiazing Engine...")
        engine.init()
        engine.load_component("filter_rack", FilterRack)
        engine.load_component("video_source", VideoSource)
        engine.load_component("frame_stream", FrameStream, 1, 1)
        log.debug("Engine initialized")
    except:
        log.critical("A engine main component could not be initialized.", exc_info=True)
        app.exit(ERROR_ENGINE_INITIALIZATION)

    # Import all the resource modules inside the gui package
    try:
        app.import_resources()
    except:
        log.error("Error when importing resources, some things may not be properly shown")