Exemple #1
0
    def getObjectsInResByTypes(self, ResFileName_, ObjTypes_, CurObj_=None):
        """
        Поиск объектов в ресурсе по типу.
        @param ResFileName_: Имя файла ресурса.
        @param OBjTypes_: Кортеж типов объектов, например ('icButton',).
        @return: Список кортежей формата:
            [('тип объекта','имя объекта','описание'),...]
        """
        if CurObj_ is None:
            spc = util.readAndEvalFile(ResFileName_, bRefresh=True)
            CurObj_ = spc[spc.keys()[0]]

        find_list = []
        try:
            if CurObj_ is None:
                # Ресурс пустой
                return find_list
            if CurObj_['type'] in ObjTypes_:
                find_list.append(
                    (CurObj_['type'], CurObj_['name'], CurObj_['description']))
            if 'child' in CurObj_ and CurObj_['child']:
                for child in CurObj_['child']:
                    find_grp = self.getObjectsInResByTypes(
                        ResFileName_, ObjTypes_, child)
                    find_list += find_grp
        except:
            log.fatal(
                u'Search error in function getObjectsInResByTypes: (%s, %s, %s)'
                % (ResFileName_, ObjTypes_, CurObj_))
        return find_list
Exemple #2
0
 def getMyRes(self):
     """
     Получить ресурс узла.
     """
     full_res_file_name = self.getFullResFileName()
     res = util.readAndEvalFile(full_res_file_name)
     return res
Exemple #3
0
    def Load(self, UserName_, ResFile_=None):
        """
        Загузить все реквизиты из ресурсного файла.
        @param UserName_: Имя пользователя в ресурсном файле.
        @param ResFile_: Имя ресурсного файла.
        """
        try:
            if ResFile_ is not None:
                self._ResFile = ResFile_
            access_dict = util.readAndEvalFile(self._ResFile, bRefresh=True)

            # Запомнить имя ...
            self._UserName = UserName_

            if UserName_ in access_dict:
                # Собрать данные из словаря по одному пользователю.
                self._UserRequisit = self.CutUserRequisit(
                    access_dict, UserName_, self._UserRequisit)
                if self._UserRequisit != {}:
                    pass
                else:
                    self._UserName = ''
            else:
                self._UserName = ''
                self._UserRequisit = {}

            return self._UserRequisit
        except:
            log.fatal(u'Ошибка загрузки реквизитов пользователя.')
            self._UserName = ''
            self._UserRequisit = {}
Exemple #4
0
 def openPrj(self, PrjFileName_):
     """
     Открыть файл проекта.
     """
     path, name = os.path.split(PrjFileName_)
     ic.set_ini_file(path)
     self.prj_file_name = PrjFileName_
     if ic_file.IsFile(self.prj_file_name) and \
        ic_file.Exists(self.prj_file_name):
         prj = util.readAndEvalFile(self.prj_file_name, bRefresh=True)
         self._prj = self._prepareDataPrj(prj)
Exemple #5
0
 def LoadUser(self, UserName_, ResFile_=DEFAULT_USERS_RES_FILE):
     """
     Загузить данные из ресурсного файла по одному пользователю.
     @param UserName_: Имя пользователя в ресурсном файле.
     @param ResFile_: Имя ресурсного файла.
     """
     try:
         access_dict = util.readAndEvalFile(ResFile_)
         return access_dict[UserName_]
     except:
         log.fatal(u'Load User Requisite Error')
Exemple #6
0
 def _loadResFile(self, ResName_, ResType_):
     """
     Открыть и загрузить файл ресурса.
     @return: Содержимое ресурса или None в случае ошибки.
     """
     res_file_name = os.path.join(self._PrjResDir,
                                  '%s.%s' % (ResName_, ResType_))
     if ic_file.IsFile(res_file_name):
         res_file = util.readAndEvalFile(res_file_name)
         res = res_file[ResName_]
         return copy.deepcopy(res)
     return None
