def __call__(self, environ, start_response): request = Request(environ) lang = request.values.get('_lang') if lang is None: lang = (request.accept_languages.best or 'en').split('-')[0].lower() if not has_language(lang): lang = 'en' request.translations = load_core_translations(lang) request.translations.language = lang response = None if request.path == '/': view = request.values.get('_current', 'start') if request.values.get('_startsetup'): response = self.start_setup(request) elif view in self.views: handler = self.views[view] if handler is not None and \ request.values.get('_next'): ctx = handler(request) if ctx is not None: response = self.handle_view(request, view, ctx) if response is None: if request.values.get('_next'): view = self.next[view] elif request.values.get('_prev'): view = self.prev[view] response = self.handle_view(request, view) if response is None: response = redirect('') return response(environ, start_response)