def next_step(self): # We already sent the details, but may still be on the same step. # Also, if the user didn't choose to "register now", respect his # decision if not self.model.register_now or self.wizard.link_request_done: return FinishInstallationStep(self.wizard) webapi = WebService() webapi.link_registration(self.model.name, self.model.email, self.model.phone, callback=lambda r: schedule_in_main_thread( self._on_response_done, r), errback=lambda e: schedule_in_main_thread( self._on_response_error, e)) self.send_progress.show() self.send_progress.set_text(_('Sending...')) self.send_progress.set_pulse_step(0.05) self.wizard.next_button.set_sensitive(False) GLib.timeout_add(50, self._pulse) # Cancel the request after 30 seconds without a reply GLib.timeout_add(30000, self._cancel_request) # Stay on the same step while sending the details return self
def next_step(self): # We already sent the details, but may still be on the same step. if self.wizard.tef_request_done: return StoqAdminPasswordStep(self.wizard, self.previous) webapi = WebService() response = webapi.tef_request(self.model.name, self.model.email, self.model.phone) response.addCallback(self._on_response_done) response.addErrback(self._on_response_error) # FIXME: This is a hack, remove it when we can avoid # calling dialog.run() if not reactor.running: reactor.run() self.send_progress.show() self.send_progress.set_text(_('Sending...')) self.send_progress.set_pulse_step(0.05) self.details_table.set_sensitive(False) self.wizard.next_button.set_sensitive(False) glib.timeout_add(50, self._pulse) # Cancel the request after 30 seconds without a reply glib.timeout_add(30000, self._cancel_request) # Stay on the same step while sending the details return self
def validate_confirm(self): if not self._can_submit_feedback(): return False webapi = WebService() d = webapi.feedback(self.application_screen, self.model.email, self.model.feedback) d.addCallback(self._on_feedback_reply) self.disable_ok() return False
def download_plugin(self, plugin_name): """Download a plugin from webservice :param plugin_name: the name of the plugin to download :returns: a deferred """ from stoqlib.lib.webservice import WebService default_store = get_default_store() existing_egg = default_store.find(PluginEgg, plugin_name=plugin_name).one() md5sum = existing_egg and existing_egg.egg_md5sum webapi = WebService() r = webapi.download_plugin(plugin_name, md5sum=md5sum) try: response = r.get_response() except Exception as e: return False, _("Failed to do the request: %s" % (e, )) code = response.status_code if code == 204: msg = _("No update needed. The plugin is already up to date.") log.info(msg) return True, msg if code != 200: return_messages = { 400: _("Plugin not available for this stoq version"), 401: _("The instance is not authorized to download the plugin"), 404: _("Plugin does not exist"), 405: _("This instance has not acquired the specified plugin"), } msg = return_messages.get(code, str(code)) log.warning(msg) return False, msg content = response.content md5sum = unicode(hashlib.md5(content).hexdigest()) with new_store() as store: existing_egg = store.find(PluginEgg, plugin_name=plugin_name).one() if existing_egg is not None: existing_egg.egg_content = content existing_egg.egg_md5sum = md5sum else: PluginEgg( store=store, plugin_name=plugin_name, egg_md5sum=md5sum, egg_content=content, ) self._reload() return True, _("Plugin download successful")
def _download_details(self): log.debug('Downloading new version information') webapi = WebService() webapi.version(self.store, stoq.version, callback=self._on_response_done)
def __init__(self): gobject.GObject.__init__(self) self._api = WebService() self._report = collect_report() self._count = 0
def __init__(self): ResourceStatus.__init__(self) self._webservice = WebService() self._server = ServerProxy()
def download_plugin(self, plugin_name, channel=None): """Download a plugin from webservice :param plugin_name: the name of the plugin to download :param channel: the channel the plugin belongs :returns: a deferred """ from stoqlib.lib.webservice import WebService default_store = get_default_store() existing_egg = default_store.find(PluginEgg, plugin_name=plugin_name).one() md5sum = existing_egg and existing_egg.egg_md5sum webapi = WebService() r = webapi.download_plugin(plugin_name, md5sum=md5sum, channel=channel) try: response = r.get_response() except Exception as e: return False, _("Failed to do the request: %s" % (e, )) code = response.status_code if code == 204: msg = _("No update needed. The plugin is already up to date.") log.info(msg) return True, msg if code != 200: return_messages = { 400: _("Plugin not available for this stoq version"), 401: _("The instance is not authorized to download the plugin"), 404: _("Plugin does not exist"), 405: _("This instance has not acquired the specified plugin"), } msg = return_messages.get(code, str(code)) log.warning(msg) return False, msg try: with io.BytesIO() as f: f.write(response.content) with ZipFile(f) as egg: if egg.testzip() is not None: raise BadZipfile md5sum = hashlib.md5(f.getvalue()).hexdigest() with new_store() as store: existing_egg = store.find(PluginEgg, plugin_name=plugin_name).one() if existing_egg is not None: existing_egg.egg_content = f.getvalue() existing_egg.egg_md5sum = md5sum else: PluginEgg( store=store, plugin_name=plugin_name, egg_md5sum=md5sum, egg_content=f.getvalue(), ) except BadZipfile: return False, _("The downloaded plugin is corrupted") self._reload() return True, _("Plugin download successful")
def _setup_stoq_link(self): from stoqlib.domain.events import SaleStatusChangedEvent from stoqlib.lib.webservice import WebService self._api = WebService() SaleStatusChangedEvent.connect(self._update_stoq_link)
def _download_details(self): log.debug('Downloading new version information') api = WebService() response = api.version(self.store, stoq.version) response.addCallback(self._on_response_done)