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()
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())
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()