def set_language(self): locale = self.getHeader('Accept-Language') locale = locale.replace('-', '_') MODULE.process('Setting language to %r' % (locale,)) if not change_locale(locale): locale = 'C' self.site.handler.set_language(locale)
def __umcp_respond(self, response): MODULE.process('Responding to %r; status=%r' % (response.id, response.status)) request = self.requests.pop(response.id) request.setResponseCode(response.status) request.setHeader('X-UMC-Message', json.dumps(response.message or '')) if response.mimetype != 'application/json': request.write(response.body) else: request.write(json.dumps(response.result)) request.finish()
def render(self, resource): message = None result = '' method = self.getHeader('X-UMC-Method') _ = self.getSession(Translation)._ # TODO: this runs in the module process so it can be a global try: self.site.initialize(self) return Request.render(self, resource) except UMC_OptionSanitizeError as exc: self.setResponseCode(409) # Conflict # HTTP FIXME message = exc.message result = exc.body except (UMC_OptionTypeError, UMC_OptionMissing, UMC_CommandError) as exc: self.setResponseCode(400) message = { UMC_OptionTypeError: _('An option passed to %s has the wrong type: %s') % (method, exc), UMC_OptionMissing: _('One or more options to %s are missing: %s') % (method, exc), UMC_CommandError: _('The command has failed: %s') % (exc, ) }.get(exc.__class__) # TODO: subclasses? except BaseException as exc: self.setResponseCode(MODULE_ERR_COMMAND_FAILED) # HTTP FIXME message = _("Execution of command '%(command)s' has failed:\n\n%(text)s") % { 'command': self.path, 'text': unicode(traceback.format_exc()) } if isinstance(message, unicode): message = message.encode('UTF-8') MODULE.process(message) message = json.dumps(message) result = json.dumps(result) self.setHeader('X-UMC-Message', message) self.setHeader('Content-Length', b'%d' % len(result)) self.write(result) self.finish()