def onOkButtonClick(self, event): """ Обработчик кнопки <OK>. """ log.debug(u'Отредактированная запись <%s>' % self.getEditRecord()) self.EndModal(wx.ID_OK) event.Skip()
def onSearchText(self, event): """ Обработчик изменения строки поиска. """ search_txt = event.GetString() log.debug(u'Change search text <%s>' % search_txt) self.not_actual_search = True event.Skip()
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'Ошибка импорта данных справочника типов документов БАЛАНС+')
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')
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()
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
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')
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")