Exemplo n.º 1
0
    def __call__(self):
        down = CTK.Downloader(URL)
        message = CTK.Box(content=CTK.RawHTML(' '))
        button = CTK.Button('Download')

        down.bind('error',
                  '$("#%s").html("Error: Could not download");' % (message.id))
        down.bind('finished',
                  '$("#%s").html("OK: Download Finished");' % (message.id))
        button.bind('click', down.JS_to_start())

        page = CTK.Page()
        page += down
        page += button
        page += message

        return page.Render()
Exemplo n.º 2
0
    def __build_GUI__(self):
        app_fetch = CTK.cfg.get_val('%s!app_fetch' % (CFG_PREFIX))
        skip = False

        # Special cases
        if not app_fetch:
            skip = True

        if not app_fetch.startswith('http'):
            skip = True

            # (app_fetch != 'auto')):

        # Skip the phase?
        if skip:
            self += CTK.RawHTML(js=CTK.DruidContent__JS_to_goto_next(self.id))
            return

        # Report
        report = CTK.Box()
        report += CTK.RawHTML(_("Initiating download.."))

        # Download widget
        down = CTK.Downloader('package', app_fetch)
        down.bind('finished', CTK.DruidContent__JS_to_goto_next(self.id))
        down.bind('stopped', "")  ## TODO!!
        down.bind('error', "")  ## TODO!!
        down.bind(
            'update',
            "$('#%s').html('Downloaded: ' + (event.downloaded / 1024).toFixed() + ' Kb');"
            % (report.id))

        self += CTK.RawHTML(
            '<p>%s</p>' %
            (_('The application is being downloaded. Hold on tight!')))
        self += down
        self += report
        self += CTK.RawHTML(js=down.JS_to_start())
Exemplo n.º 3
0
    def __safe_call__(self):
        app_id = CTK.cfg.get_val('tmp!market!install!app!application_id')
        app_name = CTK.cfg.get_val('tmp!market!install!app!application_name')

        # URL Package
        index = Distro.Index()
        pkg = index.get_package(app_id, 'package')

        repo_url = CTK.cfg.get_val('admin!ows!repository', REPO_MAIN)
        url_download = os.path.join(repo_url, app_id, pkg['filename'])
        CTK.cfg['tmp!market!install!download'] = url_download

        # Local storage shortcut
        pkg_filename_full = url_download.split('/')[-1]
        pkg_filename = pkg_filename_full.split('_')[0]
        pkg_revision = 0

        pkg_repo_fp = os.path.join(CHEROKEE_OWS_DIR, "packages", app_id)
        if os.access(pkg_repo_fp, os.X_OK):
            for f in os.listdir(pkg_repo_fp):
                tmp = re.findall('^%s_(\d+)' % (pkg_filename), f)
                if tmp:
                    pkg_revision = max(pkg_revision, int(tmp[0]))

        if pkg_revision > 0:
            pkg_fullpath = os.path.join(
                CHEROKEE_OWS_DIR, "packages", app_id,
                '%s_%d.cpk' % (pkg_filename, pkg_revision))
            CTK.cfg['tmp!market!install!local_package'] = pkg_fullpath

            Install_Log.log("Using local repository package: %s" %
                            (pkg_fullpath))

            box = CTK.Box()
            box += CTK.RawHTML(
                js=CTK.DruidContent__JS_to_goto(box.id, URL_INSTALL_SETUP))
            return box.Render().toStr()

        # Instance a Downloader
        downloader = CTK.Downloader('package', url_download)
        downloader.bind('stopped',
                        CTK.DruidContent__JS_to_close(downloader.id))
        downloader.bind(
            'finished',
            CTK.DruidContent__JS_to_goto(downloader.id, URL_INSTALL_SETUP))
        downloader.bind(
            'error',
            CTK.DruidContent__JS_to_goto(downloader.id,
                                         URL_INSTALL_DOWNLOAD_ERROR))

        stop = CTK.Button(_('Cancel'))
        stop.bind('click', downloader.JS_to_stop())
        buttons = CTK.DruidButtonsPanel()
        buttons += stop

        Install_Log.log("Downloading %s" % (url_download))

        cont = CTK.Container()
        cont += CTK.RawHTML('<h2>%s %s</h2>' % (_("Installing"), app_name))
        cont += CTK.RawHTML(
            '<p>%s</p>' %
            (_('The application is being downloaded. Hold on tight!')))
        cont += downloader
        cont += buttons
        cont += CTK.RawHTML(js=downloader.JS_to_start())

        return cont.Render().toStr()