示例#1
0
 def clearStorageDir(self, StorageDir_=None):
     """
     Полное очищение главной папки.
     """
     if StorageDir_ is None:
         StorageDir_ = self._NodeDir
     if ic_file.Exists(StorageDir_):
         try:
             ic_file.RemoveTreeDir(StorageDir_, True)
             ic_file.MakeDirs(StorageDir_)
         except:
             io_prnt.outErr(
                 u'Ошибка очистки папки объектного хранилища <%s>' %
                 StorageDir_)
示例#2
0
    def _makePrjInstall(self):
        """
        Создание пакета прикладной системы.
        """
        try:
            prj_name = self.getPrjName()
            temp_dir = os.environ['TMP']+'/'+prj_name
            if os.path.exists(temp_dir):
                io_prnt.outLog(u'PUBLIC WIZARD DELETE TEMP DIR <%s>' % temp_dir)
                ic_file.RemoveTreeDir(temp_dir)
                io_prnt.outLog(u'PUBLIC WIZARD DELETE TEMP DIR OK')

            os.makedirs(temp_dir)
            # Скопировать необходимые папки и модули
            # во временную папку
            prj_dir = os.path.dirname(self._prj_dir)
            main_dir = os.path.dirname(prj_dir)
            # Пакет ic
            io_prnt.outLog(u'PUBLIC WIZARD COPY ic PACKAGE <%s>' % main_dir)
            ic_tmp_dir = temp_dir+'/ic'
            ic_file.CopyDir(main_dir+'/ic', temp_dir)
            
            # Условие удаления исходников из ic
            ic_file.delAllFilesFilter(ic_tmp_dir, '*.bak', '*.pyc')

            # Пакет прикладной системы
            io_prnt.outLog(u'PUBLIC WIZARD COPY %s PACKAGE %s' % (prj_name, prj_dir))
            usr_tmp_dir = temp_dir+'/'+os.path.basename(prj_dir)
            ic_file.CopyDir(prj_dir, temp_dir)
            
            #Условие удаления исходников из ic
            ic_file.delAllFilesFilter(usr_tmp_dir, '*.bak', '*.pyc', '*.lck', '/log/*.ini', '/log/*.log')
            
            ic_file.icCopyFile(main_dir+'/readme.ru',
                               temp_dir+'/readme.ru')
            ic_file.icCopyFile(main_dir+'/license.ru',
                               temp_dir+'/license.ru')

            if ic_util.isOSWindowsPlatform():
                return self._makeArchiveRAR(main_dir, temp_dir, prj_name)
            else:
                return self._makeArchiveZIP(temp_dir, prj_name)
            
        except:
            io_prnt.outErr(u'Ошибка архивации прикладной системы')
        return None
示例#3
0
    def _makePrjInstall(self):
        """
        Создание пакета прикладной системы.
        """
        try:
            prj_name = self.getPrjName()
            temp_dir = 'c:/temp/'+prj_name
            if os.path.exists(temp_dir):
                io_prnt.outLog(u'INSTALL WIZARD DELETE TEMP DIR <%s>' % temp_dir)
                ic_file.RemoveTreeDir(temp_dir)
                io_prnt.outLog(u'INSTALL WIZARD DELETE TEMP DIR OK')

            os.makedirs(temp_dir)
            # Скопировать необходимые папки и модули
            # во временную папку
            prj_dir = os.path.dirname(self._prj_dir)
            main_dir = os.path.dirname(prj_dir)
            # Пакет ic
            io_prnt.outLog(u'INSTALL WIZARD COPY ic PACKAGE <%s>' % main_dir)
            ic_tmp_dir = temp_dir+'/ic'
            ic_file.CopyTreeDir(main_dir+'/ic', ic_tmp_dir)
            
            # Условие удаления исходников из ic
            if not self.getOpenSource():
                ic_file.delAllFilesFilter(ic_tmp_dir, '*.py', '*.bak')

            # Пакет прикладной системы
            io_prnt.outLog(u'INSTALL WIZARD COPY %s PACKAGE %s' % (prj_name, prj_dir))
            usr_tmp_dir = temp_dir+'/'+os.path.basename(prj_dir)
            ic_file.CopyTreeDir(prj_dir,
                                temp_dir+'/'+os.path.basename(prj_dir))

            # Все откомпелироавать нехрен
            ic_file.CompileDir(temp_dir)
            
            # Заархивировать пакет прикладной системы
            rar_util = main_dir+'/ic/db/postgresql/Rar.exe'
            arch_file_name = temp_dir+'/'+prj_name+'.exe'
            arch_cmd = '%s a -r -s -ep1 -sfx -df %s %s/*.*' % (rar_util,
                                                               arch_file_name, temp_dir)
            io_prnt.outLog(u'INSTALL WIZARD Команда архивации: <%s>' % arch_cmd)
            ic_exec.icSysCmd(arch_cmd)
            return arch_file_name
        except:
            io_prnt.outErr(u'Ошибка архивации прикладной системы')