Exemple #7
0
def ConvertRes(old_res_fl, path, ext=None):
    """
    Функция конвертирует и 'режит' ресурсы старых версий в новые.

    @type old_res_fl: C{string}
    @param old_res_fl: Полный путь до ресурса старой версии.
    @type path: C{string}
    @param path: Полный путь до папки, куда положить новые ресурсы.
    """
    pth, fileName = os.path.split(old_res_fl)

    #   Определяем расширение
    if not ext:
        try:
            ext = fileName.split('.')[1]
        except:
            ext = None

    # ---- Проверяем существует ли заданный файл ресурса и директория, куда
    #   будут ложиться файлы сконвертированных ресурсов
    if os.path.isdir(path) and os.path.isfile(old_res_fl):
        res = util.readAndEvalFile(old_res_fl)

        for nm in res:
            fn = path + '/%s.%s' % (nm, ext)

            if not os.path.isfile(fn):
                f = open(fn, 'wb')

                if ext == 'tab':

                    #   Удаляем атрибут 'uuid'
                    if 'scheme' in res[nm]:
                        for fld in res[nm]['scheme']:
                            if 'uuid' in fld:
                                fld.pop('uuid')

                    txt = '{\'%s\': %s}' % (nm, str(res[nm]))
                    txt = txt.replace('scheme', 'child').replace('icField', 'Field').\
                        replace('icLink', 'Link').replace('icDataClass', 'Table')
                else:
                    txt = '{\'%s\': %s}' % (nm, str(res[nm]))

                f.write(txt)
                f.close()
                print('>>> Write new resource file:', fn)
            else:
                print('### File always %s exist!' % fn)

    return True
Exemple #8
0
 def getObjectsByResPattern(self, *ResPattern_):
     """
     Получить список кортежей (тип объекта,имя объекта) по шаблону ресурса.
     @param ResPattern_: Кортеж строковых определений шаблонов ресурса '.*\.tab',...
     @return: Список кортежей (тип объекта,имя объекта) по шаблону ресурса.
     """
     obj_list = []
     res_file_names = self.getResFileNamesByResPattern(ResPattern_)
     prj_dir = os.path.dirname(self.prj_file_name)
     for res_file_name in res_file_names:
         full_res_file_name = prj_dir + '/' + res_file_name
         spc = util.readAndEvalFile(full_res_file_name, bRefresh=True)
         obj = (spc['type'], spc['name'], spc['description'])
         obj_list.append(obj)
     return obj_list
Exemple #9
0
 def GetUserRequisit(self, UserName_=''):
     """
     Получить реквизиты пользователя.
     @param UserName_: Имя пользователя.
         Если UserName_ не определено, тогда возвращается
         описание прав доступа текущего пользователя.
         Если UserName определен, тогда возвращается
         описание прав доступа указанного пользователя.
     @return: Функция возвращает реквизиты текущего пользователя.
     """
     try:
         if UserName_ == '' or UserName_ is None or UserName_ == self._UserName:
             return self._UserRequisit
         else:
             access_dict = util.readAndEvalFile(self._ResFile)
             return self.CutUserRequisit(access_dict, UserName_)
     except:
         log.fatal(
             u'Ошибка опеределения реквизитов доступа к системным ресурсам пользователя'
         )
         return None
Exemple #10
0
    def readRoles(self, PrjDir_=None, isSort_=False):
        """
        Чтение ролей из папки проекта.
        @param PrjDir_: Папка проекта.
        @param isSort_: Сортировать роли по имени?
        """
        if PrjDir_ is None:
            PrjDir_ = ic_user.icGet('PRJ_DIR')
        role_files = ic_file.GetFilesByExt(PrjDir_, '.rol')
        # Отфильтровать pickle файлы
        role_files = [role_file for role_file in role_files if role_file[-8:].lower() != '_pkl.rol']

        result = []
        for role_file in role_files:
            role_data = util.readAndEvalFile(role_file)
            role_spc = role_data[role_data.keys()[0]]
            role_name = role_spc['name']
            role_description = role_spc.get('description', u'') or u''
            result.append((role_name, role_description))
        if isSort_:
            result.sort()
        return result
Exemple #11
0
 def getUsersResource(self):
     """
     Полностью структура ресурса файла пользователей.
     """
     return util.readAndEvalFile(self.getUserResFileName())