def __call__(self): # Clean up del (CTK.cfg['tmp!market!maintenance']) # The cache is no longer valid Invalidate_Cache() # Close dialog box = CTK.Box() box += CTK.RawHTML(js=CTK.DruidContent__JS_to_close(box.id)) return box.Render().toStr()
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()