Beispiel #1
0
 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))
Beispiel #2
0
 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())