def request(self, name): self.response.headers['Content-Type'] = 'text/html' # Загрузка модели model = getattr(__import__('models.' + name, fromlist=['models']), name) title = model.__doc__ # Загрузка формы ModelForm = getattr(__import__('forms.' + name, fromlist=['forms']), 'ModelForm') # Загрузка представления try: show = getattr(view, name) except: show = view.model # Входной запрос query = self.request.POST or self.request.GET form = ModelForm(query) if not query: # Выводим пустую форму. Никаких расчётов, просто запрос view. self.response.out.write(show(name, title, form=form)) else: # Проводим валидацию запроса. if form.validate(): # Ошибок нет. Вызываем модель. try: output = aggregator.aggregator(model, form.data) except DeadlineExceededError: logging.error('Deadline exceeded error.') self.response.set_status(500) self.response.out.write(view.internal_error()) else: query_pairs = ('%s=%s' % (item, value) for item, value in query.items()) query_string = '&'.join(query_pairs) self.response.out.write(show(name, title, form=form, output=output, query=query_string)) else: self.response.out.write(show(name, title, form=form))
def _handle_exception(self, exception, debug_mode): logging.error(exception) self.response.clear() self.response.set_status(500) self.response.out.write(view.internal_error())