示例#4
0
    def delete(self):
        """
        Удалить пакет.
        """
        # Затем удалить из дерева
        prj_node.PrjNode.delete(self)
        # И в конце удалить папку пакета, если она есть
        package = self.getPath()
        # Выгрузить из редакторов
        self.getRoot().getParent().ide.CloseFile(package + '/__init__.py')

        # Удалить все блокировки
        self.getRoot().unlockAllPyFilesInIDE()

        if ic_file.Exists(package):
            ic_file.RemoveTreeDir(package, 1)
        # Для синхронизации дерева проекта
        self.getRoot().save()
示例#5
0
 def unLinkSubSys(self, SubSysName_):
     """
     Отключить импортированную подсистему.
     @param SubSysName_: Имя подсистемы.
     """
     sub_sys_path = self.getSubSysPath(SubSysName_)
     prj_dir = os.path.dirname(
         os.path.dirname(self.getRoot().getPrjFileName()))
     del_dir = prj_dir + '/' + os.path.basename(
         os.path.dirname(sub_sys_path))
     io_prnt.outLog(u'UNLINK SUBSYTEM %s %s %s' %
                    (SubSysName_, del_dir, sub_sys_path))
     # Сначала удалить из описания в фале *.pro
     ok = self.getRoot().prj_res_manager.delImpSubSys(SubSysName_)
     # Затем удалить папку подсистемы
     if ok:
         ic_file.RemoveTreeDir(del_dir, True)
         self.delChildByName(SubSysName_)
示例#6
0
    def __delitem__(self, key):
        if not self.isOpen():
            self.Open()

        if issubclass(self._StorageDB[str(key)].__class__, icFileStorage):
            # Проверка на удаление файла
            self._StorageDB[str(key)].closeFile()
            file_name = self._StorageDB[str(key)].getFileName()
            if ic_file.Exists(file_name) and ic_file.IsFile(file_name):
                ic_file.Remove(file_name)
        elif issubclass(self._StorageDB[str(key)].__class__, icDirStorage):
            # Проверка на удаление директории
            self._StorageDB[str(key)].closeAllFiles()
            dir_name = self._StorageDB[str(key)].getNodeDir()
            if ic_file.Exists(dir_name) and ic_file.IsDir(dir_name):
                ic_file.RemoveTreeDir(dir_name, 1)
        if str(key) in self._StorageDB:
            del self._StorageDB[str(key)]
