def post_init(self): self.empty() self.append(self.ui.inflate('vh:main')) self.binder = Binder(self.manager.config, self) self.find('websites').new_item = lambda c: Website.create('New Website') self.find('domains').new_item = lambda c: WebsiteDomain.create('example.com') self.find('ports').new_item = lambda c: WebsitePort.create(80) extensions = BaseExtension.get_classes() def post_ws_bind(object, collection, item, ui): def create_location(): self.binder.update() t = ui.find('create-location-type').value l = WebsiteLocation.create(template=t) l.backend.type = t item.locations.append(l) self.refresh() ui.find('create-location').on('click', create_location) # Extensions if hasattr(item, 'extensions'): for ext in item.extensions: ext._ui_container.delete() item.extensions = [] for ext in extensions: ext = ext.new(self.ui, item, config=item.extension_configs.get(ext.classname, None)) ext._ui_container = self.ui.create('tab', children=[ext], title=ext.name) item.extensions.append(ext) ui.find('tabs').append(ext._ui_container) # Root creator ui.find('root-not-created').visible = not os.path.exists(item.root) def create_root(): try: os.mkdir(item.root) except: pass subprocess.call(['chown', 'www-data', item.root]) self.save() ui.find('create-root-directory').on('click', create_root) ui.find('set-path').on('click', self.save) # Downloader def download(): url = ui.find('download-url').value self.save() tmppath = '/tmp/ajenti-v-download' script = 'wget "%s" -O "%s" ' % (url, tmppath) if url.lower().endswith('.tar.gz') or url.lower().endswith('.tgz'): script += '&& tar xf "%s" -C "%s"' % (tmppath, item.root) elif url.lower().endswith('.zip'): script += '&& unzip "%s" -d "%s"' % (tmppath, item.root) script += ' && chown www-data -R "%s"' % item.root def callback(): self.save() self.activate() if os.path.exists(tmppath): os.unlink(tmppath) self.context.notify('info', _('Download complete')) self.context.launch('terminal', command=script, callback=callback) ui.find('download').on('click', download) def post_ws_update(object, collection, item, ui): for ext in item.extensions: item.extension_configs[ext.classname] = ext.config def ws_delete(ws, collection): for ext in ws.extensions: try: ext.on_destroy() except Exception, e: logging.error(str(e)) collection.remove(ws) self.save()
def on_launch(self, website=None): self.activate() self.website = website self.binder.setup(self.website) self.binder.populate() for ext in BaseExtension.get_classes(): ext.selftest() extensions = BaseExtension.get_classes() def create_location(): self.binder.update() t = self.find('create-location-type').value l = WebsiteLocation.create(self.website, template=t) l.backend.type = t self.website.locations.append(l) self.refresh() self.find('create-location').on('click', create_location) # Extensions for tab in list(self.find('tabs').children): if hasattr(tab, '-is-extension'): tab.delete() self.website.extensions = [] for ext in extensions: ext = ext.new(self.ui, self.website, config=self.website.extension_configs.get( ext.classname, None)) ext.editor_ui = self ext._ui_container = self.ui.create('tab', children=[ext], title=ext.name) setattr(ext._ui_container, '-is-extension', True) self.website.extensions.append(ext) self.find('tabs').append(ext._ui_container) # Root creator self.find('root-not-created').visible = not os.path.exists( self.website.root) def create_root(): self.binder.update() if not os.path.exists(self.website.root): os.makedirs(self.website.root) subprocess.call(['chown', '-R', 'www-data:', self.website.root]) self.save() self.find('create-root-directory').on('click', create_root) self.find('fix-root-permissions').on('click', create_root) self.find('set-path').on('click', self.save) # Downloader def download(): url = self.find('download-url').value self.save() tmppath = '/tmp/ajenti-v-download' script = 'wget "%s" -O "%s" ' % (url, tmppath) if url.lower().endswith( ('tar', '.tar.gz', '.tgz', '.tar.bz2', '.tbz2')): script += '&& tar xf "%s" -C "%s"' % (tmppath, self.website.root) elif url.lower().endswith('.rar'): script += '&& unrar x "%s" "%s"' % (tmppath, self.website.root) elif url.lower().endswith('.zip'): script += '&& unzip "%s" -d "%s"' % (tmppath, self.website.root) script += ' && chown www-data: -R "%s"' % self.website.root script += ' && find "%s" -type d -exec chmod 775 {} ";"' % self.website.root script += ' && find "%s" -type f -exec chmod 644 {} ";"' % self.website.root def callback(): self.save() self.activate() if os.path.exists(tmppath): os.unlink(tmppath) self.context.notify('info', _('Download complete')) self.context.launch('terminal', command=script, callback=callback) self.find('download').on('click', download)
def on_page_load(self): for ext in BaseExtension.get_classes(): ext.selftest() self.refresh()
def on_launch(self, website=None): self.activate() self.website = website self.binder.setup(self.website) self.binder.populate() for ext in BaseExtension.get_classes(): ext.selftest() extensions = BaseExtension.get_classes() def create_location(): self.binder.update() t = self.find('create-location-type').value l = WebsiteLocation.create(self.website, template=t) l.backend.type = t self.website.locations.append(l) self.refresh() self.find('create-location').on('click', create_location) # Extensions for tab in list(self.find('tabs').children): if hasattr(tab, '-is-extension'): tab.delete() self.website.extensions = [] for ext in extensions: ext = ext.new(self.ui, self.website, config=self.website.extension_configs.get(ext.classname, None)) ext._ui_container = self.ui.create('tab', children=[ext], title=ext.name) setattr(ext._ui_container, '-is-extension', True) self.website.extensions.append(ext) self.find('tabs').append(ext._ui_container) # Root creator self.find('root-not-created').visible = not os.path.exists(self.website.root) def create_root(): self.binder.update() try: os.mkdir(self.website.root) except: pass subprocess.call(['chown', 'www-data', self.website.root]) self.save() self.find('create-root-directory').on('click', create_root) self.find('set-path').on('click', self.save) # Downloader def download(): url = self.find('download-url').value self.save() tmppath = '/tmp/ajenti-v-download' script = 'wget "%s" -O "%s" ' % (url, tmppath) if url.lower().endswith('.tar.gz') or url.lower().endswith('.tgz'): script += '&& tar xf "%s" -C "%s"' % (tmppath, self.website.root) elif url.lower().endswith('.zip'): script += '&& unzip "%s" -d "%s"' % (tmppath, self.website.root) script += ' && chown www-data -R "%s"' % self.website.root script += ' && find "%s" -type d -exec chmod 775 {} ";"' % self.website.root script += ' && find "%s" -type f -exec chmod 644 {} ";"' % self.website.root def callback(): self.save() self.activate() if os.path.exists(tmppath): os.unlink(tmppath) self.context.notify('info', _('Download complete')) self.context.launch('terminal', command=script, callback=callback) self.find('download').on('click', download)