def create(self, parent=None, *arg, **kwarg): """ Создание выбранного объекта. """ if ic_mode.isDebugMode(): log.debug('CREATE Object <%s>' % self.passport()) kernel = ic_user.getKernel() if kernel: if 'context' in kwarg: if isinstance(kwarg['context'], dict): # В случае если передается контекст в виде словаря # необходимо создать объект контекста context = icwidget.icResObjContext(kernel) context.update(kwarg['context']) else: # Контекст создаваемому объекту передается явно context = kwarg['context'] del kwarg['context'] else: # Надо определить контекст context = icwidget.icResObjContext(kernel) return kernel.Create(self.passport(), parent, context=context, *arg, **kwarg)
def property_editor_ctrl(attr, value, propEdt, *arg, **kwarg): """ Стандартная функция контроля. """ if attr in ('table', ): ret = str_to_val_user_property(attr, value, propEdt) if ret: parent = propEdt.GetPropertyGrid().GetView() if not ret[0][0] in (icsqlalchemy.TABLE_TYPE, ): ic_dlg.icWarningBox(u'ОШИБКА', u'Выбранный объект не является таблицей.') return coderror.IC_CTRL_FAILED_IGNORE try: kernel = ic_user.getKernel() res = propEdt.GetResEditor().GetResource() my_db_psp = res['source'] if my_db_psp: my_db_psp = icobject.icObjectPassport(*my_db_psp) res = kernel.getResByPsp(ret) link_db_psp = res['source'] if link_db_psp: link_db_psp = icobject.icObjectPassport(*link_db_psp) if my_db_psp != link_db_psp: ic_dlg.icWarningBox( u'ОШИБКА', u'ВНИМАНИЕ! Связанные таблицы должны находиться в одной БД.' ) return coderror.IC_CTRL_FAILED_IGNORE except: io_prnt.outErr(u'Ошибка контроля вводимого значения %s : %s' % (attr, value)) return ret
def get(self, parent=None, *arg, **kwarg): """ Получить объект. Если не зарегистрирован в ядре, то создать его. """ if ic_mode.isDebugMode(): log.debug('GET Object <%s>' % self.passport()) kernel = ic_user.getKernel() if kernel: # Проверить зарегистрирован ли уже объект в ядре name = self.passport()[0][1] obj = kernel.getObject(name) if obj: # Если уже зарегистрирован, то просто вернуть его return obj if 'context' in kwarg: if isinstance(kwarg['context'], dict): # В случае если передается контекст в виде словаря # необходимо создать объект контекста context = icwidget.icResObjContext(kernel) context.update(kwarg['context']) else: # Контекст создаваемому объекту передается явно context = kwarg['context'] del kwarg['context'] else: # Надо определить контекст context = icwidget.icResObjContext(kernel) return kernel.Create(self.passport(), parent, context=context, *arg, **kwarg)
def __init__(self, parent, Context_=None, ProjectRoot_=None): """ Конструктор интерфейса. """ # Вызываем конструктор базового класса icobjectinterface.icObjectInterface.__init__(self, parent, resource) try: viewer = self.GetNameObj('view_treectrl') if Context_ is None: Context_ = ic_user.getKernel().GetContext() variables = self._contextConvert(Context_) viewer.LoadTree(variables) except: log.error( u'Ошибка инициализации дерева просмотра хранилища переменных.') self._project_root = ProjectRoot_ if self._project_root: try: env_grid = self.GetNameObj('env_grid') env_dict = self._project_root.prj_res_manager.getPrjEnv() env_list = env_dict.items() env_list.sort() log.debug('Environment list: <%s>' % env_list) env_grid.setTable(env_list) except: log.error( u'Ошибка инициализации грида редактирования дополнительных атрибутов проекта.' )
def testDlg(): """ Функция тестиорвания. """ res = ic_user.getKernel()._User.getUsersResource() user_mngr = icUserManager() user_mngr._edit(ic_user.getMainWin(), res)
def refreshPrj(self): """ Обновить дерево проекта. """ kernel = ic_user.getKernel() if kernel: prj_manager = kernel.getProjectResController() prj_manager.refreshPrj()
def onAddButtonMouseClick(self, event): """ Обработчик нажатия на кнопку создания нового пользователя. """ try: # Главное окно и горизонтальное меню наследуются у текущего пользователя default_main_win = ic_user.getKernel().GetAuthUser().resource['main_win'] default_main_menubars = ic_user.getKernel().GetAuthUser().resource['menubars'] default_res = util.icSpcDefStruct(icUser.SPC_IC_USER, {'main_win': default_main_win, 'name': 'new_user', 'local_dir': 'C:\\#WRK\\new_user', 'menubars': default_main_menubars}) user_res = icuserpropertydlg.icUserPropertyDlg(self.getPanel(), default_res, self._manager) if user_res: self.updateData(user_res) if event: event.Skip() except: io_prnt.outErr(u'Ошибка добавления нового пользователя.')
def exit(self): """ Выход из проекта. Вызывается при закрытии IDE. """ # Удалить все блокировки при выходе из редактора log.info('PROJECT EXIT') ic_util.print_defis_logo() kernel = ic_user.getKernel() if kernel: kernel.stop() self.logout() self.delMyLocks()
def _isTableRes(self, TableResName_=None): """ Проверить есть ли ресурсное описание результирующей таблицы. @param TableResName_: Имя ресурсного описание результирующей таблицы. Если None, тогда имя берется из ресурсного описания этого компонента. """ if TableResName_ is None: TableResName_ = self.getTableName() #Открыть проект self._prj_res_ctrl = ic_user.getKernel().getProjectResController() self._prj_res_ctrl.openPrj() return self._prj_res_ctrl.isRes(TableResName_, 'tab')
def create_object(self, psp, parent=None): """ Создает объект. @param psp: Паспорт объекта, которые нобходимо создать. @param parent: Указатель на родительский объект. """ if not psp: return if type(psp) in (type(tuple()), type(list())): psp = icobject.icObjectPassport(*psp) return ic_user.getKernel().Create(psp, parent)
def __init__(self, parent, Context_=None): """ Конструктор интерфейса. """ # Вызываем конструктор базового класса icobjectinterface.icObjectInterface.__init__(self, parent, resource) try: viewer = self.GetNameObj('view_treectrl') if Context_ is None: Context_ = ic_user.getKernel().GetContext() variables = self._contextConvert(Context_) viewer.LoadTree(variables) except: io_prnt.outErr( u'Ошибка инициализации дерева просмотра хранилища переменных.')
def OnSynchroTab(self, event): """ Синхронизация описания таблицы с БД. """ try: node = self._Parent table_psp = ((None, None, None, node.getResFileName() + '.' + node.getResFileExt(), None), ) from ic.engine import ic_user table = ic_user.getKernel().Create(table_psp) ok = table.syncDB() except: ok = False if ok: ic_dlg.icMsgBox( u'Синхронизация таблицы', u'Создана копия таблицы <%s>. Старая таблица удалена.' % self._Parent.name) else: ic_dlg.icMsgBox( u'Синхронизация таблицы', u'Ошибка синхронизации таблицы <%s>' % self._Parent.name)
def getKernel(): """ Текущее ядро. """ from ic.engine import ic_user return ic_user.getKernel()
def login(self, User_=None, Password_=None, prj_filename=None): """ Открыть регистрацию программиста в режиме редактирования. @param User_: Имя пользователя. @param Password_: Пароль. Если имя или пароль не указаны, то выводится окно входа в систему. @param prj_filename: Имя файла проекта, который пытаемся открыть. Необходимо для снятия блокировки пользователя. """ # ВНИМАНИЕ! # Меняется проект, меняется и файл ресурса ограничения доступа # поэтому объект управления правами пользователей необходимо # создавать каждый раз заново при открытии проекта result = False try: result = ic_user.getKernel().Login(User_, Password_) except icexceptions.LoginInvalidException: ic_dlg.icMsgBox( u'Вход в систему', u'Неправильный пользователь или пароль. Доступ запрещен.') except icexceptions.LoginErrorException: if ic_dlg.icAskBox( u'Вход в систему', u'Пользователь уже зарегистрирован в системе. Снять регистрацию пользователя?' ): from ic.engine import icusermanager user_mngr = icusermanager.icUserManager() tree_ctrl = self.getParent() pro_file_name = prj_filename if not os.path.exists(pro_file_name): pro_file_name = ic_dlg.icFileDlg( tree_ctrl, u'Удаление регистрационной информации о пользователе из проекта', _('Project file (*.pro)|*.pro')) if pro_file_name: prj_dir = os.path.dirname(os.path.dirname(pro_file_name)) if os.path.exists(prj_dir): user_mngr.unregisterUser(prj_dir) except icexceptions.LoginDBExclusiveException: ic_dlg.icMsgBox( u'Вход в систему', u'БД открыта в монопольном режиме другим пользователем. Вход в систему запрещен.' ) except icexceptions.LoginWorkTimeException: ic_dlg.icMsgBox( u'Вход в систему', u'Попытка входа в систему в не регламентированное время пользователем. Вход в систему запрещен.' ) except: log.fatal(u'Ошибка регистрации пользователя') if result: from ic.kernel import icsettings icsettings.setProjectSettingsToEnvironment(self.name, ReDefine_=True) if result: self._prj_user = ic_user.getKernel().getUser() else: self._prj_user = None return result
def icGetKernel(): """ Возвращает ссылку на ядро системы. """ return ic_user.getKernel()