Exemple #1
0
 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)
Exemple #2
0
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
Exemple #3
0
    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'Ошибка инициализации грида редактирования дополнительных атрибутов проекта.'
                )
Exemple #5
0
def testDlg():
    """
    Функция тестиорвания.
    """
    res = ic_user.getKernel()._User.getUsersResource()

    user_mngr = icUserManager()
    user_mngr._edit(ic_user.getMainWin(), res)
Exemple #6
0
 def refreshPrj(self):
     """
     Обновить дерево проекта.
     """
     kernel = ic_user.getKernel()
     if kernel:
         prj_manager = kernel.getProjectResController()
         prj_manager.refreshPrj()
Exemple #7
0
 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'Ошибка добавления нового пользователя.')
Exemple #8
0
    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()
Exemple #9
0
    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')
Exemple #10
0
 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)
Exemple #11
0
    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'Ошибка инициализации дерева просмотра хранилища переменных.')
Exemple #12
0
    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)
Exemple #13
0
def getKernel():
    """
    Текущее ядро.
    """
    from ic.engine import ic_user
    return ic_user.getKernel()
Exemple #14
0
    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
Exemple #15
0
def icGetKernel():
    """
    Возвращает ссылку на ядро системы.
    """
    return ic_user.getKernel()