示例#7
0
def smb_download_file_rename(download_urls=None,
                             filename=None,
                             dst_filename=None,
                             re_write=True):
    """
    Найти и загрузить файл с переименованием.
    @param download_urls: Список путей поиска файла.
        Пример:
        ('smb://xhermit@SAFE/Backup/daily.0/Nas_pvz/smb/sys_bucks/Nas_pvz/NSI/',
         'smb://xhermit@TELEMETRIA/share/install/', ...
         )
        Параметр может задаваться строкой. В таком случае считаем что URL один.
    @param filename: Относительное имя файла.
        Например:
        '/2017/FDOC/RC001.DCM'
    @param dst_filename: Новое полное наименование для сохранения файла.
    @param re_write: Перезаписать локальный файл, если он уже существует?
    @return: True - Произошла загрузка, False - ничего не загружено.
    """
    # Сначала просто загрузим файл
    tmp_path = os.tmpnam()
    result = smb_download_file(download_urls, filename, tmp_path, re_write)

    if result:
        new_filename = None
        try:
            # Успешно загрузили
            # Перименование файла
            new_filename = os.path.join(tmp_path, filename)
            ic_file.icCopyFile(new_filename, dst_filename, re_write)

            # После копирования удаляем временную директорию
            ic_file.RemoveTreeDir(tmp_path, True)

            return True
        except:
            log.fatal(u'Ошибка переименования файла <%s> -> <%s>' %
                      (new_filename, dst_filename))

    return False
示例#8
0
    def makeInstallPackage(self):
        """
        Создание инсталяционного пакета.
        """
        install_dir = ic_dlg.icDirDlg(None,
                                      u'Выберите инсталяционную папку',
                                      os.getcwd())
        if os.path.isdir(install_dir):
            try:
                packages = self.getPackages()
                ic_dlg.icOpenProgressDlg(None,
                                         u'Создание инсталяционного пакета проекта',
                                         u'Создание инсталяционного пакета проекта',
                                         0, len(packages)+5)
                i = 0
                # Создать папку пакетов
                os.makedirs(install_dir+'/package')

                # Скопировать иконку
                i += 1
                ic_dlg.icUpdateProgressDlg(i, u'Копирование иконки')
                ico_file = self.getPrjIcon()
                if os.path.exists(ico_file):
                    ic_file.icCopyFile(ico_file,
                                       install_dir+'/'+os.path.basename(ico_file))
                else:
                    io_prnt.outLog(u'Файл иконки <%s> не существует' % ico_file)
                
                # Создание пакета прикладной системы
                i += 1
                ic_dlg.icUpdateProgressDlg(i, u'Создание пакета прикладной системы')
                arch_file = self._makePrjInstall()
                if os.path.exists(arch_file):
                    ic_file.icCopyFile(arch_file,
                                       install_dir+'/package/'+os.path.basename(arch_file))
                    # Удалить временную папку
                    ic_file.RemoveTreeDir(os.path.dirname(arch_file), 1)
                    
                # Скопировать пакеты
                for package in packages:
                    i += 1
                    ic_dlg.icUpdateProgressDlg(i, u'Копирование пакета <%s>' % package)
                    if os.path.exists(package):
                        ic_file.icCopyFile(package,
                                           install_dir+'/package/'+os.path.basename(package))
                    else:
                        io_prnt.outLog(u'Файл пакета <%s> не существует' % package)

                # Сохранить скрипт инсталятора
                i += 1
                ic_dlg.icUpdateProgressDlg(i, u'Создание скрипта инсталятора')
                script = self.installScript()
                try:
                    nsi_file = None
                    nsi_file = open(install_dir+'\setup.nsi', 'w')
                    nsi_file.write(script)
                    nsi_file.close()
                except:
                    io_prnt.outErr(u'Ошибка сохранения скрипта инсталятора')
                    if nsi_file:
                        nsi_file.close()

                # Компилирование скрипта инсталятора
                i += 1
                ic_dlg.icUpdateProgressDlg(i, u'Компилирование скрипта инсталятора')
                nsis_cmd = '%s %s/setup.nsi' % (self.getInstallMaker(), install_dir)
                io_prnt.outLog(u'Компиляция скрипта инсталятора '+nsis_cmd)
                ic_exec.icSysCmd(nsis_cmd)

                ic_dlg.icCloseProgressDlg()
            except:
                io_prnt.outErr(u'Ошибка создания инсталяционного пакета')
                ic_dlg.icCloseProgressDlg()